【发布时间】:2019-06-20 06:46:14
【问题描述】:
我正在使用 helm 图表来部署一些 webhook 处理程序。处理程序需要连接到它们正在运行的集群才能在其中部署配置。它可以工作,但要进入 helm 图表有一个步骤很棘手。当图表创建服务帐户时,它会给它一个随机命名的秘密:
$ oc 描述 sa sa-build-webhook-realworld 名称:sa-build-webhook-realworld 命名空间:your-eng2 标签:app=sa-build-webhook-realworld 注释: 镜像拉取秘密:sa-build-webhook-realworld-dockercfg-4qz9g 可挂载的秘密:sa-build-webhook-realworld-token-bqtnw sa-build-webhook-realworld-dockercfg-4qz9g 代币:sa-build-webhook-realworld-token-bqtnw sa-build-webhook-realworld-token-k7lq8 事件:我可以抓住它并将其设置在部署配置中:
#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 中以声明方式执行此操作,同时创建 dc 和 sa,即 here。
有没有办法从图表中的部署配置中引用生成的服务帐户密码?
或者我应该尝试让 helm/helmfile 作为其工作的一部分进行命令行查找?
【问题讨论】:
-
您可以使用 ServiceAccounts 来运行您的 pod,这可能值得探索:kubernetes.io/docs/tasks/configure-pod-container/…
-
great kubectl 显示
serviceAccountName: default,所以我会尝试将其放入图表中,然后查看自动挂载的密钥是否按照该文档工作。我会告诉你的。 -
是的。 kubectl 提供了正确的服务帐户,并将其安装到默认位置,并且它希望我安装自己,如 diff
diff /var/run/secrets/kubernetes.io/serviceaccount/token /sa-secret-volume/token所确认 -
@WillGordon 如果您想发布答案,我会接受。干杯!