Kubernetesダッシュボードにサインインするにはどうすればいいですか? 質問する

Kubernetesダッシュボードにサインインするにはどうすればいいですか? 質問する

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.confkubeconfig としてアップロードしようとしましたが、失敗しました。次に、から取得したトークンを使用しkubeadm token listてサインインしようとしましたが、再び失敗しました。

質問は、ダッシュボードにどうやってサインインするかということです。以前よりも多くのセキュリティ メカニズムが追加されたようです。ありがとうございます。

ベストアンサー1

リリース 1.7 以降、ダッシュボードは次の基準に基づいてユーザー認証をサポートします。

Githubのダッシュボード

トークン

ここでTokenStatic Token、、Service Account TokenからOpenID Connect TokenKubernetes 認証ただし、 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

Kubernetesの設定

ダッシュボードでは、kubeconfig ファイル内のユーザーが または のいずれかを持っている必要がありますusername & passwordtokenadmin.confしかありませんclient-certificate。 構成ファイルを編集して、上記の方法で抽出されたトークンを追加できます。

$ kubectl config 資格情報の設定 クラスター管理者 --token=ベアラートークン

代替案(本番環境では推奨されません)

認証をバイパスする方法は 2 つありますが、注意して使用してください。

HTTPでダッシュボードを展開する

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/alternative/kubernetes-dashboard.yaml

ダッシュボードは次の場所で読み込まれますhttp://localhost:8001/uikubectl proxy

ダッシュボードのサービスアカウントに管理者権限を付与する

$ 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

その後、Skipログイン ページのオプションを使用してダッシュボードにアクセスできます。

ダッシュボード バージョン v1.10.1 以降を使用している場合は、デプロイメントのコマンド ライン引数も追加する必要があります。これを行う--enable-skip-loginには、 に追加します。argskubectl 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

おすすめ記事