0

我想在修补任何部署配置时动态传递参数

oc 补丁 dc/action-msa -p "$(cat msa-patch.yml)" --param service_account=msa-service-account

  spec:
     template:
       spec:
       serviceAccountName: ${service_account}
       restartPolicy: "Always"

       initContainers:
         - name: vault-init
           image: ${init_container_image}
           imagePullPolicy: Always
       containers:
        - name: ${SERVICE_NAME}-java-service
          image: ${main_container_image}

在使用 openshift oc 进行修补时,是否有任何选项或方法可以动态传递 service_account、init_container_image 和 service_name?

4

1 回答 1

0

您需要此解决方案的模板层,例如KustomizeHELM等。或者您可以在部署 yaml 文件之前使用环境文件作为源,如下所示

您的deployment.yaml如下所示:

  spec:
     template:
       spec:
       serviceAccountName: {{service_account}}
       restartPolicy: "Always"

       initContainers:
         - name: vault-init
           image: {{init_container_image}}
           imagePullPolicy: Always
       containers:
        - name: {{SERVICE_NAME}}
          image: {{main_container_image}}

你的env.file看起来像这样:

service_account="some_account"
init_container_image="some_image"
SERVICE_NAME="service_name"

然后运行

oc patch dc/action-msa -p \
"$(source env.file && cat deployment.yml  | \
sed "s/{{service_account}}/service_account/g"| \
sed "s/{{init_container_image}}/init_container_image/g"| \
sed "s/{{SERVICE_NAME}}/SERVICE_NAME/g")" --param service_account=msa-service-account

希望能帮助到你

于 2019-05-14T11:52:33.990 回答