小编Bis*_*sec的帖子

如何为所有名称空间更新Kubernetes机密

我正在通过Kubernetes引擎在Google Cloud Platform上使用docker和kubernetes。我有在app.yaml文件中配置的机密,如下所示:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: app
  namespace: $CI_COMMIT_REF_SLUG
  labels:
    app: app
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: app
    spec:
      containers:
      - name: app
        image: gcr.io/engagement-org/app:$CI_COMMIT_SHA
        imagePullPolicy: Always
        ports:
        - containerPort: 9000
        env:
        - name: MAILJET_APIKEY_PUBLIC
          valueFrom:
            secretKeyRef:
              name: mailjet
              key: apikey_public
        - name: MAILJET_APIKEY_PRIVATE
          valueFrom:
            secretKeyRef:
              name: mailjet
              key: apikey_private
Run Code Online (Sandbox Code Playgroud)

每次我按下一个新分支时,都会通过gitlab-ci文件中的部署创建一个新的名称空间。秘密是这样创建的:

 - kubectl create secret generic mailjet --namespace=$CI_COMMIT_REF_SLUG --from-literal=apikey_public=$MAILJET_APIKEY_PUBLIC --from-literal=apikey_private=$MAILJET_APIKEY_PRIVATE || echo 'Secret already exist'; 
Run Code Online (Sandbox Code Playgroud)

现在,我已经更新了mailjet api密钥,并希望对所有名称空间进行更改。我可以通过在Pod上获得外壳并运行来编辑每个命名空间上的秘密kubectl edit secret mailjet --namespace=<namespace_name>

我想要的是将新的秘密值发送到将来将要创建的新容器中。当我部署一个新值时,它仍然使用旧值。

据我了解,gitlab-ci文件使用app.yaml文件将环境变量替换为值。但是我不明白app.yaml在哪里找到原始值。

谢谢您的帮助。

docker google-cloud-platform gitlab-ci kubernetes

0
推荐指数
1
解决办法
3312
查看次数