テスト用にKubernetes Dashboardを立てたい場合のメモ。kubectl patchを使ってみたかっただけ。推奨しないw
Kubernetes Dashboardのインストール
kubernetesのレポジトリにあるmanifestをそのまま入れる。alternativeを使っているのはHTTPでアクセスしたいから。
$ kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/master/aio/deploy/alternative.yaml
serviceを見るとClusterIPになっている。
$ kubectl -n kubernetes-dashboard get service kubernetes-dashboard NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes-dashboard ClusterIP 10.101.100.92 <none> 80/TCP 6m
NodePort:30080に変えたり、認証スキップ可能にしたり。patchコマンドを使う。
$ kubectl -n kubernetes-dashboard patch service kubernetes-dashboard -p '{"spec":{"type": "NodePort"}}' $ kubectl -n kubernetes-dashboard patch service kubernetes-dashboard --type='json' -p='[{"op": "replace", "path": "/spec/ports/0/nodePort", "value": 30080}]' $ kubectl -n kubernetes-dashboard patch deploy kubernetes-dashboard --type='json' -p='[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--enable-skip-login"},{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--disable-settings-authorizer"},]'
ちゃんと変更されている
$ kubectl -n kubernetes-dashboard get service kubernetes-dashboard NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes-dashboard NodePort 10.101.100.92 <none> 80:30080/TCP 10m $ kubectl -n kubernetes-dashboard get deploy kubernetes-dashboard -o json| jq '.spec.template.spec.containers[0].args' [ "--namespace=kubernetes-dashboard", "--enable-insecure-login", "--enable-skip-login", "--disable-settings-authorizer" ]
ローリングアップデートしてあとはブラウザで確認
$kubectl -n kubernetes-dashboard rollout restart deployment kubernetes-dashboard
おまけ
権限も無視するならばこれで。
$ kubectl delete clusterRoleBinding kubernetes-dashboard $ cat <<EOF | kubectl apply -f - apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: kubernetes-dashboard namespace: kubernetes-dashboard roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: kubernetes-dashboard namespace: kubernetes-dashboard EOF