小编Jam*_*aac的帖子

我可以为Helm提供多个values.yaml文件

我可以在Helm图表中有多个values.yaml文件吗?像mychart/templates/internalValues.yaml,mychart/templates/customSettings.yaml等?

访问values.yaml文件中的属性可以通过{{.Values.property1}}来完成.我如何引用这些自定义values.yaml文件中的属性?

kubernetes kubernetes-helm

20
推荐指数
3
解决办法
1万
查看次数

我们可以在Helm yaml文件中使用OR运算符吗?

我可以在Helm yamls中做这样的事情:

{{- if eq .Values.isCar true }} OR {{- if eq .Values.isBus true }}
# do something
{{- end }}
Run Code Online (Sandbox Code Playgroud)

我知道如果检查我们可以做一个.但是我如何检查多种情况?是否有一些运算符等效于OR和AND?

kubernetes-helm

13
推荐指数
1
解决办法
2万
查看次数

通过Helm钩子运行脚本

我已经为我的Helm图表编写了升级前和升级后挂钩,当我进行掌舵升级时会调用它.我的升级前挂钩应该将一些信息写入共享持久存储卷中的文件.不知何故,我没有看到这个文件被创建,虽然我能够看到钩子被调用.

这是我的升级前钩子的样子:

apiVersion: batch/v1
kind: Job
metadata:
  name: "{{.Release.Name}}-preupgrade"
  labels:
    heritage: {{.Release.Service | quote }}
    release: {{.Release.Name | quote }}
    chart: "{{.Chart.Name}}-{{.Chart.Version}}"
  annotations:
    "helm.sh/hook": pre-upgrade
    "helm.sh/hook-weight": "0"
    "helm.sh/hook-delete-policy": hook-succeeded
spec:
  template:
    metadata:
      name: "{{.Release.Name}}"
      labels:
        heritage: {{.Release.Service | quote }}
        release: {{.Release.Name | quote }}
        chart: "{{.Chart.Name}}-{{.Chart.Version}}"
  spec:
    restartPolicy: Never
    containers:
    - name: pre-upgrade-job
      image: {{ .Values.registry }}/{{ .Values.imageRepo }}:{{ .Values.imageTag }}
      imagePullPolicy: {{ .Values.imagePullPolicy }}
      volumeMounts:
      - mountPath: {{ .Values.pvc.shared_storage_path }}/{{ template "fullname" . }}
        name: shared-pvc
        command: ['/bin/sh …
Run Code Online (Sandbox Code Playgroud)

kubernetes kubernetes-helm

5
推荐指数
1
解决办法
6376
查看次数

在Helm图表中编写自定义函数

我的Helm部署yaml文件中包含以下代码段:

{{if or .Values.ha.enabled .Values.checkpointing.enable_checkpointing .Values.enable_upgrade_hook}}
{{if eq .Values.pvc.file_prefix "file://"}}
- mountPath: {{ .Values.pvc.shared_storage_path }}/{{ template "fullname" . }}
  name: shared-pvc
{{end}}
{{end}}
Run Code Online (Sandbox Code Playgroud)

我想将所有这些if检查放入一个自定义函数中,然后在此处调用该函数。使用该函数的新代码片段应如下所示:

{{if eq enable_mount_volume "true"}}
- mountPath: {{ .Values.pvc.shared_storage_path }}/{{ template "fullname" . }}
  name: shared-pvc
{{end}}
Run Code Online (Sandbox Code Playgroud)

我将如何实现?我可能有多个部署yaml文件,每个文件都执行此条件检查,如果在每个yaml文件中进行检查,则仅调用一个函数而不是放置逻辑上繁琐的文件将很有用(只是为了减少出错的可能性)。

另外,我也不想在每个模板文件中都定义此功能,因为这样做会达到目的。

kubernetes kubernetes-helm

5
推荐指数
2
解决办法
3143
查看次数

流解码Base64数据

我有一些大的base64编码数据(存储在hadoop文件系统中的snappy文件中).这个数据最初是gzip压缩的文本数据.我需要能够读取这些编码数据的块,对其进行解码,然后将其刷新到GZIPOutputStream.

有关如何执行此操作而不是将整个base64数据加载到数组并调用Base64.decodeBase64(byte [])的任何想法?

如果我将字符读到'\ r \n'分隔符并逐行解码,我是对的吗?例如:

for (int i = 0; i < byteData.length; i++) {
    if (byteData[i] == CARRIAGE_RETURN || byteData[i] == NEWLINE) {
       if (i < byteData.length - 1 && byteData[i + 1] == NEWLINE)
            i += 2;
       else 
            i += 1;

       byteBuffer.put(Base64.decodeBase64(record));

       byteCounter = 0;
       record = new byte[8192];
    } else {
        record[byteCounter++] = byteData[i];
    }
}
Run Code Online (Sandbox Code Playgroud)

遗憾的是,这种方法并没有给出任何人类可读的输出.理想情况下,我想流式读取,解码和流出数据.

现在,我正在尝试输入一个输入流,然后复制到一个gzipout

byteBuffer.get(bufferBytes);

InputStream inputStream = new ByteArrayInputStream(bufferBytes);
inputStream = new GZIPInputStream(inputStream);
IOUtils.copy(inputStream , gzipOutputStream);
Run Code Online (Sandbox Code Playgroud)

它给了我一个java.io.IOException:Corrupt GZIP预告片

java base64 hadoop gzipinputstream

4
推荐指数
1
解决办法
8826
查看次数