Helm: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ "рд╕рд┐рд╕реНрдЯрдо: serviceaccount: kube- рд╕рд┐рд╕реНрдЯрдо: рдбрд┐рдлрд╝реЙрд▓реНрдЯ" рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рдирд╛рдо рд╕реНрдерд╛рди "рдбрд┐рдлрд╝реЙрд▓реНрдЯ" рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 12 рдирд╡ре░ 2017  ┬╖  30рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: 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"}

рдХрд┐рд╕реА рднреА рдорджрдж рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рдПрдЧреА, рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЯрд┐рд▓рд░ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЦрд╛рддрд╛ рдЬреЛрдбрд╝реЗрдВ:

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

@ flyer103

рдпрд╣ рдЕрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
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.d рджреЗрдЦреЗрдВ

рдирдорд╕реНрддреЗ, @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

рдФрд░ рдлрд┐рд░ рдореЗрд░реЗ рдЯрд┐рд▓рд░ рдХреЛ init рдХрд░реЗрдВ:

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

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░?
рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдзрдиреНрдпрд╡рд╛рдж!

@ рдиреЛрдкреНрд░реЛрдо рдпрд╣ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ

рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЯрд┐рд▓рд░ рдХреА рддреИрдирд╛рддреА рдХреЛ рд╣рдЯрд╛ рджреЗрдВ

рдЯрд┐рд▓рд░ рдХреЗ рд▓рд┐рдП рдпреЗ 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 рдХреЙрдиреНрдлрд┐рдЧ рдкрд░ рдбрд┐рд▓реАрдЯ (рдпрд╕ рдбрд┐рд▓реАрдЯ) рдЪрд▓рд╛рдПрдВ
рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдПрдБ
рддрдм рдкрддрд╡рд╛рд░ init --upgrad рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓реЗрдВ

рдЖрдкрдХреЛ рдФрд░ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

@ рдЬрд┐рдиреЛрд╡рд┐рдпрд╛
рд╡рд╛рд╣реН рднрдИ рд╡рд╛рд╣! рдзрдиреНрдпрд╡рд╛рдж, рдореИрдВрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рджрд┐рдпрд╛ рд╣реИред
рдЖрдкрдХрд╛ рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!

рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЦреБрд╢ :)

@ рдЬрд┐рдиреЛрд╡рд┐рдпрд╛
рд╢рд╛рдирджрд╛рд░ рдкреЛрд╕реНрдЯ! ЁЯШД

рдзрдиреНрдпрд╡рд╛рдж!

рдКрдкрд░ рдЕрднреА рднреА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ

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 рдПрдХ рдЯрди рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рд▓реЗрдХрд┐рди рд╣рд░ рдмрд╛рд░, рд╣рдо рдПрдХ рдирдП рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ рддреИрдирд╛рдд рд╣реЛрддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдХреНрдпрд╛ рдЕрд╕реБрд╡рд┐рдзрд╛ рд╣реИ!

@ рдПрдВрдЯреНрд░рд╛рди .89
рдпрджрд┐ рдЖрдк рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЯрд┐рд▓рд░ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдирд┐рд░реНрджреЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдРрд╕рд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

  • рдЯрд┐рд▓рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░реНрд╡рд┐рдХрд▓ рдмрдирд╛рдПрдБ
  • рдКрдкрд░ рдмрдирд╛рдИ рдЧрдИ ServiceAccout рдХреЗ рд▓рд┐рдП рдПрдХ рднреВрдорд┐рдХрд╛ рдмрд╛рдБрдзреЗрдВ (рдХреНрд▓рд╕реНрдЯрд░-рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рднреВрдорд┐рдХрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)
  • 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: ""

рдлрд┐рд░ resourses рдмрдирд╛рдПрдБ:

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

рдЗрд╕ рдпрд╛рдореНрд▓ рдиреЗ рдЕрднреА рддрдХ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдпрджрд┐ рдЖрдкрдХреЗ рдХреЛрдИ рдкреНрд░рд╢реНрди рд╣реИрдВ, рддреЛ рдЯрд┐рдкреНрдкрдгреА рдХрд░реЗрдВред

@ykfq рдореБрдЭреЗ рдЯрд┐рд▓рд░ рдлреБрд▓ рдХреНрд▓рд╕реНрдЯрд░ рдПрдбрдорд┐рди рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рджреЗрдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд▓рд┐рдП рдХреБрдЫ рдФрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдореИрдВ рдХреЗрд╡рд▓ рдирд╛рдо рд╕реНрдерд╛рди рдкрд░ рдЕрднрд┐рдирдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд┐рд▓рд░ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЕрднрд┐рдирдп рдХрд░рдиреЗ рджрд┐рдпрд╛ред

рд▓реЗрдХрд┐рди рд╣рдореЗрд╢рд╛ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ (рдХреЙрдирдХреЛрд░реНрд╕ рдХреА рддреИрдирд╛рддреА рдХрд░ рд░рд╣рд╛ рдерд╛):

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"

рдЙрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ рдЗрд╕рдХрд╛ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░? рдореИрдВрдиреЗ рдХреБрдЫ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛, RACAC рдХреЗ рд╕рд╛рде рдкреВрд░рд╛ 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

рдкрддрд╡рд╛рд░ init --upgrad --service- рдЦрд╛рддрд╛ рдЯрд┐рд▓рд░

@brunoban helm v3 рдЯрд┐рд▓рд░ рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛ рддрд╛рдХрд┐ рдЬреЛ рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдЖрдпрд╛ рдЙрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реЛ

@inovia рдУрд╣ ... рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдерд╛ рдХрд┐ред рдЧреЛрдирд╛ рдЕрдм рдЧрддрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдардиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред рдзрдиреНрдпрд╡рд╛рдж!

рддрдм рдкрддрд╡рд╛рд░ init --upgrad рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓реЗрдВ

@innovia rbac config рдлрд╛рдЗрд▓ рдХрд╣рд╛рдБ рд░рдЦреЗрдВ?

@cjbottaro рдХреНрдпрд╛ рдЖрдкрдиреЗ рд╡рд╣ рдкреЛрд╕реНрдЯ рдкрдврд╝реА рд╣реИ рдЬреЛ рдореИрдВрдиреЗ рд▓рд┐рдЦреА рд╣реИ рдФрд░ рдкреНрд░рддрд┐ рдирд╛рдо рд╕реНрдерд╛рди рдкрд░ рдЯрд┐рд▓рд░ рд▓рдЧрд╛рдирд╛ рд╣реИ ?

рдореИрдВ рдЖрдкрдХреЗ рдкреНрд░рд╢реНрди рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рддрд╛, рдХреНрдпрд╛ рдЖрдк рдХреГрдкрдпрд╛ рдкреБрдирдГ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ?

@inovia рдиреЗрд╡рд░рдорд╛рдЗрдВрдб, рдореБрдЭреЗ рд▓рдЧрд╛ред рдмрд╕ рджреМрдбрд╝рдирд╛ рдерд╛

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

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛:

kubectl - namespace kube-system рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд┐рд╕рд┐рдХ рдЯрд┐рд▓рд░
kubectl рдХреНрд▓рд╕реНрдЯрд░-рдмрд╛рдЙрдВрдбрд┐рдВрдЧ рдЯрд┐рд▓рд░ рдмрдирд╛рдПрдБ --clusterrole рдХреНрд▓рд╕реНрдЯрд░-рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ --serviceaccount = kube- рд╕рд┐рд╕реНрдЯрдо: Tiller
рдкрддрд╡рд╛рд░ init --service- рдЦрд╛рддрд╛ рдЯрд┐рд▓рд░ - рдЕрдкрдЧреНрд░реЗрдб

рдореИрдВ рдПрдХ рдирд╛рдо рд╕реНрдерд╛рди рдореЗрдВ рдЯрд┐рд▓рд░ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╣реЗрд▓реНрдо

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 рдЪрд▓рдиреЗ рд╕реЗ рдореБрдЭреЗ рдирд┐рдореНрди рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ:

рддреНрд░реБрдЯрд┐: UPGRADE рд╡рд┐рдлрд▓: рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рд╣реИ: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ " рд╕рд┐рд╕реНрдЯрдо: serviceaccount : kube- рд╕рд┐рд╕реНрдЯрдо: рдбрд┐рдлрд╝реЙрд▓реНрдЯ " рдирд╛рдорд╕реНрдерд╛рди рдореЗрдВ рдХреЙрдиреНрдлреИрдк рдХреЛ "kube-system" рд╕реВрдЪреАрдмрджреНрдз рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ

рдХреНрдпрд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдХреЛрдИ рдмрдЧ рд╣реИ? рдХреНрдпрд╛ рдореИрдВрдиреЗ рдЗрд╕реЗ рдЧрд▓рдд рдкрдврд╝рд╛ рд╣реИ?

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"

рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЖрджреЗрд╢ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ

рдкрддрд╡рд╛рд░ init --service-рдЦрд╛рддрд╛ рдЯрд┐рд▓рд░ --upgrade рдореИрдВ registry.cn-hangzhou.aliyuncs.com/google_containers/ рдЯрд┐рд▓рд░: v2.14.0 -рд╕реНрдерд┐рд░-рд░реЗрдкреЛ-рдпреВрдЖрд░рдПрд▓ https: //kubernetes.oss-cn-hangzhou.aliyuncs .com / рдЪрд╛рд░реНрдЯ

рдЖрдкрдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдирд╛рдо рд╕реНрдерд╛рди рдореЗрдВ рд╕рдВрд╕рд╛рдзрди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд┐рд▓рд░ (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕реЗрд╡рд╛ рдЦрд╛рддреЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред Https://github.com/kubernetes/helm/blob/master/docs/service_accounts.d рджреЗрдЦреЗрдВ

рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рдЕрдм 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

рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЯрд┐рд▓рд░ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдбреЙрдХреНрд╕ рдХреЛ рдЗрди рд╕рдЯреАрдХ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдП
рдореЗрд░реЗ рдкрд╛рд╕ рдирд┐рдореНрди рдпрдорд▓ рдерд╛

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 рдХрдореА рдереА?

рдкрддрд╡рд╛рд░ init --upgrad --service- рдЦрд╛рддрд╛ рдЯрд┐рд▓рд░

рдЙрдкрд░реЛрдХреНрдд рдЖрджреЗрд╢ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдкрд╣рд▓реЗ рдЗрд╕ рдЪрд░рдг рдХреА рдЕрддреНрдпрдзрд┐рдХ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░рддрд╛ рд╣реИ :)

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

hobti01 picture hobti01  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dkirrane picture dkirrane  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

danielcb picture danielcb  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

robsonpeixoto picture robsonpeixoto  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

InAnimaTe picture InAnimaTe  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ