今日はMicroK8sにOperatorインストールを試みました。MicroK8sはMicroK8sをMacOSにインストールしてみるでインストール済みですので、よろしければご参照ください。
- はじめに
- kubectlのインストール
- OLMのインストール
- system:auth-delegatorの作成
- extension-apiserver-authentication-readerの作成
- OLMのインストール
- Operatorのインストール
はじめに
OLMは以下のコマンドでインストールできますが、MicroK8sのコマンドはmicrok8s.kubectlなのでスクリプト実行が失敗します。従って、kubectlコマンドをインストールしてからOLMをインストールします。(スクリプトのkubectlコマンドをmicrok8s.kubectlコマンドに変更するでも構いません。)
ubuntu@microk8s-vm:~$ curl -sL https://github.com/operator-framework/operator-lifecycle-manager/releases/download/0.15.1/install.sh | bash -s 0.15.1
kubectlのインストール
kubectlコマンドをインストールします。
ubuntu@microk8s-vm:~$ curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 41.9M 100 41.9M 0 0 1006k 0 0:00:42 0:00:42 --:--:-- 1016k ubuntu@microk8s-vm:~$ chmod +x ./kubectl ubuntu@microk8s-vm:~$ sudo mv ./kubectl /usr/local/bin/kubectl
以下のコマンドでMicroK8sのconfigを確認し、~/.kube/configにコピーします。
ubuntu@microk8s-vm:~$ microk8s.kubectl config view
上記の対応だけだと以下のエラーが発生するので、clusters.cluster.insecure-skip-tls-verify: true
を追加します。
Unable to connect to the server: x509: certificate signed by unknown authority
最終的な~/.kube/configは以下の通りです。
apiVersion: v1 clusters: - cluster: insecure-skip-tls-verify: true server: https://127.0.0.1:16443 name: microk8s-cluster contexts: - context: cluster: microk8s-cluster user: admin name: microk8s current-context: microk8s kind: Config preferences: {} users: - name: admin user: password: パスワード(インストール時に割り当てられています。) username: admin
OLMのインストール
以下のコマンドでインストールします。
ubuntu@microk8s-vm:~$ curl -sL https://github.com/operator-framework/operator-lifecycle-manager/releases/download/0.15.1/install.sh | bash -s 0.15.1
しかし、CSVのpackageserverのインストールが失敗します。一応Podは作成されるのですが、TerminateとContainerCreatingを永遠に繰り返します。
CSV "packageserver" failed to reach phase succeeded
eventを確認すると、以下のエラーが確認できました。
35m Warning APIServiceResourceIssue clusterserviceversion/packageserver clusterrole.rbac.authorization.k8s.io "system:auth-delegator" not found 3m30s Warning APIServiceResourceIssue clusterserviceversion/packageserver role.rbac.authorization.k8s.io "extension-apiserver-authentication-reader" not found
どうやらKubernetesにデフォルトで設定されるroleがMicroK8sでは設定されていないようですので、system:auth-delegatorとextension-apiserver-authentication-readerを作成します。
system:auth-delegatorの作成
以下のyamlを使って、clusterroleであるsystem:auth-delegatorを作成します。
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: annotations: rbac.authorization.kubernetes.io/autoupdate: "true" labels: kubernetes.io/bootstrapping: rbac-defaults managedFields: - apiVersion: rbac.authorization.k8s.io/v1 fieldsType: FieldsV1 fieldsV1: f:metadata: f:annotations: .: {} f:rbac.authorization.kubernetes.io/autoupdate: {} f:labels: .: {} f:kubernetes.io/bootstrapping: {} f:rules: {} manager: kube-apiserver operation: Update name: system:auth-delegator rules: - apiGroups: - authentication.k8s.io resources: - tokenreviews verbs: - create - apiGroups: - authorization.k8s.io resources: - subjectaccessreviews verbs: - create
extension-apiserver-authentication-readerの作成
以下のyamlを使って、system:auth-delegator roleを作成します。
apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: annotations: openshift.io/reconcile-protect: "false" labels: kubernetes.io/bootstrapping: rbac-defaults name: extension-apiserver-authentication-reader namespace: kube-system rules: - apiGroups: - "" attributeRestrictions: null resourceNames: - extension-apiserver-authentication resources: - configmaps verbs: - get
OLMのインストール
以下のコマンドでリトライすると、エラーなくインストールが完了しました。PodがTerminateとCreatingを繰り返すということも無くなりました。
ubuntu@microk8s-vm:~$ curl -sL https://github.com/operator-framework/operator-lifecycle-manager/releases/download/0.15.1/install.sh | bash -s 0.15.1 customresourcedefinition.apiextensions.k8s.io/catalogsources.operators.coreos.com created customresourcedefinition.apiextensions.k8s.io/clusterserviceversions.operators.coreos.com created customresourcedefinition.apiextensions.k8s.io/installplans.operators.coreos.com created customresourcedefinition.apiextensions.k8s.io/operatorgroups.operators.coreos.com created customresourcedefinition.apiextensions.k8s.io/subscriptions.operators.coreos.com created namespace/olm created namespace/operators created serviceaccount/olm-operator-serviceaccount created clusterrole.rbac.authorization.k8s.io/system:controller:operator-lifecycle-manager unchanged clusterrolebinding.rbac.authorization.k8s.io/olm-operator-binding-olm unchanged deployment.apps/olm-operator created deployment.apps/catalog-operator created clusterrole.rbac.authorization.k8s.io/aggregate-olm-edit unchanged clusterrole.rbac.authorization.k8s.io/aggregate-olm-view unchanged operatorgroup.operators.coreos.com/global-operators created operatorgroup.operators.coreos.com/olm-operators created clusterserviceversion.operators.coreos.com/packageserver created catalogsource.operators.coreos.com/operatorhubio-catalog created Waiting for deployment "olm-operator" rollout to finish: 0 of 1 updated replicas are available... deployment "olm-operator" successfully rolled out Waiting for deployment "catalog-operator" rollout to finish: 0 of 1 updated replicas are available... deployment "catalog-operator" successfully rolled out Package server phase: Installing Package server phase: Succeeded deployment "packageserver" successfully rolled out
Operatorのインストール
せっかくOLMをインストールしたので、試しにOperatorHubからGrafana Operatorをインストールしてみます。
ubuntu@microk8s-vm:~$ kubectl create -f https://operatorhub.io/install/grafana-operator.yaml namespace/my-grafana-operator created operatorgroup.operators.coreos.com/operatorgroup created subscription.operators.coreos.com/my-grafana-operator created ubuntu@microk8s-vm:~$ kubectl get csv -n my-grafana-operator NAME DISPLAY VERSION REPLACES PHASE grafana-operator.v3.2.0 Grafana Operator 3.2.0 Installing
少し待つと、インストールが完了しました。
ubuntu@microk8s-vm:~$ kubectl get csv -n my-grafana-operator NAME DISPLAY VERSION REPLACES PHASE grafana-operator.v3.2.0 Grafana Operator 3.2.0 Succeeded
本当はこの後Grafanaリソースを作成しますが、OLMが動いていることが確認できたので、今日はここまでとします。
以上です。