Helm: ์˜ค๋ฅ˜ : ์„ค์น˜ ์˜ค๋ฅ˜ : ์‚ฌ์šฉ์ž "system : anonymous"๋Š” ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค "kube-system"์— deployments.extensions๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. : "์ผ์น˜ํ•˜๋Š” ์ •์ฑ…์ด ์—†์Šต๋‹ˆ๋‹ค. \ n ์•Œ ์ˆ˜์—†๋Š” ์‚ฌ์šฉ์ž \"system : anonymous \ ""(๋ฐฐํฌ. ํ™•์žฅ ์ดํ›„)

์— ๋งŒ๋“  2017๋…„ 07์›” 08์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: helm/helm

์•ˆ๋…•ํ•˜์„ธ์š”,

์žˆ๋‹ค

Helm 2.5.0
GCP์—์„œ RBAC๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋œ Kubernetes 1.6

๋ฌธ์ œ

kubectl ๋ฐ helm์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ์—์„œ์ด ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

$ kubectl config set-credentials $K8S_USER --username=$K8S_USER --password=$K8S_PASS
$ kubectl config set-cluster test-cluster  --server=https://$K8S_SERVER --insecure-skip-tls- verify=$K8S_INSECURE_SKIP_TLS_VERIFY 
$ kubectl config set-context default-context --cluster=$K8S_CLUSTER_NAME --user=$K8S_USER 
$ kubectl config use-context default-context
$ kubectl cluster-info
Kubernetes master is running at https://****

$ helm init
$HELM_HOME has been configured at /config/.helm.
Error: error installing: User "system:anonymous" cannot create deployments.extensions in the namespace "kube-system".: "No policy matched.\nUnknown user \"system:anonymous\"" (post deployments.extensions)

์งˆ๋ฌธ

์ด ์˜ค๋ฅ˜๋ฅผ ์ˆ˜์ •ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ?

questiosupport

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

์ฐจํŠธ์—์„œ ์š”์ฒญํ•œ ๊ฐœ์ฒด๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์œผ๋ ค๋ฉด Tiller ํฌ๋“œ์˜ ์„œ๋น„์Šค ๊ณ„์ •์— ์ถฉ๋ถ„ํ•œ ๊ถŒํ•œ์„ ๋ฐ”์ธ๋”ฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ํ•ด๋‹น ํฌ๋“œ๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋™์ผํ•œ ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค (๊ท€ํ•˜์˜ ๊ฒฝ์šฐ "kube-system")์—์„œ Tiller์— ๋Œ€ํ•œ ์ƒˆ ์„œ๋น„์Šค ๊ณ„์ •์„ ๋งŒ๋“  ๋‹ค์Œ ์ฐจํŠธ๋ฅผ ์„ค์น˜ํ•˜๋ ค๋Š” ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค์— _Role_์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ _ClusterRole_์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๋„ค์ž„ ์ŠคํŽ˜์ด์Šค์—์„œ ์ •์˜๋ฅผ ๊ณต์œ  ํ•œ ๋‹ค์Œ _RoleBinding_ ๋˜๋Š” _ClusterRoleBinding_ ๊ฐœ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์•ž์„œ ์–ธ๊ธ‰ ํ•œ Tiller ๊ด€๋ จ ์„œ๋น„์Šค ๊ณ„์ •์— ์ด๋Ÿฌํ•œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

์„œ๋น„์Šค ๊ณ„์ • ๋ฐ ClusterRoleBinding ์ •์˜๋กœ ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: kube-system
secrets:
  - tiller-secret
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: tiller
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
  - kind: ServiceAccount
    name: tiller
    namespace: kube-system

๊ทธ๋Ÿฐ ๋‹ค์Œ์ด ์„œ๋น„์Šค ์‚ฌ์šฉ์ž๋ฅผ Tiller ์‚ฌ์–‘์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}'

๊ทธ๋Ÿฐ ๋‹ค์Œ ํŒŒ์ดํ”„ ๋ผ์ธ ๋งค๋‹ˆํŽ˜์ŠคํŠธ์˜ k8s์—์„œ ์ธ์ฆ์— ๋Œ€ํ•œ ๋ช…๋ น ๋ชฉ๋ก์„ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค.

begin_script:
  - echo "$CA" > /ca.crt
  - kubectl config set-cluster k8s-cluster --embed-certs=true --server=https://$K8S_SERVER --certificate-authority=/ca.crt
  - kubectl config set-credentials tiller --token=$USER_TOKEN
  - kubectl config set-context k8s-cluster --cluster=k8s-cluster --user=tiller
  - kubectl config use-context k8s-cluster 

$CA ๋ฐ $USER_TOKEN -ca.crt ๋ฐ์ดํ„ฐ ๋ฐ ํ‹ธ๋Ÿฌ ์‚ฌ์šฉ์ž ํ† ํฐ์„ ์ €์žฅํ•˜๋Š” ๋น„๋ฐ€ ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค.

ca.crt ๋ฐ user_token์„ ๊ฐ€์ ธ ์˜ค๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

$ secret=$(kubectl get sa tiller -o json --namaspace=kube-system | jq -r .secrets[].name)
$ kubectl get secret $secret -o json | jq -r '.data["ca.crt"]' | base64 -D # $CA
$ kubectl get secret $secret -o json | jq -r '.data["token"]' | base64 -D # $USER_TOKEN

_helm init_๋Š” ์ปค๋ฐ‹ 64e9e471838ac44e551c32abcbd19f671c80ecce์—์„œ --service-account ํ”Œ๋ž˜๊ทธ๋ฅผ ์ค€์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.

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