首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kubernetes可以重用现有部署中的环境变量吗?

Kubernetes可以重用现有部署中的环境变量吗?
EN

Stack Overflow用户
提问于 2019-12-03 22:06:14
回答 2查看 1.1K关注 0票数 1

我使用一个Kubernetes Cronjob来运行期间数据库恢复和post还原脚本,这些脚本运行在目标环境中,其中包括处理数据库、redis和文件系统等任务。

我面临的问题是,我必须重新定义在Cronjob中部署时使用的所有环境变量(例如,DATABASE_NAMEDATABASE_PASSWORDREDIS_HOST等)。

当重复所有环境变量工作时,容易出错,因为我已经忘记更新作业,这导致我不得不重新运行整个过程,这个过程需要2-4小时才能运行,具体取决于哪个环境。

是否有一种方法可以引用现有的Deployment 并重用我的中定义的环境变量?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-04 08:16:16

您可以使用‘pods: PodPreset’对象定义逗号env变量,并将其注入多个kuberentes对象,如部署/状态集/pods/复制集等。

请按照帮助链接-> https://kubernetes.io/docs/tasks/inject-data-application/podpreset/

票数 2
EN

Stack Overflow用户

发布于 2019-12-04 08:58:47

我不认为这样您可以重用环境变量,直到它来自机密或configmaps.So,如果您不想对非敏感数据使用机密,那么您可以像下面这样使用configmap

代码语言:javascript
复制
kubectl create configmap redis-uname --from-literal=username=jp

[root@master ~]# kubectl get cm redis-uname -o yaml
apiVersion: v1
data:
  username: jp
kind: ConfigMap
metadata:
  creationTimestamp: "2019-11-28T21:38:18Z"
  name: redis-uname
  namespace: default
  resourceVersion: "1090703"
  selfLink: /api/v1/namespaces/default/configmaps/redis-uname
  uid: 1a9e3cce-50b1-448b-8bae-4b2c6ccb6861
[root@master ~]#

[root@master ~]# echo -n 'K8sCluster!' | base64
SzhzQ2x1c3RlciE=

[root@master ~]# cat redis-sec.yaml
apiVersion: v1
kind: Secret
metadata:
 name: redissecret
data:
 password: SzhzQ2x1c3RlciE=
[root@master ~]#



[root@master ~]# kubectl apply -f redis-sec.yaml
secret/redissecret created

[root@master ~]# kubectl get secret redissecret -o yaml
apiVersion: v1
data:
  password: SzhzQ2x1c3RlciE=
kind: Secret
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","data":{"password":"SzhzQ2x1c3RlciE="},"kind":"Secret","metadata":{"annotations":{},"name":"redissecret","namespace":"default"}}
  creationTimestamp: "2019-11-28T21:40:18Z"
  name: redissecret
  namespace: default
  resourceVersion: "1090876"
  selfLink: /api/v1/namespaces/default/secrets/redissecret
  uid: 2b6acdcd-d7c6-4e50-bd0e-8c323804155b
type: Opaque
[root@master ~]#

apiVersion: v1
kind: Pod
metadata:
 name: "redis-sec-env-pod"
spec:
 containers:
 - name: redis-sec-env-cn
   image: "redis"
   env:
    - name: username
      valueFrom:
        configMapKeyRef:
          name: redis-uname
          key: username
    - name: password
      valueFrom:
        secretKeyRef:
          name: redissecret
          key: password

[root@master ~]# kubectl apply -f reddis_sec_pod.yaml
pod/redis-sec-env-pod created

[root@master ~]# kubectl exec -it redis-sec-env-pod sh
# env|grep -i user
username=jp
# env|grep -i pass
password=K8sCluster!
#
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59166095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档