Helm: μ‚¬μš©μž "system : serviceaccount : kube-system : default"λŠ” λ„€μž„ 슀페이슀 "default"μ—μ„œ λ„€μž„ 슀페이슀λ₯Ό κ°€μ Έμ˜¬ 수 μ—†μŠ΅λ‹ˆλ‹€.

에 λ§Œλ“  2017λ…„ 11μ›” 12일  Β·  30μ½”λ©˜νŠΈ  Β·  좜처: helm/helm

helm νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ν•  λ•Œ λ‹€μŒκ³Ό 같은 였λ₯˜κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€.

[root@k8s-master3 ~]# helm install --name nginx stable/nginx-ingress
Error: release nginx failed: namespaces "default" is forbidden: User "system:serviceaccount:kube-system:default" cannot get namespaces in the namespace "default"

λ‚΄ 쑰타 버전은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

[root@k8s-master3 ~]# helm version
Client: &version.Version{SemVer:"v2.7.0", GitCommit:"08c1144f5eb3e3b636d9775617287cc26e53dba4", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.7.0", GitCommit:"08c1144f5eb3e3b636d9775617287cc26e53dba4", GitTreeState:"clean"}

그리고 λ‚΄ kubectl 버전 :

[root@k8s-master3 ~]# kubectl version
Client Version: version.Info{Major:"1", Minor:"8+", GitVersion:"v1.8.1-alicloud", GitCommit:"19408ab2a1b736fe97a9d9cf24c6fb228f23f12f", GitTreeState:"clean", BuildDate:"2017-10-19T04:05:24Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.1", GitCommit:"f38e43b221d08850172a9a4ea785a86a3ffa3b3a", GitTreeState:"clean", BuildDate:"2017-10-11T23:16:41Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}

μ–΄λ–€ 도움을 μ£Όμ‹œλ©΄ κ°μ‚¬ν•˜κ² μŠ΅λ‹ˆλ‹€!

questiosupport

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

ν‹ΈλŸ¬λ₯Ό 배포 ν•  κΆŒν•œμ΄ μ—†κΈ° λ•Œλ¬Έμ— 계정을 μΆ”κ°€ν•˜μ„Έμš”.

kubectl --namespace kube-system create serviceaccount tiller

kubectl create clusterrolebinding tiller-cluster-rule \
 --clusterrole=cluster-admin --serviceaccount=kube-system:tiller

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

μ½˜μ†” 좜λ ₯ :

serviceaccount "tiller" created
clusterrolebinding "tiller-cluster-rule" created
deployment "tiller-deploy" patched

그런 λ‹€μŒ μ•„λž˜ λͺ…령을 μ‹€ν–‰ν•˜μ—¬ ν™•μΈν•˜μ‹­μ‹œμ˜€.

helm list
helm repo update
helm install --name nginx-ingress stable/nginx-ingress

λͺ¨λ“  30 λŒ“κΈ€

κΆŒν•œκ³Ό κ΄€λ ¨λœ λ¬Έμ œκ°€ λ°œμƒν•œ 것 κ°™μŠ΅λ‹ˆλ‹€.
차트λ₯Ό 배포 ν•  λ•Œ rbacλ₯Ό ν™œμ„±ν™” ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

$ helm install --name nginx --set rbac.create=true stable/nginx-ingress

ν—‰ν—‰

μ—¬μ „νžˆ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
image

여기에도 같은 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. rbacλ₯Ό ν™œμ„±ν™”ν•΄λ„ λ„μ›€μ΄λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

$ kubectl version
Client Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.3", GitCommit:"f0efb3cb883751c5ffdbe6d515f3cb4fbe7b7acd", GitTreeState:"clean", BuildDate:"2017-11-10T13:17:12Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"8", GitVersion:"v1.8.2", GitCommit:"bdaeafa71f6c7c04636251031f93464384d54963", GitTreeState:"clean", BuildDate:"2017-10-24T19:38:10Z", GoVersion:"go1.8.3", Compiler:"gc", Platform:"linux/amd64"}

$ helm install --name my-hdfs-namenode hdfs-namenode-k8s
Error: release my-hdfs-namenode failed: namespaces "default" is forbidden: User "system:serviceaccount:kube-system:default" cannot get namespaces in the namespace "default"

도움을 μ£Όμ‹œλ©΄ κ°μ‚¬ν•˜κ² μŠ΅λ‹ˆλ‹€!

ν•„μš”ν•œ 것은 κΈ°λ³Έ μ„œλΉ„μŠ€ 계정을 톡해 κΈ°λ³Έ λ„€μž„ μŠ€νŽ˜μ΄μŠ€μ— λ¦¬μ†ŒμŠ€λ₯Ό μ„€μΉ˜ν•  μˆ˜μžˆλŠ” μ•‘μ„ΈμŠ€ κΆŒν•œμ„ λΆ€μ—¬ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. https://github.com/kubernetes/helm/blob/master/docs/service_accounts.md μ°Έμ‘°

μ•ˆλ…•ν•˜μ„Έμš”, @bacongobbler
도와 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. μœ„μ—μ„œ μ–ΈκΈ‰ ν•œ 지침을 λ”°λ₯΄κ³  λ‹€μŒ μž‘μ—…μ„ μˆ˜ν–‰ν–ˆμŠ΅λ‹ˆλ‹€.
μš°μ„ , λ‚˜λŠ” 경운기λ₯Ό μž¬μ„€μ •ν–ˆμŠ΅λ‹ˆλ‹€.

helm reset --force

μ΄λ ‡κ²Œ ν•œ ν›„ RBAC yaml νŒŒμΌμ„ λ§Œλ“­λ‹ˆλ‹€.

[root@k8s-master3 ~]# cat rbac-config.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: default
---
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: default

그리고 λ‚΄ 경운기λ₯Ό μ΄ˆκΈ°ν™”ν•˜μ‹­μ‹œμ˜€.

helm init --service-account tiller --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/tiller:v2.7.0 --stable-repo-url https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts

κ·ΈλŸ¬λ‚˜ κ²½μš΄κΈ°κ°€ μ„±κ³΅μ μœΌλ‘œ μ„€μΉ˜λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

[root@k8s-master3 ~]# helm version
Client: &version.Version{SemVer:"v2.7.0", GitCommit:"08c1144f5eb3e3b636d9775617287cc26e53dba4", GitTreeState:"clean"}
Error: cannot connect to Tiller

그리고 kube-system λ„€μž„ μŠ€νŽ˜μ΄μŠ€μ—μ„œ 배포λ₯Ό μž¬λ΄‰ν•˜λŠ” 것은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

[root@k8s-master3 ~]# kubectl get deployments --all-namespaces
NAMESPACE     NAME                       DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
ci            jenkins                    1         1         1            1           5d
default       redis-master               1         1         1            0           4d
kube-system   default-http-backend       1         1         1            1           5d
kube-system   heapster                   1         1         1            1           5d
kube-system   kube-dns                   1         1         1            1           5d
kube-system   kubernetes-dashboard       1         1         1            1           5d
kube-system   monitoring-influxdb        1         1         1            1           5d
kube-system   nginx-ingress-controller   1         1         1            1           5d
kube-system   tiller-deploy              1         0         0            0           9m

이 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 방법에 λŒ€ν•œ 아이디어가 μžˆμŠ΅λ‹ˆκΉŒ?
미리 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€!

@noprom 이것을 μ‹œλ„ν•˜μ‹­μ‹œμ˜€

μˆ˜λ™μœΌλ‘œ ν‹ΈλŸ¬ 배포 μ‚­μ œ

ν‹ΈλŸ¬μ— λŒ€ν•œ μ΄λŸ¬ν•œ rbac ꡬ성 생성

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

ν•΄λ‹Ή rbac κ΅¬μ„±μ—μ„œ delete (yes delete) μ‹€ν–‰
λ‹€μ‹œ λ§Œλ“€κΈ° μ‹€ν–‰
그런 λ‹€μŒ helm init --upgradeλ₯Ό μ‹€ν–‰ν•˜μ—¬

더 이상 였λ₯˜κ°€ μ—†μ–΄μ•Όν•©λ‹ˆλ‹€.

λΏ‘λΏ‘
큰! κ°μ‚¬ν•©λ‹ˆλ‹€.이 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.
κ°μ‚¬ν•©λ‹ˆλ‹€!

도와 쀄 μˆ˜μžˆμ–΄μ„œ 기뻐 :)

λΏ‘λΏ‘
ν™˜μƒμ μΈ 포슀트! πŸ˜„

감사!

μœ„λŠ” μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ μ—¬μ „νžˆ 점점

namespaces "default" is forbidden: User "system:serviceaccount:kube-system:default" cannot get namespaces in the namespace "default"

ν‹ΈλŸ¬λ₯Ό 배포 ν•  κΆŒν•œμ΄ μ—†κΈ° λ•Œλ¬Έμ— 계정을 μΆ”κ°€ν•˜μ„Έμš”.

kubectl --namespace kube-system create serviceaccount tiller

kubectl create clusterrolebinding tiller-cluster-rule \
 --clusterrole=cluster-admin --serviceaccount=kube-system:tiller

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

μ½˜μ†” 좜λ ₯ :

serviceaccount "tiller" created
clusterrolebinding "tiller-cluster-rule" created
deployment "tiller-deploy" patched

그런 λ‹€μŒ μ•„λž˜ λͺ…령을 μ‹€ν–‰ν•˜μ—¬ ν™•μΈν•˜μ‹­μ‹œμ˜€.

helm list
helm repo update
helm install --name nginx-ingress stable/nginx-ingress

@ykfq κ°μ‚¬ν•©λ‹ˆλ‹€, μž‘λ™ν•©λ‹ˆλ‹€! ν•˜μ§€λ§Œ μƒˆ ν΄λŸ¬μŠ€ν„°μ— 배포 ν•  λ•Œλ§ˆλ‹€ μ΄λ ‡κ²Œν•΄μ•Όν•©λ‹ˆκΉŒ? 정말 λΆˆνŽΈν•©λ‹ˆλ‹€!

λΏ‘ 빡뀨
곡식 경운기 μ„€μΉ˜ 지침 을 μ‚¬μš©ν•˜λŠ” 경우 λ‹€μŒμ„ μˆ˜ν–‰ν•΄μ•Όν•©λ‹ˆλ‹€.

  • Tiller에 λŒ€ν•œ μ„œλΉ„μŠ€ 계정 λ§Œλ“€κΈ°
  • μœ„μ—μ„œ λ§Œλ“  ServiceAccout에 λŒ€ν•œ 역할을 λ°”μΈλ”©ν•©λ‹ˆλ‹€ (cluster-admin 역할이 ν•„μš”ν•¨).
  • ServiceAccout에 λŒ€ν•œ ClusterRoleBinding λ§Œλ“€κΈ°
  • helm init μ‚¬μš©μ‹œ 생성 된 배포 패치

λ”°λΌμ„œ 더 μ‰½κ²Œ λ§Œλ“œλŠ” 또 λ‹€λ₯Έ 방법이 μžˆμŠ΅λ‹ˆλ‹€-yaml νŒŒμΌμ„ 톡해 μ„€μΉ˜ν•˜μ‹­μ‹œμ˜€.

vim tiller.yaml

apiVersion: v1
kind: Service
metadata:
  name: tiller-deploy
  namespace: kube-system
  labels:
    app: helm
    name: tiller
spec:
  ports:
  - name: tiller
    port: 44134
    protocol: TCP
    targetPort: tiller
  selector:
    app: helm
    name: tiller
  type: ClusterIP
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: tiller-deploy
  namespace: kube-system
  labels:
    app: helm
    name: tiller
  annotations:
    deployment.kubernetes.io/revision: "5"
spec:
  replicas: 1
  selector:
    matchLabels:
      app: helm
      name: tiller
  template:
    metadata:
      labels:
        app: helm
        name: tiller
    spec:
      containers:
      - env:
        - name: TILLER_NAMESPACE
          value: kube-system
        - name: TILLER_HISTORY_MAX
          value: "0"
        name: tiller
        image: gcr.io/kubernetes-helm/tiller:v2.8.2
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 44134
          name: tiller
          protocol: TCP
        - containerPort: 44135
          name: http
          protocol: TCP
        livenessProbe:
          failureThreshold: 3
          httpGet:
            path: /liveness
            port: 44135
            scheme: HTTP
          initialDelaySeconds: 1
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 1
        readinessProbe:
          failureThreshold: 3
          httpGet:
            path: /readiness
            port: 44135
            scheme: HTTP
          initialDelaySeconds: 1
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 1
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      serviceAccount: tiller
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: kube-system
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller-cluster-rule
subjects:
- kind: ServiceAccount
  name: tiller
  namespace: kube-system
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: ""

그런 λ‹€μŒ λ¦¬μ†ŒμŠ€λ₯Ό λ§Œλ“­λ‹ˆλ‹€.

kubectl create -f tiller.yaml

μ„œλΉ„μŠ€λ₯Ό ν™•μΈν•˜μ‹­μ‹œμ˜€.

μœ„μ˜ yaml μ½˜ν…μΈ λŠ” λ‹€μŒ λͺ…령을 μ‚¬μš©ν•˜μ—¬ 싀행쀑인 ν΄λŸ¬μŠ€ν„°μ—μ„œ λ‚΄λ³΄λƒˆμŠ΅λ‹ˆλ‹€.

kubectl -n kube-system get svc tiller-deploy -o=yaml
kubectl -n kube-system get deploy tiller-deploy -o=yaml
kubectl -n kube-system get sa tiller -o=yaml
kubectl -n kube-system get clusterrolebinding tiller-cluster-rule -o=yaml

이 yaml은 아직 ν…ŒμŠ€νŠΈλ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. 질문이 μžˆμœΌμ‹œλ©΄ μ˜κ²¬μ„ λ‚¨κ²¨μ£Όμ„Έμš”.

@ykfq Tiller에 전체 ν΄λŸ¬μŠ€ν„° κ΄€λ¦¬μž κΆŒν•œμ„ λΆ€μ—¬ν•˜λŠ” 아이디어가 λ§ˆμŒμ— 듀지 μ•Šμ§€λ§Œ λ‹€λ₯Έ 것은 λ‚˜λ₯Ό μœ„ν•΄ μΌν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. 이 예λ₯Ό 따라 μ‹œλ„ν–ˆμŠ΅λ‹ˆλ‹€. Tillerκ°€ λ‚΄κ°€ μž‘λ™ν•˜λ„λ‘ ν—ˆμš© ν•œ λ„€μž„ μŠ€νŽ˜μ΄μŠ€μ—μ„œλ§Œ μž‘λ™ν•˜λ„λ‘ μ œν•œν•˜λ €κ³ ν–ˆμŠ΅λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ 항상이 λ¬Έμ œκ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€ (Concourse 배포).

Error: release concourse failed: namespaces "concourse" is forbidden: User "system:serviceaccount:tiller-system:tiller-user" cannot get namespaces in the namespace "concourse": Unknown user "system:serviceaccount:tiller-system:tiller-user"

νŠΉμ • 예제λ₯Ό μž‘λ™μ‹œν‚€λŠ” 방법에 λŒ€ν•œ 아이디어가 μžˆμŠ΅λ‹ˆκΉŒ? λͺ‡ 가지 맀개 λ³€μˆ˜λ₯Ό λ³€κ²½ν–ˆλŠ”λ° RBACκ°€μžˆλŠ” 전체 YAML은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

apiVersion: v1
kind: Namespace
metadata:
  name: tiller-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller-user
  namespace: tiller-system
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller-manager
  namespace: tiller-system
rules:
- apiGroups: ["", "extensions", "apps"]
  resources: ["configmaps"]
  verbs: ["*"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller-binding
  namespace: tiller-system
subjects:
- kind: ServiceAccount
  name: tiller-user
  namespace: tiller-system
roleRef:
  kind: Role
  name: tiller-manager
  apiGroup: rbac.authorization.k8s.io
---
apiVersion: v1
kind: Namespace
metadata:
  name: concourse
---
apiVersion: v1
kind: Namespace
metadata:
  name: concourse-main
----
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller-concourse-role
  namespace: concourse
rules:
- apiGroups: ["", "extensions", "apps"]
  resources: ["*"]
  verbs: ["*"]
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller-concourse-namespace-role
  namespace: concourse
rules:
- apiGroups: ["", "extensions", "apps"]
  resources: ["namespaces"]
  verbs: ["*"]
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller-concourse-main-role
  namespace: concourse-main
rules:
- apiGroups: ["", "extensions", "apps"]
  resources: ["*"]
  verbs: ["*"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller-concourse-main-role
subjects:
- kind: ServiceAccount
  name: tiller-user
  namespace: tiller-system
roleRef:
  kind: Role
  name: tiller-concourse-main-role
  apiGroup: rbac.authorization.k8s.io
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller-concourse-role
subjects:
- kind: ServiceAccount
  name: tiller-user
  namespace: tiller-system
roleRef:
  kind: Role
  name: tiller-concourse-role
  apiGroup: rbac.authorization.k8s.io
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: tiller-concourse-namespace-role
subjects:
- kind: ServiceAccount
  name: tiller-user
  namespace: tiller-system
roleRef:
  kind: Role
  name: tiller-concourse-namespace-role
  apiGroup: rbac.authorization.k8s.io

helm init --upgrade --service-account tiller

@brunoban helm v3λŠ” ν‹ΈλŸ¬λ₯Ό μ œκ±°ν•˜λ―€λ‘œ κΆŒν•œμ„ μ μš©ν•œ μ‚¬μš©μžκ°€ κΆŒν•œμ„ 이해 ν•œ κ²ƒμž…λ‹ˆλ‹€.

@innovia 였 ... λͺ°λžμ–΄μš”. 그럼 이제 속도λ₯Ό λ‚Ό κ²ƒμž…λ‹ˆλ‹€. 감사!

그런 λ‹€μŒ helm init --upgradeλ₯Ό μ‹€ν–‰ν•˜μ—¬

@innovia rbac ꡬ성 νŒŒμΌμ„ 어디에 λ„£μ„κΉŒμš”?

@cjbottaro λ‚΄κ°€ λ„€μž„ 슀페이슀 λ‹Ή helm 및 tillerλ₯Ό μ„€μ •ν•˜κΈ° μœ„ν•΄ Hwoλ₯Ό μž‘μ„±ν•œ κ²Œμ‹œλ¬Όμ„ μ½μ—ˆμŠ΅λ‹ˆκΉŒ?

μ§ˆλ¬Έμ„ λ”°λ₯΄μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ‹€μ‹œ μ„€λͺ…ν•΄ μ£Όμ‹œκ² μŠ΅λ‹ˆκΉŒ?

@innovia Nevermind, λ‚˜λŠ” 그것을 μ•Œμ•„ λƒˆμŠ΅λ‹ˆλ‹€. κ·Έλƒ₯ 달렀야 ν–ˆμ–΄

kubectl create -f tiller.yaml
helm init --upgrade --service-account tiller

이것은 λ‚˜λ₯Ό μœ„ν•΄ μΌν–ˆμŠ΅λ‹ˆλ‹€.

kubectl --namespace kube-system create serviceaccount tiller
kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount = kube- system : tiller
helm init --service-account tiller --upgrade

λ‚˜λŠ” "Deploy Tiller in a namespace, limited to deploying resources only in that namespace"에 λŒ€ν•œ 곡식 Helm λ¬Έμ„œ λ₯Ό λ”°λ₯΄κ³  μžˆμŠ΅λ‹ˆλ‹€. λ‚΄ bash μŠ€ν¬λ¦½νŠΈλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

Namespace="$1"

kubectl create namespace $Namespace
kubectl create serviceaccount "tiller-$Namespace" --namespace $Namespace
kubectl create role "tiller-role-$Namespace" /
    --namespace $Namespace /
    --verb=* /
    --resource=*.,*.apps,*.batch,*.extensions
kubectl create rolebinding "tiller-rolebinding-$Namespace" /
    --namespace $Namespace /
    --role="tiller-role-$Namespace" /
    --serviceaccount="$Namespace:tiller-$Namespace"

helm upgrade μ‹€ν–‰ν•˜λ©΄ λ‹€μŒ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.

였λ₯˜ : μ—…κ·Έλ ˆμ΄λ“œ μ‹€νŒ¨ : configmapsλŠ” κΈˆμ§€λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€ : μ‚¬μš©μž " system : serviceaccount : kube- system : default "λŠ” λ„€μž„ 슀페이슀 "kube-system"의 configmap을 λ‚˜μ—΄ ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

곡식 λ¬Έμ„œμ— 버그가 μžˆμŠ΅λ‹ˆκΉŒ? λ‚΄κ°€ 잘λͺ» μ½μ—ˆμŠ΅λ‹ˆκΉŒ?

helm init λŒ€ν•œ 전체 λͺ…령은 λ¬΄μ—‡μž…λ‹ˆκΉŒ? 이것에 λŒ€ν•΄ λ³„λ„μ˜ 티켓을 μ—΄ 수 μžˆμŠ΅λ‹ˆκΉŒ?

@bacongobbler μ—¬κΈ°λ‘œ 이슈 이동 https://github.com/helm/helm/issues/4933

μœ„λŠ” μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ μ—¬μ „νžˆ 점점

namespaces "default" is forbidden: User "system:serviceaccount:kube-system:default" cannot get namespaces in the namespace "default"

μ•„λž˜ λͺ…령을 λ”°λ₯΄μ‹­μ‹œμ˜€

helm init --service-account tiller --upgrade -i registry.cn-hangzhou.aliyuncs.com/google_containers/ tiller : v2.14.0 --stable-repo-url https : //kubernetes.oss-cn-hangzhou.aliyuncs .com / charts

ν•„μš”ν•œ 것은 κΈ°λ³Έ μ„œλΉ„μŠ€ 계정을 톡해 κΈ°λ³Έ λ„€μž„ μŠ€νŽ˜μ΄μŠ€μ— λ¦¬μ†ŒμŠ€λ₯Ό μ„€μΉ˜ν•  μˆ˜μžˆλŠ” μ•‘μ„ΈμŠ€ κΆŒν•œμ„ λΆ€μ—¬ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. https://github.com/kubernetes/helm/blob/master/docs/service_accounts.md μ°Έμ‘°

파일 이름은 이제 rbac.md 이고 λ§ν¬λŠ” https://github.com/helm/helm/blob/master/docs/rbac.md에 μžˆμŠ΅λ‹ˆλ‹€.

ν‹ΈλŸ¬λ₯Ό 배포 ν•  κΆŒν•œμ΄ μ—†κΈ° λ•Œλ¬Έμ— 계정을 μΆ”κ°€ν•˜μ„Έμš”.

kubectl --namespace kube-system create serviceaccount tiller

kubectl create clusterrolebinding tiller-cluster-rule \
 --clusterrole=cluster-admin --serviceaccount=kube-system:tiller

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

μ½˜μ†” 좜λ ₯ :

serviceaccount "tiller" created
clusterrolebinding "tiller-cluster-rule" created
deployment "tiller-deploy" patched

그런 λ‹€μŒ μ•„λž˜ λͺ…령을 μ‹€ν–‰ν•˜μ—¬ ν™•μΈν•˜μ‹­μ‹œμ˜€.

helm list
helm repo update
helm install --name nginx-ingress stable/nginx-ingress

경운기 μ„€μΉ˜ λ¬Έμ„œλ₯Όμ΄ μ •ν™•ν•œ μ§€μΉ¨μœΌλ‘œ μ—…λ°μ΄νŠΈν•˜λ©΄ 쒋을 κ²ƒμž…λ‹ˆλ‹€.
λ‚˜λŠ” λ‹€μŒκ³Ό 같은 yaml을 가지고 μžˆμ—ˆλ‹€.

apiVersion: v1
kind: ServiceAccount
metadata:
  name: tiller
  namespace: kube-system
---

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

λ‚΄κ°€ λ§žλ‹€λ©΄μ΄ yamlμ—μ„œ tiller deployment κ°€ λˆ„λ½ λ˜μ—ˆλ‚˜μš”?

helm init --upgrade --service-account tiller

μœ„μ˜ λͺ…령은이 문제λ₯Ό ν•΄κ²°ν•©λ‹ˆλ‹€. μ²˜μŒμ—λŠ”μ΄ 단계λ₯Ό 적극 ꢌμž₯ν•©λ‹ˆλ‹€. :)

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰