Estoy usando Kubernetes yaml para montar un volumen. Sé que puedo configurar la carpeta de montaje para que sea para un grupo específico usando esta configuración:
securityContext: fsGroup: 999pero no puedo encontrar una manera de establecer también la propiedad del usuario y no solo el grupo.
Cuando accedo a la carpeta del contenedor para verificar la propiedad, es raíz.
De todos modos, ¿hacerlo a través de Kubernetes Yaml? Esperaría fsUser: 999 por ejemplo, pero no existe tal cosa. :/
No hay forma de configurar el UID usando la definición de Pod, pero puede usar un initContainer con el mismo volumeMount que el contenedor principal para configurar los permisos requeridos.
Es útil en casos como el suyo donde la propiedad del usuario debe establecerse en un valor no raíz.
Aquí hay una configuración de muestra (cámbiela según sus necesidades):
apiVersion: v1 kind: Pod metadata: name: security-context-demo spec: volumes: - name: sec-ctx-vol emptyDir: {} containers: - name: sec-ctx-demo image: busybox command: [ "sh", "-c", "sleep 1h" ] volumeMounts: - name: sec-ctx-vol mountPath: /data/demo securityContext: allowPrivilegeEscalation: false initContainers: - name: volume-mount-hack image: busybox command: ["sh", "-c", "chown -R 999:999 /data/demo"] volumeMounts: - name: sec-ctx-vol mountPath: /data/demoNo, no existe esa opción. Para verificar cada opción, disponible en securityContext, puede usar
kubectl explain deployment.spec.template.spec.securityContextSegún el documento
fsGroup <integer> A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod: 1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw---- If unset, the Kubelet will not modify the ownership and permissions of any volume.Por lo general, es una buena idea manejar el acceso a los archivos a través de la propiedad del grupo, porque en las configuraciones de kubernetes restringidas, en realidad no puede controlar la identificación del usuario o la identificación del grupo, por ejemplo, en RedHat Openshift.
Lo que puede hacer es usar runAsUser , si su proveedor de kubernetes lo permite
runAsUser <integer> The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container.Su aplicación funcionará con el uid que desee y, naturalmente, creará y accederá a los archivos como desee. Como se señaló anteriormente, por lo general no es la mejor idea hacerlo de esa manera, ya que dificulta la distribución de sus aplicaciones en diferentes plataformas.