GKEのサービスアカウント紐付けでちょっとハマるなど

GKEのクラスタをサービスアカウントに紐付けて作った際、helmを使おうとすると"system:serviceaccount:kube-system:default" cannot list configmaps in the namespace "default"みたいなエラーが出て焦るなど。キーワードからして付加する権限の問題か?と思い色々いじってみてもダメ。

ふと冷静になってググってみると、どうやらここで言うserviceaccountというのはKubernetes上のリソースのことらしい。つまり、kube-systemネームスペースのdefaultというservice accountリソースのことなのだ。kubectl -n kube-system describe serviceaccount/default

で、結局はそいつがAPIの通信を行う上での認証のために手順がいるという話なのだ。

kubernetes.io

公式Docにも何通りかやり方が示されているが、特に何も考えずエイヤッとやるなら↓だろうか。

$ kubectl create clusterrolebinding add-on-cluster-admin \
  --clusterrole=cluster-admin \
  --serviceaccount=kube-system:default

clusterrolebindingなるリソースにadd-on-cluster-adminという名前でcluster-adminとしてkube-system:defaultを読み込むものを用意してやれば良い。

・・・なんかまだまだ知らないリソースがいっぱいあって、Kubernetesは奥が深い。

入門 Kubernetes

入門 Kubernetes

  • 作者: Brendan Burns,Kelsey Hightower,Joe Beda,松浦隼人
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2018/03/22
  • メディア: 単行本(ソフトカバー)
  • この商品を含むブログを見る


昨日眠れなかったし明日は勉強会の発表あるし、今日こそはちゃっちゃと寝ないと・・・