Google Kubernetes Engineにクラスタをインストールしました。
そして、名前空間「ステージング」を作成しました
$ kubectl get namespaces
default Active 26m
kube-public Active 26m
kube-system Active 26m
staging Active 20m
次に、ステージング名前空間で動作するように切り替えました
$ kubectl config use-context staging
$ kubectl config current-context
staging
次に、ステージング名前空間にhelmを使用してpostgresqlをインストールしました
helm install --name staging stable/postgresql
しかし、私は得ました:
エラー:ステージングのリリースに失敗しました:名前空間「staging」は禁止されています:ユーザー「system:serviceaccount:kube-system:default」は名前空間「staging」で名前空間を取得できません:不明なユーザー「system:serviceaccount:kube-system:default」
どういう意味ですか..??それを動作させる方法.. ??
ありがとう..
クラスターでRBACが有効になっているため、tiller
ポッドに十分な権限がないようです。
ティラーで必要なRBAC権限が不足しているdefault
ServiceAccountを使用しています。
ClusterRole、ClusterRoleBinding、およびServiceAccountを作成するために必要なすべてのこと。それらを使用して、ポッドに必要な許可を与えることができます。
この手順に従ってください
_1。 ClusterRole tiller
を作成します
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: tiller
rules:
- apiGroups: ["*"]
resources: ["*"]
verbs: ["*"]
注:ここでは完全な許可を使用しています。
_2。 kube-system
名前空間にServiceAccount tiller
を作成します
$ kubectl create sa tiller -n kube-system
_3。 ClusterRoleBinding tiller
を作成します
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
name: tiller
subjects:
- kind: ServiceAccount
name: tiller
namespace: kube-system
apiGroup: ""
roleRef:
kind: ClusterRole
name: tiller
apiGroup: rbac.authorization.k8s.io
次に、Tiller DeploymentでこのServiceAccountを使用する必要があります。
すでに持っているので、それを編集します
$ kubectl edit deployment -n kube-system tiller-deploy
PodSpecでserviceAccountName
をtiller
に設定します
[〜#〜] rbac [〜#〜] の詳細を読む