如何将gitlab ci/cd变量传递给kubernetes(AKS)deployment.yaml
我有一个node.js(express)项目签入了gitlab,它正在Kubernetes中运行。我知道我们可以在deployment.yaml文件中的Kubernetes(在Azure、aks上)中设置env变量如何将gitlab ci/cd变量传递给kubernetes(AKS)deployment.yaml,kubernetes,gitlab,Kubernetes,Gitlab,我有一个node.js(express)项目签入了gitlab,它正在Kubernetes中运行。我知道我们可以在deployment.yaml文件中的Kubernetes(在Azure、aks上)中设置env变量 如何将gitlab ci/cd env变量传递给kubernetes(aks)(deployment.yaml文件)?我将为您提供一个简单的解决方案,它可能是“解决方案”,也可能不是“解决方案” 要想做您想做的事情,您只需在启动部署之前在cd中秘密添加gitlab env变量。这将允
如何将gitlab ci/cd env变量传递给kubernetes(aks)(deployment.yaml文件)?我将为您提供一个简单的解决方案,它可能是“解决方案”,也可能不是“解决方案” 要想做您想做的事情,您只需在启动部署之前在cd中秘密添加gitlab env变量。这将允许您在部署中使用env secret
如果您想这样做,您需要考虑在更新它们以获得幂等性时如何删除它们。另一个解决方案是将要部署的对象创建为图表。这将允许您拥有特定的变量(称为值),您可以在模板中使用这些变量,并在安装/升级时进行覆盖 有很多文章都是关于用这样的东西进行设置的
- 下面是一个专门围绕CI/CD上下文的示例:
- 另一个特别围绕GitLab的主题是:
${MY_VARIABLE}
占位符放入deployment.yaml文件中。接下来,在管道运行期间,在部署作业中使用envsubt
命令用相应的值替换vars并部署文件
部署文件示例:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment-${MY_VARIABLE}
labels:
app: nginx
spec:
replicas: 3
(...)
示例工作:
(...)
deploy:
stage: deploy
script:
- envsubst < deployment.yaml > deployment-${CI_JOB_NAME}.yaml
- kubectl apply -f deployment-${CI_JOB_NAME}.yaml
(…)
部署:
阶段:部署
脚本:
-envsubtdeployment-${CI_JOB_NAME}.yaml
-kubectl apply-f部署-${CI_JOB_NAME}.yaml
供未来读者阅读。另一种方法是使用模板文件并使用envsubt
从模板生成deployment.yaml
模板文件:
# template/deployment.tmpl
---
apiVersion: apps/v1
kind: deployment
metadata:
name: strapi-deployment
namespace: strapi
labels:
app: strapi
# deployment specifications
spec:
replicas: 1
selector:
matchLabels:
app: strapi
serviceName: strapi
# pod specifications
template:
metadata:
labels:
app: strapi
# pod blueprints
spec:
containers:
- name: strapi-container
image: registry.gitlab.com/repo-name/image:${IMAGE_TAG}
imagePullPolicy: Always
imagePullSecrets:
- name: gitlab-registry-secret
deploy
stage in.gitlab ci.yml
(...)
deploy:
stage: deploy
script:
# deploy resources in k8s cluster
- envsubst < strapi-deployment.tmpl > strapi-deployment.yaml
- kubectl apply -f strapi-deployment.yaml
(…)
部署:
阶段:部署
脚本:
#在k8s群集中部署资源
-envsubtstrapi-deployment.yaml
-kubectl apply-f strapi-deployment.yaml
正如这里定义的那样,
image:registry.gitlab.com/repo name/image:${image\u TAG}
,image\u TAG
是在gitlab中定义的环境变量envsubt
将通过strapi-deployment.tmpl
替换其中定义的任何变量,并生成strapi-deployment.yaml
文件。这是一种方法。但我希望我们能在gitlab环境变量中指定它并以某种方式访问它们。这将是最好的方法,以防我们以后要更改它们。这也是一种方法。我现在还没有使用帮助图表。