如何将 gitlab ci/cd 变量传递给 kubernetes(AKS) 部署.yaml

Fak*_*eer 6 gitlab kubernetes

我有一个 node.js (express) 项目已签入 gitlab ,它正在 Kubernetes 中运行。我知道我们可以在deployment.yaml文件中设置Kubernetes(在Azure上,aks)中的环境变量。

我如何将 gitlab ci/cd 环境变量传递给 kubernetes(aks) (deployment.yaml 文件)?

Jan*_*usz 9

您可以开发自己的舵图。从长远来看,这将会带来回报。

其他方法:有一种简单且通用的方法是将${MY_VARIABLE}占位符放入deployment.yaml 文件中。接下来,在管道运行期间,在部署作业中使用envsubst命令将 vars 替换为相应的值并部署文件。

部署文件示例:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment-${MY_VARIABLE}
  labels:
    app: nginx
spec:
  replicas: 3
(...)
Run Code Online (Sandbox Code Playgroud)

工作示例:

(...)
deploy:
  stage: deploy
  script:
    - envsubst < deployment.yaml > deployment-${CI_JOB_NAME}.yaml
    - kubectl apply -f deployment-${CI_JOB_NAME}.yaml
Run Code Online (Sandbox Code Playgroud)


nig*_*old 0

我将为您提供一个简单的解决方案,它可能是也可能不是“解决方案”。

要执行您想要的操作,您只需在启动部署之前在 cd 期间将 gitlab 环境变量添加到机密中即可。这将允许您在部署中使用 env Secret。

如果你想这样做,你需要考虑当你想更新它们以实现幂等性时如何删除它们。