标签: kubernetes-helm

Helm _helpers.tpl:在其他模板定义中调用已定义的模板

Helm _helpers.tpl?

Helm允许在Kubernetes的资源文件中使用Go模板.

名为的文件_helpers.tpl通常用于使用以下语法定义Go模板助手:

{{- define "yourFnName" -}}
{{- printf "%s-%s" .Values.name .Values.version | trunc 63 -}}
{{- end -}}
Run Code Online (Sandbox Code Playgroud)

然后您可以在*.yaml资源文件中使用它,如下所示:

{{ template "yourFnName" . }}
Run Code Online (Sandbox Code Playgroud)

问题

如何在其他帮助程序定义中使用我定义的帮助程序?

例如,如果我有一个应用程序名称的帮助程序,并希望在定义中使用它来确定入口主机名?

我尝试过几种不同的方式在其他定义中调用助手.鉴于此基本辅助功能:

{{- define "host" -}}
{{- printf "%.example.com" <Somehow get result of "name" helper here> -}}
{{- end -}}
Run Code Online (Sandbox Code Playgroud)

我尝试过以下方法:

{{- printf "%.example.com" {{ template "name" . }} -}}
{{- printf "%.example.com" {{- template "name" . -}} -}}
{{- printf "%.example.com" ( template "name" . …
Run Code Online (Sandbox Code Playgroud)

templates go go-templates kubernetes kubernetes-helm

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

Helm Chart:如何首先安装依赖项?

我一直在开发一个原型图表,该图表依赖于在其中一个子图表中定义的一些自定义资源定义。

更具体地说,我试图在我的 helm 图表中创建strimzi-kafka-operator中定义的资源,并希望首先显式安装依赖项。我遵循helm 文档并将以下内容添加到我的 Chart.yaml 中

dependencies:
- name: strimzi-kafka-operator
  version: 0.16.2
  repository: https://strimzi.io/charts/
Run Code Online (Sandbox Code Playgroud)

我跑:

dependencies:
- name: strimzi-kafka-operator
  version: 0.16.2
  repository: https://strimzi.io/charts/
Run Code Online (Sandbox Code Playgroud)

这表明它正在尝试在我的依赖项之前部署我的图表。首先安装依赖项然后再安装父图表的正确方法是什么?

(作为参考,这是我直接在 GitHub 上与 Strimzi 一起打开的问题,他们告诉我他们不确定如何使用他们的 helm 作为依赖项: https ://github.com/strimzi/strimzi-kafka-operator/issues /2552 )

kubernetes-helm

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

如何查看新的 Helm Chart 版本中发生了什么变化

我想看看与之前的版本相比,对 helm 图表所做的更改 - 运行时helm list我看到有 xx 修订 - 有什么方法可以看到差异吗?我知道回滚helm rollback <RELEASE> 0,但只是想知道发生了什么变化

kubernetes kubernetes-helm

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

伞形图中的Helm Subchart执行顺序

我有一个包含多个子图表的总体图表,我只是想确保subchart1在subchart2之前运行,等等。我们如何定义子图表的执行顺序?

似乎挂钩权重仅适用于声明它们的图表。

kubernetes kubernetes-helm

12
推荐指数
3
解决办法
6440
查看次数

如何检查 Helm 安装失败的原因

我想用 来调出动物园管理员helm install .,但它说Error: release <servicename> failed: services "zookeeper" already exists. 如果我也执行,我什么也看不到helm list。在安装服务之前,我检查了使用helm list它是否已经存在,它没有。

如何查看失败原因?

kubernetes kubernetes-helm

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

使用 Helm 管理多个环境的最佳实践

我不清楚管理具有多个环境的应用程序的最佳实践是什么,共享模板文件但每个环境具有不同的变量。例如,我们部署了一个开发、登台和生产环境。他们使用相同的 helm 模板,但我对每个环境都有不同的变量。

当前文件结构:

helm/
  ??? templates/
  ?   ??? _helpers.tpl
  ?   ??? deploy.yaml
  ?   ??? ingress.yaml
  ?   ??? service.yaml
  ?   ??? managed-certs.yaml
  ?   ??? NOTES.txt
  ??? Chart.yaml
  ??? values-production.yaml
  ??? values-staging.yaml
  ??? values-develop.yaml

Run Code Online (Sandbox Code Playgroud)

现在每个环境都有两个不同的值文件,我将以下内容传递给 helm helm install . --values=values-production.yaml

但是,我们无法正确管理上述版本控制。

我找不到任何关于管理应用程序多个环境的最佳实践的可靠文档。我遇到了helmfile这似乎解决了这个问题,但他们的文档不清楚。管理 kubernetes 的生态系统令人困惑,任何帮助表示赞赏。

google-kubernetes-engine kubernetes-helm helmfile

12
推荐指数
1
解决办法
7816
查看次数

使用 helm 时创建的额外秘密

我创建了一个舵图,它具有secrets.yaml

apiVersion: v1
kind: Secret
type: Opaque
metadata: 
 name: appdbpassword
stringData:
  password: password@1
Run Code Online (Sandbox Code Playgroud)

我的豆荚是:

apiVersion: v1
kind: Pod
metadata:
  name: expense-pod-sample-1
spec:
  containers:
    - name: expense-container-sample-1
      image: exm:1
      command: [ "/bin/sh", "-c", "--" ]
      args: [ "while true; do sleep 30; done;" ]
      envFrom:
      - secretRef:
              name: appdbpassword
Run Code Online (Sandbox Code Playgroud)

每当我运行kubectl get secrets命令时,我都会得到以下秘密:

name                                     Type                 Data    Age
appdbpassword                            Opaque               1      41m
sh.helm.release.v1.myhelm-1572515128.v1  helm.sh/release.v1   1      41m
Run Code Online (Sandbox Code Playgroud)

为什么我会得到那个额外的秘密?我在这里错过了什么吗?

kubernetes kubernetes-helm kubernetes-secrets

12
推荐指数
2
解决办法
3954
查看次数

错误:验证:使用 helm install Traefik 时需要 chart.metadata

我现在正在使用 helm( version.BuildInfo{Version:"v3.0.2", GitCommit:"19e47ee3283ae98139d98460de796c1be1e3975f", GitTreeState:"clean", GoVersion:"go1.13.5"})安装 Traefik ,请按照以下文档操作

git clone https://github.com/containous/traefik-helm-chart
helm install ./traefik-helm-chart
Run Code Online (Sandbox Code Playgroud)

给我这个错误:

Error: must either provide a name or specify --generate-name
Run Code Online (Sandbox Code Playgroud)

我正在使用这样的命令:

helm install ./traefik-helm-chart --generate-name
Run Code Online (Sandbox Code Playgroud)

并给出以下提示:

Error: validation: chart.metadata is required
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能解决这个问题?

kubernetes-helm

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

气流调度器无法使用 kubernetes 执行器启动

我正在使用 https://github.com/helm/charts/tree/master/stable/airflow helm chart 并构建 v1.10.8puckle/docker-airflow图像并在其上安装 kubernetes 并在舵图中使用该图像,但我不断收到

  File "/usr/local/bin/airflow", line 37, in <module>
    args.func(args)
  File "/usr/local/lib/python3.7/site-packages/airflow/bin/cli.py", line 1140, in initdb
    db.initdb(settings.RBAC)
  File "/usr/local/lib/python3.7/site-packages/airflow/utils/db.py", line 332, in initdb
    dagbag = models.DagBag()
  File "/usr/local/lib/python3.7/site-packages/airflow/models/dagbag.py", line 95, in __init__
    executor = get_default_executor()
  File "/usr/local/lib/python3.7/site-packages/airflow/executors/__init__.py", line 48, in get_default_executor
    DEFAULT_EXECUTOR = _get_executor(executor_name)
  File "/usr/local/lib/python3.7/site-packages/airflow/executors/__init__.py", line 87, in _get_executor
    return KubernetesExecutor()
  File "/usr/local/lib/python3.7/site-packages/airflow/contrib/executors/kubernetes_executor.py", line 702, in __init__
    self.kube_config = KubeConfig()
  File "/usr/local/lib/python3.7/site-packages/airflow/contrib/executors/kubernetes_executor.py", line 283, in __init__
    self.kube_client_request_args = json.loads(kube_client_request_args)
  File "/usr/local/lib/python3.7/json/__init__.py", line …
Run Code Online (Sandbox Code Playgroud)

kubernetes airflow kubernetes-helm airflow-scheduler

12
推荐指数
1
解决办法
1418
查看次数

卸载:发布未加载:新:发布:未找到,使用 helm 3 部署的图表

我的本地主机中安装了 helm 2 和 helm 3。我使用 helm2 创建了一个新图表

sanket@Admins-MacBook-Pro poc % helm create new
Creating new
Run Code Online (Sandbox Code Playgroud)

使用 helm 版本 2 创建了一个图表“新”。现在我已经使用 helm 版本 3 部署了图表

sanket@Admins-MacBook-Pro poc % helm3 install new new --namespace test 
NAME: new
LAST DEPLOYED: Thu Apr 23 17:56:03 2020
NAMESPACE: test
STATUS: deployed
REVISION: 1
NOTES:
1. Get the application URL by running these commands:
  export POD_NAME=$(kubectl get pods --namespace test -l "app.kubernetes.io/name=new,app.kubernetes.io/instance=new" -o jsonpath="{.items[0].metadata.name}")
  echo "Visit http://127.0.0.1:8080 to use your application"
  kubectl port-forward $POD_NAME 8080:80 …
Run Code Online (Sandbox Code Playgroud)

kubernetes kubernetes-helm

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