@posthumecaver 的 Helm 图表与skaffold.yaml
阻止 Skaffold 配置图像的图表之间存在一些不匹配。我将在这里总结这些发现,以帮助那些偶然发现这篇文章的人。
@posthumecaver 正在使用 Skaffold 的 Helm 支持。这要求skaffold.yaml
和 Helm 图表使用公共键来引用图像。Helm 中使用了三种方法来引用图像:
完全限定名称(默认)
Skaffold 将配置 Helm 为完全标记的图像参考设置一个键。
skaffold.yaml
设置:
build:
artifacts:
- image: gcr.io/my-project/my-image
deploy:
helm:
releases:
- name: my-chart
chartPath: helm
artifactOverrides:
img: gcr.io/my-project/my-image
图表模板:
image: "{{.Values.img}}"
(values.yaml
请注意,Skaffold 会覆盖此值):
img: gcr.io/other-project/other-image:latest
Skaffold 将调用
helm install <chart> <chart-path> --set-string img=gcr.io/my-project/my-image:generatedTag@sha256:digest
拆分存储库和标签
Skaffold 可以配置为为 Helm 提供单独的存储库和标签。中使用的键用作artifactOverrides
产生两个键{key}.repository
和的基础部分{key}.tag
。
skaffold.yaml
设置:
build:
artifacts:
- image: gcr.io/my-project/my-image
deploy:
helm:
releases:
- name: my-chart
chartPath: helm
artifactOverrides:
img: gcr.io/my-project/my-image
imageStrategy:
helm: {}
图表模板:
image: "{{.Values.img.repository}}:{{.Values.img.tag}}"
(values.yaml
请注意,Skaffold 会覆盖这些值):
img:
repository: gcr.io/other-project/other-image
tag: latest
Skaffold 将调用
helm install <chart> <chart-path> --set-string img.repository=gcr.io/my-project/my-image,img.tag=generatedTag@sha256:digest
拆分注册表、存储库和标签
Skaffold 也可以配置为为 Helm 提供单独的存储库和标签。中使用的键用作artifactOverrides
生成三个键的基础部分:{key}.registry
、{key}.repository
和{key}.tag
。
skaffold.yaml
设置:
build:
artifacts:
- image: gcr.io/my-project/my-image
deploy:
helm:
releases:
- name: my-chart
chartPath: helm
artifactOverrides:
img: gcr.io/my-project/my-image
imageStrategy:
helm:
explicitRegistry: true
图表模板:
image: "{{.Values.img.registry}}/{{.Values.img.repository}}:{{.Values.img.tag}}"
(values.yaml
请注意,Skaffold 会覆盖这些值):
img:
registry: gcr.io
repository: other-project/other-image
tag: latest
Skaffold 将调用
helm install <chart> <chart-path> --set-string img.registry=gcr.io,img.repository=my-project/my-image,img.tag=generatedTag@sha256:digest