标签: helm3

如何使用 cdktf 加载本地文件以进行 helm 发布?

我想在使用 cdktf 创建 helm 图表时引用本地 yaml 文件。

\n

我有以下 cdktf 配置:

\n
{\n  "language": "typescript",\n  "app": "npx ts-node main.ts",\n  "projectId": "...",\n  "terraformProviders": [\n    "hashicorp/aws@~> 3.42",\n    "hashicorp/kubernetes@ ~> 2.7.0",\n    "hashicorp/http@ ~> 2.1.0",\n    "hashicorp/tls@ ~> 3.1.0",\n    "hashicorp/helm@ ~> 2.4.1",\n    "hashicorp/random@ ~> 3.1.0",\n    "gavinbunney/kubectl@ ~> 1.14.0"\n  ],\n  "terraformModules": [\n    {\n      "name": "secrets-store-csi",\n      "source": "app.terraform.io/goldsky/secrets-store-csi/aws",\n      "version": "0.1.5"\n    }\n  ],\n  "context": {\n    "excludeStackIdFromLogicalIds": "true",\n    "allowSepCharsInLogicalIds": "true"\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

请注意npx ts-node main.ts作为应用程序。

\n

在 main.ts 中我有以下 helm 版本

\n
    new helm.Release(this, "datadog-agent", {\n      chart: …
Run Code Online (Sandbox Code Playgroud)

terraform helm3 terraform-cdk

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

Helm 如果安装在 Openshift 上则创建条件资源

我正在尝试基于 /SCC 创建 Helm 图表条件模板,SecurityContextConstraint无论我是否安装在 Openshift 集群上。因为 SCC 是 Openshift 特定的资源。

因此,在helm install <release-name> <chart> -n <namespace>Openshift 集群上执行 ) 时,应该会自动创建 SCC。

后备选项是使用这样的东西:

{{ if .Values.isOpenshift }}
apiVersion: security.openshift.io/v1
kind: SecurityContextConstraints
...
{{ end }}
Run Code Online (Sandbox Code Playgroud)

security-context openshift kubernetes-helm helm3

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

如何覆盖 Helm Chart 中的表/映射

我有values.yaml一个

ingress:
  enabled: false 

volume:
  hostPath:
    path: /tmp
    type: DirectoryOrCreate 
Run Code Online (Sandbox Code Playgroud)

我有一个overlay.yaml改变 的值的values.yaml

ingress:
  enabled: true 

volume:
  persistentVolumeClaim:
    claimName: test
Run Code Online (Sandbox Code Playgroud)

对于入口,它的工作正如我怀疑的那样,因为 的值enabled将更改为 true。然而,对于卷来说,表似乎是相互添加而不是被覆盖。例如,我会得到类似的东西:

volume: 
  persistentVolumeClaim:
    claimName: test
  hostPath:
    path: /tmp
    type: DirectoryOrCreate 
Run Code Online (Sandbox Code Playgroud)

我想在values.yaml 中指定默认卷类型及其配置(例如路径),但其他人可以自由地通过覆盖层更改此设置。但是,我现在所拥有的“添加”卷类型而不是覆盖它。有办法做到这一点吗?

kubernetes-helm helm3

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

Helm 将单个字符串传递给模板

关于使用字典将多个变量传递到 Helm 中的模板,有多个 stackoverflow 答案。

但是,我想将单个变量传递给模板。例如,我想定义如下模板,接收输入(确切地说是一个字符串)。

{{- define "blahblah" $var }}
  {{- if .Values.nameOverride }}
  name: {{ .Values.nameOverride }}-$var
  {{- else }}
  name: $var
  {{- end }}
{{- end }}
Run Code Online (Sandbox Code Playgroud)

因此,像下面这样写,我希望结果是name: myname-whateveror name:whatever(假设.Values.nameOverride被定义为“myname”)

{{- include "blahblah" "whatever" }}
Run Code Online (Sandbox Code Playgroud)

如何让 helm 知道哪个是模板的输入变量?谢谢你!

go-templates kubernetes-helm helm3

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

如何使用 helm 提供程序覆盖 terraform 中的默认图表值?

我们在 Terraform 中使用 helm 提供程序来配置 istio 入口网关,该网关在后端使用此图表

下面是提供相同内容的 terraform 代码片段。请帮助覆盖默认图表值以创建内部负载均衡器而不是默认的外部负载均衡器。我们知道可以通过更新清单文件中的注释来完成。但不确定如何在 terraform 代码片段中执行相同的操作?

terraform {
  required_providers {
    helm = {
      source = "hashicorp/helm"
      version = ">= 1.0.0"
    }
  }
}

provider "helm" {
  kubernetes {
    config_path = "${var.kubeconfig_file}"
  }
}

resource "helm_release" "istio-ingress" {
  repository        = local.istio_charts_url
  chart             = "gateway"
  name              = "istio-ingress-gateway"
  namespace         = kubernetes_namespace.istio_system.metadata.0.name
  version           = ">= 1.12.1"
  timeout           = 500
  cleanup_on_fail   = true
  force_update      = false
  depends_on        = [helm_release.istiod]
}
Run Code Online (Sandbox Code Playgroud)

kubernetes terraform kubernetes-helm istio helm3

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

在 helm 模板中面临“调用 ge 时出错:用于比较的不兼容类型”

我正在尝试使用以下逻辑根据 hpa 最小副本值设置 pdb 值

spec:
{{ if (ge .Values.autoscaling.minReplicas 5) }}
  minAvailable: 80
{{ else if (eq .Values.autoscaling.minReplicas 4) }}
  minAvailable: 75
{{ else if (eq .Values.autoscaling.minReplicas 3) }}
  minAvailable: 65
{{ else if (eq .Values.autoscaling.minReplicas 2) }}
  minAvailable: 50
{{ else }}
  minAvailable: 0
Run Code Online (Sandbox Code Playgroud)

但是当我执行空运行时我遇到了这个错误

Error: INSTALLATION FAILED: template: service/templates/pdb.yaml:11:7: executing "service/templates/pdb.yaml" at <ge .Values.autoscaling.minReplicas 5>: error calling ge: incompatible types for comparison
helm.go:84: [debug] template: service/templates/pdb.yaml:11:7: executing "ffservice/templates/pdb.yaml" at <ge .Values.autoscaling.minReplicas 5>: error calling ge: incompatible types …
Run Code Online (Sandbox Code Playgroud)

go kubernetes-helm helm3

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

Helm 无法解析本地依赖项存储库文件路径

我正在尝试为不同的环境制作一张 Helm Chart。在许多教程中,这种方案应该有效,但我的结构不会从依赖项存储库中读取值。Helm 只是忽略它。

我有以下文件夹结构

helm
   - charts
       - core-web
           - Chart.yaml
           - values.yaml
           - templates
       - frontend
           - Chart.yaml
           - values.yaml
           - templates
   - prod
       - Chart.yaml
       - values.yaml
   - dev
       - Chart.yaml
       - values.yaml
Run Code Online (Sandbox Code Playgroud)

产品/Chart.yaml

apiVersion: v1
name: test
version: 1.0.0

dependencies:
  - name: core-web
    version: "1.37.0"
    repository: file://../charts/core-web/
  - name: frontend
    version: "1.6.0"
    repository: "file://../charts/frontend"
Run Code Online (Sandbox Code Playgroud)

从 helm 文件夹中我执行以下命令

helm install ./prod --dry-run --generate-name -n sandbox -f prod/values.yaml
Error: INSTALLATION FAILED: found in Chart.yaml, but missing in charts/ …
Run Code Online (Sandbox Code Playgroud)

kubernetes kubernetes-helm helm3

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

在同一 AKS 集群中安装多个 nginx 入口控制器实例

我有一个全新的(非常空的)AKS 集群。我想使用 helm 在不同的命名空间和不同的入口类中安装 nginx 入口控制器的两个实例。

我从第一个开始:

helm install ingress1 ingress-nginx/ingress-nginx --namespace namespace1 --set controller.ingressClass=class1

NAME: ingress1
LAST DEPLOYED: Fri Sep 24 20:46:28 2021
NAMESPACE: namespace1
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
The ingress-nginx controller has been installed.
It may take a few minutes for the LoadBalancer IP to be available.
Run Code Online (Sandbox Code Playgroud)

都好

现在我选择第二个:

helm install ingress2 ingress-nginx/ingress-nginx --namespace namespace2 --set controller.ingressClass=class2

Error: rendered manifests contain a resource that already exists. Unable to continue with install: IngressClass "nginx" in …
Run Code Online (Sandbox Code Playgroud)

nginx kubernetes nginx-ingress helm3

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

如何在 helm3 图表中设置字段应用程序版本?

我使用 helm 在 k8s 中升级了 spring 应用程序。我有默认图表并使用命令

upgrade my-app my-app-chart --atomic --set image.tag=123
Run Code Online (Sandbox Code Playgroud)

在 dir my-app-chart 中我有文件 Chart.yaml

apiVersion: v1
name: my-app-chart
description: A Helm chart for spring application my-app-chart
version: "1"
appVersion: "{{ .Values.image.tag }}"
Run Code Online (Sandbox Code Playgroud)

我希望 helm 评估字段 appVersion 并且在 helm 历史记录中我看到 123,但现在我看到

C:\git\ci\top-ci-example-project-multi-module>helm history -n top-ci my-app
REVISION        UPDATED                         STATUS          CHART                  APP VERSION             DESCRIPTION

150             Wed Nov  3 00:30:09 2021        superseded      my-app-chart-0.1.0     0.1.0                   Rollback to 148

151             Wed Nov  3 00:38:38 2021        failed          my-app-chart-1         {{ .Values.image.tag }} Upgrade …
Run Code Online (Sandbox Code Playgroud)

kubernetes-helm helm3

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

我在 helm 中安装 prometheus Operator 时收到此错误

此图表已弃用错误:安装失败:无法安装 CRD crds/crd-alertmanager.yaml:无法识别“”:版本“apiextensions.k8s.io/v1beta1”中的类型“CustomResourceDefinition”不匹配

kubernetes-helm prometheus-alertmanager helm3

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

有没有办法指定在 helm 图表中使用哪个值文件

在我们的舵图中,每个环境都有一个值文件,例如

app-helm-chart:
  dev-values.yaml
  test-values.yaml
  Chart.yaml
  templates
    deployment.yaml
    service.yaml
    ingress.yaml
  Readme.md
Run Code Online (Sandbox Code Playgroud)

我们已经使用 helm 包打包了 helm 图表,然后尝试从我们的 helm 存储库安装它。

有没有办法指定使用包内的 dev-values 文件作为安装命令的一部分?

如果可能的话,尝试将值和模板全部打包和版本化到一个地方。

谢谢

kubernetes kubernetes-helm helm3

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