在OpenShift中声明式安装服务帐户密码

时间:2019-01-26 19:46:53

标签: openshift kubernetes-helm

我正在使用头盔图来部署一些Webhook处理程序。处理程序需要连接到正在运行的群集,才能在其中部署配置。它可以工作,但是要进入掌舵表就很难了。当图表创建服务帐户时,它会给它一个随机命名的秘密:

$ oc describe sa sa-build-webhook-realworld
Name:                sa-build-webhook-realworld
Namespace:           your-eng2
Labels:              app=sa-build-webhook-realworld
Annotations:         
Image pull secrets:  sa-build-webhook-realworld-dockercfg-4qz9g
Mountable secrets:   sa-build-webhook-realworld-token-bqtnw
                     sa-build-webhook-realworld-dockercfg-4qz9g
Tokens:              sa-build-webhook-realworld-token-bqtnw
                     sa-build-webhook-realworld-token-k7lq8
Events:              <none>

我可以抓住它,并使用以下命令在部署配置中进行设置:

#https://codereview.stackexchange.com/a/212095/75693
SECRET_NAME=$(
    oc describe sa sa-tag-realworld |
    awk -F': *' '
        $2  { KEY=$1 ; VALUE=$2;  }
        !$2 {          VALUE=$1; }
        KEY=="Mountable secrets" && VALUE !~ /docker/ { print VALUE }
    '
)
oc set volume dc/webhook-realworld \
  --add --name=sa-secret-volume \
  --mount-path=/sa-secret-volume \
  --secret-name=$SECRET_NAME

我试图查看是否有一种方法可以在图表yaml中声明性地执行此操作,以同时创建heredcsa

是否可以通过图表中的部署配置引用生成的服务帐户密码?

还是我应该尝试获取helm / helmfile来进行命令行查找作为其工作的一部分?

1 个答案:

答案 0 :(得分:1)

.spec.template.spec内,您可以指定serviceAccountName以确保您的Pod运行并作为所需的ServiceAccount进行身份验证。来源:https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/

示例

kind: DeploymentConfig
apiVersion: apps.openshift.io/v1
metadata:
  name: deployment
spec:
    metadata:
      name: deployment-pod
    spec:
      serviceAccountName: sa-build-webhook-realworld
  ...