Kubernetes: RBAC ์˜๊ตฌ ๋ณผ๋ฅจ์ด ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์Œ

์— ๋งŒ๋“  2016๋…„ 12์›” 19์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: kubernetes/kubernetes

๋ฒ„๊ทธ ๋ณด๊ณ 

Kubernetes ๋ฒ„์ „ ( kubectl version ): ํด๋ผ์ด์–ธํŠธ ๋ฒ„์ „: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.1", GitCommit:"82450d03cb057bab0950214ef122b67c83fb11df"," GitTreeState , BuildDate:"2016-12-14T00:57:05Z", GoVersion:"go1.7.4", ์ปดํŒŒ์ผ๋Ÿฌ:"gc", ํ”Œ๋žซํผ:"darwin/amd64"}
์„œ๋ฒ„ ๋ฒ„์ „: version.Info{์ฃผ:"1", ๋ถ€:"5+", GitVersion:"v1.5.1-3+10e41f22e4421c", GitCommit:"10e41f22e4421c9a14e9e6782c6375c199"a07a8 -15T10:06:44Z", GoVersion:"go1.7.4", ์ปดํŒŒ์ผ๋Ÿฌ:"gc", ํ”Œ๋žซํผ:"linux/amd64"}

ํ™˜๊ฒฝ :

  • ํด๋ผ์šฐ๋“œ ์ œ๊ณต์ž ๋˜๋Š” ํ•˜๋“œ์›จ์–ด ๊ตฌ์„ฑ : openstack
  • OS (์˜ˆ: /etc/os-release): centos7
  • ์ปค๋„ (์˜ˆ: uname -a ): 3.10.0-327.36.3.el7.x86_64

์ผ์–ด๋‚œ ์ผ : RBAC ์ธ์ฆ์„ ํ™œ์„ฑํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‘ ๊ฐ€์ง€ ์—ญํ•  ๋ฐ”์ธ๋”ฉ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

apiVersion: rbac.authorization.k8s.io/v1alpha1
kind: ClusterRoleBinding
metadata:
  name: cluster-admin-custom
subjects:
- kind: ServiceAccount
  name: default
  namespace: kube-system
- kind: User
  name: kubelet
  namespace: kube-system
- kind: User
  name: clusteradmin
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin

๊ทธ๋ฆฌ๊ณ 

apiVersion: rbac.authorization.k8s.io/v1alpha1
kind: RoleBinding
metadata:
  name: default-admin
  namespace: default
subjects:
- kind: ServiceAccount
  name: default
- kind: User
  name: defaultadmin
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin

๋”ฐ๋ผ์„œ kube ํด๋Ÿฌ์Šคํ„ฐ์˜ ๋ชจ๋“  ํ•ญ๋ชฉ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” clusteradmin๊ณผ ๊ธฐ๋ณธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” defaultadmin์ด๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ์‚ฌ์šฉ์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. clusteradmin์„ ์‚ฌ์šฉํ•˜์—ฌ PV ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๋ฉด ์ž˜ ์ž‘๋™ํ•˜์ง€๋งŒ ๊ธฐ๋ณธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ defaultadmin์„ ์‚ฌ์šฉํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

kubectl pv ๊ฐ€์ ธ์˜ค๊ธฐ
์„œ๋ฒ„ ์˜ค๋ฅ˜(๊ธˆ์ง€๋จ): ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ๋œ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์˜๊ตฌ ๋ณผ๋ฅจ ๊ฐ€์ ธ์˜ค๊ธฐ).

์„œ๋ฒ„ ์˜ค๋ฅ˜(๊ธˆ์ง€๋จ): "db-pv.yaml" ์ƒ์„ฑ ์‹œ ์˜ค๋ฅ˜: ์„œ๋ฒ„๊ฐ€ ์š”์ฒญ๋œ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(์˜๊ตฌ ๋ณผ๋ฅจ ์ดํ›„).

์˜ˆ์ƒํ•œ ์ผ : defaultadmin์€ ์ •์˜๋œ(๋‚ด ๊ฒฝ์šฐ์—๋Š” ๊ธฐ๋ณธ) ๋„ค์ž„์ŠคํŽ˜์ด์Šค์˜ PV ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด cluster-admin clusterrole์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

- apiGroups:
  - '*'
  attributeRestrictions: null
  resources:
  - '*'
  verbs:
  - '*'
- attributeRestrictions: null
  nonResourceURLs:
  - '*'
  verbs:
  - '*'

์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋ฆฌ์†Œ์Šค *์ด์ง€๋งŒ PV๊ฐ€ ์™€์ผ๋“œ ์นด๋“œ์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹Œ ๊ฒƒ์ฒ˜๋Ÿผ ๋Š๊ปด์ง‘๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์„ ์žฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ• (๊ฐ€๋Šฅํ•œ ํ•œ ์ตœ์†Œํ•œ์œผ๋กœ ๊ทธ๋ฆฌ๊ณ  ์ •ํ™•ํ•˜๊ฒŒ):

  • RBAC ํ™œ์„ฑํ™”
  • ๋‘ ๋ช…์˜ ์‚ฌ์šฉ์ž, clusteradmin ๋ฐ defaultadmin ์ƒ์„ฑ
  • ์ด ๋ฒ„๊ทธ ํ‹ฐ์ผ“์˜ ์•ž๋ถ€๋ถ„์—์„œ ์–ธ๊ธ‰ํ•œ clusterrolebinding ๋ฐ rolebinding ์ถ”๊ฐ€
  • ๋‘ ์‚ฌ์šฉ์ž์™€ ํ•จ๊ป˜ ๊ธฐ๋ณธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ PV ๋ช…๋ น ์‹คํ–‰

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

PV๋Š” ํด๋Ÿฌ์Šคํ„ฐ ๋ฒ”์œ„ ๊ฐœ์ฒด์ž…๋‹ˆ๋‹ค. ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. RBAC์™€ ํ•จ๊ป˜ ํƒœ์–‘ ๊ด‘ ๋ฐœ์ „ API๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” ๊ถŒํ•œ์„ ์–ป์œผ๋ ค๋ฉด ๋‹น์‹ ์€ ClusterRole๊ฐ€ ClusterRoleBindingํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ ๋ฒ”์œ„์—์„œ ๋ฐ”์ธ๋”ฉ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  3 ๋Œ“๊ธ€

dev ๋ฐ default ํฌํ•จํ•œ ๋ช‡ ๊ฐ€์ง€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๊ฐ€ ์žˆ๋Š” ๋น„์Šทํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. "dev ์‚ฌ์šฉ์ž"๋กœ์„œ PVC๋ฅผ ํฌํ•จํ•˜์—ฌ dev ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋งŽ์€ ๋ฆฌ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์ง€๋งŒ dev ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— "dev user"๋กœ PV๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๋™์ผํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ์œ„์™€ ๊ฐ™์€ ์˜ค๋ฅ˜:

Error from server (Forbidden): error when creating "db-pv.yaml": the server does not allow access to the requested resource (post persistentvolumes)

default ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ ๊ด€๋ฆฌ์ž๋กœ PV๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ž…๋‹ˆ๋‹ค.

PV๊ฐ€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

PV๋Š” ํด๋Ÿฌ์Šคํ„ฐ ๋ฒ”์œ„ ๊ฐœ์ฒด์ž…๋‹ˆ๋‹ค. ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. RBAC์™€ ํ•จ๊ป˜ ํƒœ์–‘ ๊ด‘ ๋ฐœ์ „ API๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” ๊ถŒํ•œ์„ ์–ป์œผ๋ ค๋ฉด ๋‹น์‹ ์€ ClusterRole๊ฐ€ ClusterRoleBindingํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ ๋ฒ”์œ„์—์„œ ๋ฐ”์ธ๋”ฉ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰