반응형
Docker 명령어를 사용하여 컨테이너를 구동할 때 하단과 같이 컨테이너 내부에서 명령을 수행할 유저(UserID)를 지정가능하다.
docker run --user=1001 ubuntu sleep 3600
Docker 와 마찬가지로 Kubernetes 에서도 파드나 컨테이너의 내부 수행 유저를 지정 가능하다.
만약 컨테이너와 파드 모두에 수행 유조(runAsUser)를 지정할 경우 파드의 설정을, 컨테이너의 설정이 덮어쓰게(overwrite) 된다.
하단의 예제를 보자.
apiVersion: v1
kind: Pod
metadata:
name: hello-world
spec:
securityContext:
runAsUser: 1000
containers:
- name: ubuntu
image: ubuntu
command: ["sleep", "3600"]
위와 같이 파드 레벨에서 securityContext 항목 하위에 runAsUser를 1000(일반 사용자 지정의 디폴트 uid)로 지정할 수 있다.
apiVersion: v1
kind: Pod
metadata:
name: hello-world
spec:
containers:
- name: ubuntu
image: ubuntu
command: ["sleep", "3600"]
securityContext:
runAsUser: 1000
capabilities:
add: ["NET_ADMIN"]
위의 경우 컨테이너 레벨에서도 정의가 가능하다. 추가로 Capabilities 의 경우는, 파드 레벨에서 정의할 수 없으며 컨테이너 레벨에서만 정의가 가능하다.
마지막으로 하단과 같이 컨테이너와 파드 레벨에서 모두 사용자를 지정하는 경우를 확인해보자.
apiVersion: v1
kind: Pod
metadata:
name: multi-hello-world
spec:
securityContext:
runAsUser: 1001
containers:
- image: ubuntu
name: hello
command: ["sleep", "5000"]
securityContext:
runAsUser: 1002
- image: ubuntu
name: world
command: ["sleep", "5000"]
이 경우 파드 레벨에서 1001번 유저로 구동이 되게 지정하였기에 하위 world 컨테이너는 1002번 유저로 구동이 된다. 하지만 hello 컨테이너의 경우 컨테이너 레벨에서 1002번 유저로 구동이 되게 지정하였으므로, 파드 레벨의 설정을 덮어쓰고 1002번 유저로 구동이 된다.
'소프트웨어 아키텍처 > Kubernetes' 카테고리의 다른 글
Kubernetes Pod Infra container (pause container) (1) | 2023.01.10 |
---|---|
Kubernetes 와 Seccomp (0) | 2022.09.23 |
Kubernetes 인그레스(Ingress) (0) | 2022.09.05 |
Kubernetes package binary 파일 정합성 확인하기 (0) | 2022.07.25 |
Kubectl 명령어의 Proxy, Port-Forward 기능 (0) | 2022.07.15 |
댓글