在Kubernetes部署yaml中使用变量(非env)

gwbalxhn  于 2023-03-12  发布在  Kubernetes
关注(0)|答案(1)|浏览(314)

在Kubernetes yaml部署中,是否可以使用变量为kubectl命令设置名称、标签、主机名等字段?
像一个.env文件与docker-compose允许使用变量来定义映像,端口,卷...或值.yaml为Helm安装。
例如:
deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: $deploy_name
spec:
  selector:
    matchLabels:
      app: $app
      customer: $customer
      env: $env

kube.env

deploy_name=prod-app
app=mysql
customer=customer1
env=prod

kubectl命令:
kubectl apply -f deployment.yaml --values kube.env
我只找到了一种为容器设置env变量的方法,但没有为yaml部署的其余部分找到这种方法。

bvjxkvbb

bvjxkvbb1#

据我所知,他们不是在部署中设置动态变量机制的方法,但您可以通过两种方法实现这一点
1)(推荐且易于使用)使用Helm(Helm允许您在一个地方设置所有值)
您可以随时参考文档:https://helm.sh
2)使用脚本

#!/bin/sh

   # load the env variable
   if [ ! -f kube.env ]
   then
    export $(cat kube.env | xargs)
   fi

   # create the deployment and set exported variable 
   kubectl apply -f - << EOF
   apiVersion: apps/v1
   kind: Deployment
   metadata:
   name: ${deploy_name}
   .
   .
   .
   EOF

相关问题