有没有办法将serviceaccount secrets内容填充到环境变量?
例如:当一个吊舱开始,它包含了包含 token
, ca.crt
...等即是结果以百度 Map serviceaccount
sercret到一个文件夹一个文件夹 /var/run/secrets/kubernetes.io/secrets/serviceaccount/
.
无论如何将 serviceaccountsecret.token
映射到环境变量?
EDIT
我正在使用fabric8 maven插件部署kubernetes / openshift对象 . 不过,我一直在寻找一种在PodSpec上设置这些信息的方法 .
因此,目前openshift / kubernetes将位于秘密中的服务帐户信息映射,然后将其自动映射到文件系统(`/ var / run ...) .
我正在寻找一种方法来映射这种“未知”服务帐户秘密的环境变量(我的意思是,我不知道这是这个秘密的名字,当我创建PodSpec) .
$ oc get secrets
NAME TYPE DATA AGE
builder-dockercfg-hplx4 kubernetes.io/dockercfg 1 43m
builder-token-bkd8h kubernetes.io/service-account-token 4 43m
builder-token-gpckp kubernetes.io/service-account-token 4 43m
default-dockercfg-q2vpx kubernetes.io/dockercfg 1 43m
default-token-hpr7l kubernetes.io/service-account-token 4 43m
default-token-r5225 kubernetes.io/service-account-token 4 43m
deployer-dockercfg-6h7nw kubernetes.io/dockercfg 1 43m
deployer-token-svmvf kubernetes.io/service-account-token 4 43m
deployer-token-tmg9x kubernetes.io/service-account-token 4 43m
vault-cert kubernetes.io/tls 2 42m
如您所见,openshiftshift / kubernetes为每个服务帐户创建了秘密:
$ oc get sa
NAME SECRETS AGE
builder 2 44m
default 2 44m
deployer 2 44m
每个秘密的形式如下:
$ oc describe secret default-token-hpr7l
Name: default-token-hpr7l
Namespace: ra-sec
Labels: <none>
Annotations: kubernetes.io/created-by=openshift.io/create-dockercfg-secrets
kubernetes.io/service-account.name=default
kubernetes.io/service-account.uid=82ae89d7-898a-11e8-8d35-f28ae3e0478e
Type: kubernetes.io/service-account-token
Data
====
ca.crt: 1070 bytes
namespace: 6 bytes
service-ca.crt: 2186 bytes
token: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJyYS1zZWMiLCJrdWJlcm5ldGVzLmlvL3Nl...
每个秘密都会自动映射到文件系统 . 不过,我想写入PodSpec:
env:
- name: KUBERNETES_TOKEN
valueFrom:
secretKeyRef:
name: <unknown service account secret name>
key: token
我希望我的表现更好一些 .
2 回答
你如何部署你的应用程序,S2I?
如果是,您可以使用自定义
.s2i/bin/run
脚本从文件内容中自行设置,然后运行原始的S2Irun
脚本 .请参阅免费电子书中的“自定义源到图像构建”一章:
更多细节 .
您可以创建使用
kubernetes.io/service-account.name
注释注释的秘密 .该注释向当前秘密提供相关的服务帐户信息 .
通过这种方式,您可以使用所需数据创建命名机密 .