首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在kustomize清单中创建变量

在kustomize清单中创建变量
EN

Stack Overflow用户
提问于 2021-09-28 15:33:38
回答 1查看 5.5K关注 0票数 5

我认为这是一个常见的用例,但我真的很难找到一个解决方案:

我想在我们部署的Kustomize补丁中重用一个变量。具体来说,我们使用提交ID来引用映像标记(用例A)和与部署相关的k8s作业(用例B)。

我们使用一个设置,对于每个ArgoCD应用程序,我们都有一个/base/文件夹和/overlays/[environment-name],这个基础是用kustomization.yaml修补的。

用例A:

一个非常简单的用法--在/overlays/[environment-name]中,我们有一个kustomization.yaml,它使用:

代码语言:javascript
复制
images:
- name: our-aws-repo-url
  newName: our-aws-repo-url
  newTag: commit-id

工作像一个魅力,因为我们可以重复使用这两个部署本身,以及它的相关乔布斯,所有与一个提交参考。

用例B:

问题是:

例如,我们使用N个作业来进行0停机部署的迁移,其中我们运行运行迁移的alembic容器,并且我们有一个waitforit initContainer,它侦听作业是否完成,也就是迁移成功的时候,以便进行部署。

现在的问题是,我需要触摸一个服务覆盖中的4个文件,以便在任何地方修补id (我们使用它来识别作业):

  • deployment.yaml是这样的:
代码语言:javascript
复制
- image: groundnuty/k8s-wait-for:v1.4
  imagePullPolicy: IfNotPresent
  args: 
   - "job"
   - "job-commit-id"
  • 为新的部署/潜在迁移更改作业的重新触发器的job.yaml本身:
代码语言:javascript
复制
apiVersion: batch/v1
kind: Job
metadata:
  name: job-commit-id
  • kustomization.yaml,如用例A中所述。

相反,我认为应该做到的是:

  1. commit-id中定义变量kustomization.yaml和
  2. 对于用例A&B,请执行以下操作:
代码语言:javascript
复制
apiVersion: batch/v1
kind: Job
metadata:
  name: job-${commit-id}
代码语言:javascript
复制
- image: groundnuty/k8s-wait-for:v1.4
  imagePullPolicy: IfNotPresent
  args: 
   - "job"
   - "job-${commit-id}"
代码语言:javascript
复制
images:
- name: our-aws-repo-url
  newName: our-aws-repo-url
  newTag: ${commit-id}

目标:当开发人员为发行版做PRs时,他们应该只对提交ID进行一次引用,以防止输入等等(也更容易检查,而不是在N个地方检查提交ID )

警告:我相信还有另一种方法可以代替乔布斯进行迁移,但这通常是一件很常见的事情:如何在kustomize中重用变量。

我知道我可以在kustomize中引用ENV变量,但是我希望在清单中重用一个变量。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-28 16:50:52

但是我想在清单中重用一个变量。

这不是你通常使用Kustomize的方式。这是一件好事,事情是声明性和明确的工作时,库斯托米泽。

当开发人员为发行版执行PRs时,他们应该只对提交ID进行一次引用,以防止键入等等(也更容易检查,而不是在N个地方检查提交ID )。

是和不是。

在我看来,四个地方的变化不应被视为一个问题。有人类的辛勤工作来更新四个地方是问题

人类劳动的解决方案通常是自动化。通过在自动管道中使用yq (例如Jenkins -或外壳脚本),您可以将清单更新自动化以接受单个参数--这可以在git "commit id“可用之后直接为每个构建自动完成。该管道需要运行四个yq-commands来更新四个Yaml字段。例如见分配操作github操作-管道示例。不需要其他变量。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69364581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档