我想在使用 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}\nRun Code Online (Sandbox Code Playgroud)\n请注意npx ts-node main.ts作为应用程序。
在 main.ts 中我有以下 helm 版本
\n new helm.Release(this, "datadog-agent", {\n chart: …Run Code Online (Sandbox Code Playgroud) 我正在尝试基于 /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) 我有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 中指定默认卷类型及其配置(例如路径),但其他人可以自由地通过覆盖层更改此设置。但是,我现在所拥有的“添加”卷类型而不是覆盖它。有办法做到这一点吗?
关于使用字典将多个变量传递到 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 知道哪个是模板的输入变量?谢谢你!
我们在 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) 我正在尝试使用以下逻辑根据 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) 我正在尝试为不同的环境制作一张 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) 我有一个全新的(非常空的)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) 我使用 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) 此图表已弃用错误:安装失败:无法安装 CRD crds/crd-alertmanager.yaml:无法识别“”:版本“apiextensions.k8s.io/v1beta1”中的类型“CustomResourceDefinition”不匹配
在我们的舵图中,每个环境都有一个值文件,例如
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 文件作为安装命令的一部分?
如果可能的话,尝试将值和模板全部打包和版本化到一个地方。
谢谢