Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 如何使用kubectl修补部署中的容器环境变量?_Json_Kubernetes_Kubectl_Jsonpath - Fatal编程技术网

Json 如何使用kubectl修补部署中的容器环境变量?

Json 如何使用kubectl修补部署中的容器环境变量?,json,kubernetes,kubectl,jsonpath,Json,Kubernetes,Kubectl,Jsonpath,当我想提取某些容器环境变量的当前值时,我可以使用jsonpath,语法如下: kubectl get pods -l component='somelabel' -n somenamespace -o \ jsonpath='{.items[*].spec.containers[*].env[?(@.name=="SOME_ENV_VARIABLE")].value}') kubectl -n kube-system patch svc kubernetes-dashboard --type=

当我想提取某些容器环境变量的当前值时,我可以使用jsonpath,语法如下:

kubectl get pods -l component='somelabel' -n somenamespace -o \
jsonpath='{.items[*].spec.containers[*].env[?(@.name=="SOME_ENV_VARIABLE")].value}')
kubectl -n kube-system patch svc kubernetes-dashboard --type='json' -p="[{'op': 'replace', 'path': '/spec/ports/0/nodePort', 'value': $PORT}]"
这将返回名为
SOME_env_VARIABLE
的env varialbe值。json中包含容器环境变量的Pod部分如下所示:

            "spec": {
                "containers": [
                    {
                        "env": [
                            {
                                "name": "SOME_ENV_VARIABLE",
                                "value": "some_value"
                            },
                            {
                                "name": "ANOTHER_ENV_VARIABLE",
                                "value": "another_value"
                            }
                        ],
当我想修补部署中的某些值时,我使用的命令语法如下:

kubectl get pods -l component='somelabel' -n somenamespace -o \
jsonpath='{.items[*].spec.containers[*].env[?(@.name=="SOME_ENV_VARIABLE")].value}')
kubectl -n kube-system patch svc kubernetes-dashboard --type='json' -p="[{'op': 'replace', 'path': '/spec/ports/0/nodePort', 'value': $PORT}]"
但是,如果我需要使用像
env[?(@.name==“SOME_env_variable”)]这样的表达式,我如何用
'op':“replace'
来修补变量呢?我应该使用哪种语法?

而不是命令,您可以使用来更新k8s部署的环境变量

envvalue=$(kubectl get pods -l component='somelabel' -n somenamespace -o jsonpath='{.items[*].spec.containers[*].env[?(@.name=="SOME_ENV_VARIABLE")].value}')
kubectl set env deployment/my-app-deploy op=$envvalue
希望这有帮助。

  • op:替换 路径:/spec/template/spec/containers/0/env/0/name 值:您的变量名
  • op:替换 路径:/spec/template/spec/containers/0/env/0/value 值:您的变量值

这非常有用,tnx!