Weblog by shuuji3

Software Engineering

MicroK8sでcluster-admin Roleを使えるようにする

この記事では、MicroK8s上でcluster-adminのClusterRoleを利用できるようにする方法を説明します。

TL;DR

sudo mirok8s enable rbac

RBAC is not enabled by default on MicroK8s

MicroK8sでは、デフォルトではRBACが有効ではありません。

sudo microk8s status
microk8s is running
high-availability: yes
  datastore master nodes: xxx.yyy.zzz.www
  datastore standby nodes: xxx.yyy.zzz.www
addons:
  enabled:
(...)
  disabled:
(...)
    rbac                 # Role-Based Access Control for authorisation

そのため、cluster-adminのClusterRoleを使用するには、初めにRBACを使えるようにする必要があります。

At the past, we need to install RBAC manually

なお、以前は、以下のIssueに書かれているように、手動でリソースを作成する必要があったようです。

RBAC: cluster-admin not installed by default · Issue #84 · ubuntu/microk8s

最近のバージョンのKubernetesではRBACを使うのが当たり前になっているようだったので、MicroK8sでもデフォルトで使えるのかと思っていましたが、違いました。

In case of kind

たとえば、kindでは、デフォルトで有効になっているので、初めからcluster-adminが存在します。

k get clusterrole | grep admin
(...)
admin                                                                  2020-09-19T12:53:24Z
cluster-admin                                                          2020-09-19T12:53:23Z
(...)

Enable RBAC add-on

現在では、RBACは、アドオンの有効化だけで利用できるようになっています。

sudo microk8s enable rbac

enableサブコマンドでrbacプラグインを有効にします。

Enabling RBAC
Reconfiguring apiserver
Adding argument --authorization-mode to nodes.
Configuring node xxx.yyy.zzz.www
Configuring node xxx.yyy.zzz.www
Configuring node xxx.yyy.zzz.www
RBAC is enabled

クラスタに加入しているワーカーノードも同時に設定されます。

Confirm cluster-admin has been enabled

k get clusterrole

ClusterRoleを確認すると、さまざまなコンポーネント向けのClusterRoleが大量に追加されていて、その中にcluster-adminロールも追加されていることが分かります。

(...)
cluster-admin                                                          2020-09-26T00:46:39Z
admin                                                                  2020-09-26T00:46:51Z
(...)