kubernetes:使用valueFrom在环境变量中使用runAsUser的值?

kubernetes:使用valueFrom在环境变量中使用runAsUser的值?,kubernetes,security-context,Kubernetes,Security Context,我有一个kubernetes部署,它启动一个pod,在它的securityContext中包含一个runAsUser键。我希望我可以在initContainer的环境中使用以下内容来粘贴此值: apiVersion: apps/v1 kind: Deployment metadata: name: testdeployment spec: template: spec: containers: - name: myservice i

我有一个kubernetes部署,它启动一个pod,在它的
securityContext
中包含一个
runAsUser
键。我希望我可以在initContainer的环境中使用以下内容来粘贴此值:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: testdeployment
spec:
  template:
    spec:
      containers:
        - name: myservice
          image: myimage
          securityContext:
            runAsUser: 1000
      initContainers:
        - name: initialize_things
          image: myimage
          env:
            - name: CONTAINER_UID
              valueFrom:
                fieldRef:
                  fieldPath: spec.containers[0].securityContext.runAsUser
这似乎不起作用:

部署“testdeployment”无效:spec.template.spec.initContainers[0]。env[0]。valueFrom.fieldRef.fieldPath:无效值:“spec.containers[0]。securityContext.runAsUser”:转换字段路径时出错:不支持字段标签:spec.containers[0]。securityContext.runAsUser


有什么办法可以让这一切顺利进行吗?我正在尝试减少硬编码该UID的位置数。

我认为您无法做到这一点,因为不支持
spec.containers[0].securityContext.runAsUser
作为字段

顺便说一句,在您的情况下,更符合逻辑的是放置完整路径,我的意思是
spec.template.spec.containers[0].securityContext.runAsUser
,但无论如何,它不会有帮助

根据-您只能使用几个字段

Information available via fieldRef:
metadata.name 
metadata.namespace
metadata.uid 
metadata.labels['<KEY>']
metadata.annotations['<KEY>'] 

In addition, the following information is available through downwardAPI volume fieldRef:    
metadata.labels
metadata.annotations 

The following information is available through environment variables:    
status.podIP 
spec.serviceAccountName 
spec.nodeName 
status.hostIP
可通过fieldRef获得的信息:
元数据名称
metadata.namespace
元数据.uid
元数据.标签[“”]
元数据.注释[“”]
此外,可通过downwardAPI volume fieldRef获得以下信息:
元数据标签
元数据.注释
以下信息可通过环境变量获得:
地位
规范serviceAccountName
规范节点名称
hostIP

您可以在github closed上找到非常类似的问题:

您明确需要它的地方?你能从代码中调用像
getuid()
这样的函数来检索它吗?我不能:我需要在以
root
身份运行的
initContainer
中使用它,以便为具有
runAsUser
安全上下文的容器设置文件系统权限。我试图在问题中明确说明这一点;如果不清楚的话,我道歉。