[解決済み] kubernetes dashboardにサインインする方法を教えてください。
質問
kubeadmとkubeletをv1.8.0にアップグレードしたところです。また、ダッシュボードのインストールは公式の ドキュメント .
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml
その後、ダッシュボードを起動するために
$ kubectl proxy --address="192.168.0.101" -p 8001 --accept-hosts='^*$'
その後、幸いなことに、ダッシュボードにアクセスすることができました。 http://192.168.0.101:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
このようなログインページにリダイレクトされましたが、これは初めて出会いました。 認証方法が2種類あるようです。
をアップロードしてみました。
/etc/kubernetes/admin.conf
をkubeconfigとして指定しましたが、失敗しました。それから
kubeadm token list
にサインインしましたが、また失敗しました。
問題は、ダッシュボードにサインインする方法です。以前より多くのセキュリティ機構が追加されたようです。ありがとうございます。
解決方法を教えてください。
<ブロッククオートリリース1.7以降、Dashboardは以下の条件に基づくユーザー認証に対応しています。
-
Authorization: Bearer <token>
ヘッダは、Dashboard へのすべてのリクエストで渡されます。リリース1.6からサポートされています。最も高い優先度を持ちます。存在する場合、ログインビューは表示されません。 - ベアラートークン Dashboardで使用可能な ログインビュー .
- ユーザー名/パスワード Dashboardで使用可能な ログインビュー .
- Kubeconfig Dashboardで使用可能なファイル ログインビュー .
トークン
ここで
Token
は
Static Token
,
Service Account Token
,
OpenID Connect Token
から
Kubernetes認証中
ではなく、kubeadm
Bootstrap Token
.
kubectlを使うと、kubernetesにデフォルトで作成されているサービスアカウント(デプロイメントコントローラなど)を取得することができます。
$ kubectl -n kube-system get secret
# All secrets with type 'kubernetes.io/service-account-token' will allow to log in.
# Note that they have different privileges.
NAME TYPE DATA AGE
deployment-controller-token-frsqj kubernetes.io/service-account-token 3 22h
$ kubectl -n kube-system describe secret deployment-controller-token-frsqj
Name: deployment-controller-token-frsqj
Namespace: kube-system
Labels: <none>
Annotations: kubernetes.io/service-account.name=deployment-controller
kubernetes.io/service-account.uid=64735958-ae9f-11e7-90d5-02420ac00002
Type: kubernetes.io/service-account-token
Data
====
ca.crt: 1025 bytes
namespace: 11 bytes
token: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJkZXBsb3ltZW50LWNvbnRyb2xsZXItdG9rZW4tZnJzcWoiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZGVwbG95bWVudC1jb250cm9sbGVyIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiNjQ3MzU5NTgtYWU5Zi0xMWU3LTkwZDUtMDI0MjBhYzAwMDAyIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmRlcGxveW1lbnQtY29udHJvbGxlciJ9.OqFc4CE1Kh6T3BTCR4XxDZR8gaF1MvH4M3ZHZeCGfO-sw-D0gp826vGPHr_0M66SkGaOmlsVHmP7zmTi-SJ3NCdVO5viHaVUwPJ62hx88_JPmSfD0KJJh6G5QokKfiO0WlGN7L1GgiZj18zgXVYaJShlBSz5qGRuGf0s1jy9KOBt9slAN5xQ9_b88amym2GIXoFyBsqymt5H-iMQaGP35tbRpewKKtly9LzIdrO23bDiZ1voc5QZeAZIWrizzjPY5HPM1qOqacaY9DcGc7akh98eBJG_4vZqH2gKy76fMf0yInFTeNKr45_6fWt8gRM77DQmPwb3hbrjWXe1VvXX_g
キューブコンフィグ
ダッシュボードでは、kubeconfigファイルに記述されたユーザが
username & password
または
token
が、しかし
admin.conf
を持つだけです。
client-certificate
. 設定ファイルを編集して、上記の方法で抽出したトークンを追加することができます。
$ kubectl config set-credentials cluster-admin --token= ベアラートークン
代替案(本番では推奨しません)
ここでは、認証を回避する方法を2つ紹介しますが、注意して使用してください。
HTTPでダッシュボードをデプロイする
$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/alternative/kubernetes-dashboard.yaml
ダッシュボードは次の場所で読み込むことができます。
http://localhost:8001/ui
と
kubectl proxy
.
Dashboardのサービスアカウントに管理者権限を付与する
$ cat <<EOF | kubectl create -f -
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: kubernetes-dashboard
labels:
k8s-app: kubernetes-dashboard
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: kubernetes-dashboard
namespace: kube-system
EOF
その後で スキップ をクリックすると、ダッシュボードにアクセスできます。
ダッシュボードv1.10.1以降を使用している場合は、ダッシュボードにも
--enable-skip-login
をデプロイのコマンドライン引数に追加します。に追加することで行うことができます。
args
で
kubectl edit deployment/kubernetes-dashboard --namespace=kube-system
.
例
containers:
- args:
- --auto-generate-certificates
- --enable-skip-login # <-- add this line
image: k8s.gcr.io/kubernetes-dashboard-amd64:v1.10.1
関連
-
[解決済み】Kubernetes: kubectl run: コマンドが見つかりません。
-
[解決済み] KubernetesのジョブにおけるbackoffLimitの理解
-
[解決済み] ApacheのMesosとGoogleのKubernetesの違いとは?
-
[解決済み] KubernetesのClusterIP、NodePort、LoadBalancerのサービスタイプの違いとは?
-
[解決済み】"ImagePullBackOff "をデバッグするにはどうしたらいいですか?
-
[解決済み】gcloudとminikubeの間でkubectlのクラスタを切り替える方法
-
[解決済み] 別のネームスペースにあるサービス
-
[解決済み] KubernetesのデプロイメントとStatefulSetsの比較
-
[解決済み] kubernetes dashboardにサインインする方法を教えてください。
-
[解決済み] Kubernetes上でファイルから生成されたシークレットを更新するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] KubernetesのジョブにおけるbackoffLimitの理解
-
[解決済み] kubectlで現在のコンテキストのconfigの詳細を表示するにはどうすればよいですか?
-
[解決済み] Kubernetes ReplicaFailure FailedCreate でもイベントなし
-
kubernetesでContainerCreating状態の原因究明と解決方法
-
[解決済み] Helmを以前のリリースにロールバックする
-
[解決済み] kubectlのポートフォワードはどのように動作しますか?
-
[解決済み] kubernetesのデプロイメントで失敗したPodを再起動する方法
-
[解決済み] kubernetesのPodが "CrashLoopBackOff "でクラッシュし続けるのですが、ログが見つかりません。
-
[解決済み】"ImagePullBackOff "をデバッグするにはどうしたらいいですか?
-
[解決済み] Kubernetes上でファイルから生成されたシークレットを更新するにはどうすればよいですか?