Ari*_*ian 8 kubernetes kustomize
我正在使用这个例子:
\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 base\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 kustomization.yaml\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 pod.yaml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 dev\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 kustomization.yaml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 kustomization.yaml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 production\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 kustomization.yaml\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 staging\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 kustomization.yaml\nRun Code Online (Sandbox Code Playgroud)\n并在kustomization.yaml根目录中的文件中:
resources:\n- ./dev\n- ./staging\n- ./production\nRun Code Online (Sandbox Code Playgroud)\n我也有图像转换器代码dev, staging, production:
images:\n- name: my-app\n newName: gcr.io/my-platform/my-app\n\nRun Code Online (Sandbox Code Playgroud)\n为了构建单个部署清单,我使用:
\n(cd dev && kustomize edit set image my-app=gcr.io/my-platform/my-app:0.0.2 && kustomize build .)\nRun Code Online (Sandbox Code Playgroud)\n这很简单!
\n要为所有覆盖(开发、暂存、生产)构建部署清单,我使用:
\n(kustomize edit set image my-app=gcr.io/my-platform/my-app:0.0.2 && kustomize build .)\nRun Code Online (Sandbox Code Playgroud)\n它使用kustomization.yaml包含所有资源(开发、暂存、生产)的根目录。
它确实有效,并且最终版本打印在控制台上,但没有图像标签。
\n看来kusotmize edit set image唯一更新的是kustomizaion.yaml当前目录的
是否可以采取任何措施以简单有效的方式处理这种情况,以便最终输出也包含所有部署的图像标签?
\n\nmoo*_*tte 10
我花了一些时间才意识到这里发生了什么。我将逐步解释会发生什么以及它应该如何工作。
\n首先我重新创建了相同的结构:
\n$ tree\n.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 base\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 kustomization.yaml\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 pod.yaml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 dev\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 kustomization.yaml\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 kustomization.yaml\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 staging\n \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 kustomization.yaml\nRun Code Online (Sandbox Code Playgroud)\n当您运行此命令进行单一部署时:
\n(cd dev && kustomize edit set image my-app=gcr.io/my-platform/my-app:0.0.2 && kustomize build .)\nRun Code Online (Sandbox Code Playgroud)\n您将工作目录更改为dev,手动覆盖图像gcr.io/my-platform/my-app并添加标签0.0.2,然后渲染部署。
之前添加的内容transformer code会被上面的命令覆盖。您可以删除transformer code,运行上面的命令并获得相同的结果。运行命令后,您会发现您的命令dev/kustomization.yaml如下所示:
resources:\n- ./../base\nnamePrefix: dev-\napiVersion: kustomize.config.k8s.io/v1beta1\nkind: Kustomization\nimages:\n- name: my-app\n newName: gcr.io/my-platform/my-app\n newTag: 0.0.2\nRun Code Online (Sandbox Code Playgroud)\n那么当您从主目录运行此命令时会发生什么:
\n(kustomize edit set image my-app=gcr.io/my-platform/my-app:0.0.2 && kustomize build .)\nRun Code Online (Sandbox Code Playgroud)\nkustomize首先转到transformation code位于 中的覆盖并执行操作overlays/kustomization.yaml。当这部分完成后,图像名称不是, my-app而是gcr.io/my-platform/my-app。
此时kustomize edit命令尝试查找具有名称的图像my-app但无法这样做,因此不应用tag.
kustomize edit如果在主工作目录中运行,则需要使用转换后的图像名称:
$ kustomize edit set image gcr.io/my-platform/my-app=*:0.0.4 && kustomize build .\n\napiVersion: v1\nkind: Pod\nmetadata:\n labels:\n app: my-app\n name: dev-myapp-pod\nspec:\n containers:\n - image: gcr.io/my-platform/my-app:0.0.4\n name: my-app\n---\napiVersion: v1\nkind: Pod\nmetadata:\n labels:\n app: my-app\n name: stag-myapp-pod\nspec:\n containers:\n - image: gcr.io/my-platform/my-app:0.0.4\n name: my-app\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
16247 次 |
| 最近记录: |