为集群中的所有部署或 pods 设置环境变量
Set environment variable for all deployments or pods in cluster
我创建了 EKS 集群,现在我需要将 http_proxy/http_proxies 和 no_proxy 作为环境变量添加到所有 300 个部署中。我用变量创建了一个配置映射。有没有办法同时更新所有 pods 而不是一个一个地更新?如果是,我该怎么做?我的配置映射名称是代理环境变量。
感谢您的帮助和协助!
BR,
马丁
Name: proxy-environment-variables
Namespace: kube-system
Labels: <none>
Annotations: <none>
Data
====
HTTPS_PROXY:
----
http://10.16.11.10:8080
HTTP_PROXY:
----
http://10.16.11.10:8080
NO_PROXY:
----
169.254.169.254,127.0.0.1,localhost,10.0.0.0/8
http_proxy:
----
http://10.16.11.10:8080
https_proxy:
----
http://10.16.11.10:8080
no_proxy:
----
169.254.169.254,127.0.0.1,localhost,10.0.0.0/8
BinaryData
====
Events: <none>
您可以使用 set env
将环境变量更新到部署中:
kubectl set env deployment --all --from=configmap/my-env-config
示例:下面的示例演示了如果有多个部署,如何将环境变量添加到它们的pods。
// 我有以下部署:
kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
dep-1 1/1 1 1 5m21s
dep-2 1/1 1 1 41m
dep-4 1/1 1 1 3m17s
//各自的pods:
kubectl get pod
NAME READY STATUS RESTARTS AGE
dep-1-84fcdf5-wblsm 1/1 Running 0 2m8s
dep-2-84fcdf5-qfbd5 1/1 Running 0 3m4s
dep-4-6cf4dcf794-wk476 1/1 Running 0 4s
// 我的配置图:
apiVersion: v1
data:
HTTP_PROXY: https://1.2.3.4:1234
kind: ConfigMap
metadata:
creationTimestamp: "2022-05-04T16:52:00Z"
name: my-env-config
namespace: default
resourceVersion: "1002232"
uid: c8606312-90c6-45cf-86f0-f4f874f19909
// HTTP_PROXY 环境变量已经 设置在 dep-1
kubectl exec -it dep-1-84fcdf5-wblsm -- printenv HTTP_PROXY
https://1.2.3.4:1234
// HTTP_PROXY 环境变量 已经 在 dep-2
中设置
kubectl exec -it dep-2-84fcdf5-qfbd5 -- printenv HTTP_PROXY
https://1.2.3.4:1234
// HTTP_PROXY环境变量没有在dep-4中设置,这是我们的重点
kubectl exec -it dep-4-6cf4dcf794-wk476 -- printenv HTTP_PROXY
command terminated with exit code 1
// 解决方案:从名为 my-env-config
)
的配置映射中为所有部署 (--all
) 设置环境
kubectl set env deployment --all --from=configmap/my-env-config
deployment.apps/dep-4 env updated
//注意pods的年龄,只有dep-4的pod年龄被改变
kubectl get pod
NAME READY STATUS RESTARTS AGE
dep-1-84fcdf5-wblsm 1/1 Running 0 3m40s
dep-2-84fcdf5-qfbd5 1/1 Running 0 4m36s
dep-4-59d5cfd48d-2tbbm 1/1 Running 0 5s
// 现在 HTTP_PROXY 设置在 dep-4 的 pod 中。
kubectl exec -it dep-4-59d5cfd48d-2tbbm -- printenv HTTP_PROXY
https://1.2.3.4:1234
我创建了 EKS 集群,现在我需要将 http_proxy/http_proxies 和 no_proxy 作为环境变量添加到所有 300 个部署中。我用变量创建了一个配置映射。有没有办法同时更新所有 pods 而不是一个一个地更新?如果是,我该怎么做?我的配置映射名称是代理环境变量。
感谢您的帮助和协助!
BR,
马丁
Name: proxy-environment-variables
Namespace: kube-system
Labels: <none>
Annotations: <none>
Data
====
HTTPS_PROXY:
----
http://10.16.11.10:8080
HTTP_PROXY:
----
http://10.16.11.10:8080
NO_PROXY:
----
169.254.169.254,127.0.0.1,localhost,10.0.0.0/8
http_proxy:
----
http://10.16.11.10:8080
https_proxy:
----
http://10.16.11.10:8080
no_proxy:
----
169.254.169.254,127.0.0.1,localhost,10.0.0.0/8
BinaryData
====
Events: <none>
您可以使用 set env
将环境变量更新到部署中:
kubectl set env deployment --all --from=configmap/my-env-config
示例:下面的示例演示了如果有多个部署,如何将环境变量添加到它们的pods。
// 我有以下部署:
kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
dep-1 1/1 1 1 5m21s
dep-2 1/1 1 1 41m
dep-4 1/1 1 1 3m17s
//各自的pods:
kubectl get pod
NAME READY STATUS RESTARTS AGE
dep-1-84fcdf5-wblsm 1/1 Running 0 2m8s
dep-2-84fcdf5-qfbd5 1/1 Running 0 3m4s
dep-4-6cf4dcf794-wk476 1/1 Running 0 4s
// 我的配置图:
apiVersion: v1
data:
HTTP_PROXY: https://1.2.3.4:1234
kind: ConfigMap
metadata:
creationTimestamp: "2022-05-04T16:52:00Z"
name: my-env-config
namespace: default
resourceVersion: "1002232"
uid: c8606312-90c6-45cf-86f0-f4f874f19909
// HTTP_PROXY 环境变量已经 设置在 dep-1
kubectl exec -it dep-1-84fcdf5-wblsm -- printenv HTTP_PROXY
https://1.2.3.4:1234
// HTTP_PROXY 环境变量 已经 在 dep-2
中设置kubectl exec -it dep-2-84fcdf5-qfbd5 -- printenv HTTP_PROXY
https://1.2.3.4:1234
// HTTP_PROXY环境变量没有在dep-4中设置,这是我们的重点
kubectl exec -it dep-4-6cf4dcf794-wk476 -- printenv HTTP_PROXY
command terminated with exit code 1
// 解决方案:从名为 my-env-config
)
--all
) 设置环境
kubectl set env deployment --all --from=configmap/my-env-config
deployment.apps/dep-4 env updated
//注意pods的年龄,只有dep-4的pod年龄被改变
kubectl get pod
NAME READY STATUS RESTARTS AGE
dep-1-84fcdf5-wblsm 1/1 Running 0 3m40s
dep-2-84fcdf5-qfbd5 1/1 Running 0 4m36s
dep-4-59d5cfd48d-2tbbm 1/1 Running 0 5s
// 现在 HTTP_PROXY 设置在 dep-4 的 pod 中。
kubectl exec -it dep-4-59d5cfd48d-2tbbm -- printenv HTTP_PROXY
https://1.2.3.4:1234