Kubernetes: ダッシュボードhttps無許可

作成日 2016年08月30日  ·  3コメント  ·  ソース: kubernetes/kubernetes

ダッシュボードバージョン:1.1
Kubernetesバージョン:1.3.6
オペレーティングシステム:ubuntu14.04
Goバージョン:1.6.2
kubernetesとダッシュボードをhttp://kubernetes.io/docs/getting-started-guides/ubuntu/としてデプロイします

ダッシュボードにアクセスできますhttp:// master-ip :8080 /
https:// master-ip :6443 /にアクセスすると、「Unauthorized」を返します。
どうして?

areapiserver

最も参考になるコメント

クラスタはHTTPSを介した安全な通信のために証明書を使用していると思います。 ここには2つの問題があります。

  1. ブラウザはルートCAを認識しないため、接続が安全であるとは信頼できません。 それをバイパスして、引き続き使用できます。 この部分はブロッカーではありません。 :)
    zrzut ekranu z 2016-09-15 15-50-35
  2. APIサーバーは、クライアントを承認するためにクライアント証明書/トークン/ユーザーとパス(構成によって異なります)が必要です。そうでない場合、 Unauthorizedが返されます。

必要なデータを簡単に提供できるため、curlで簡単に認証できます。
curl https://<MASTER_IP>/version --cacert ca.crt --cert admin.crt --key admin.key
curl https://<MASTER_IP>/version --header "Authorization: Bearer $TOKEN"`

ブラウザでは、それよりも複雑です。 ダッシュボードにアクセスするには、いくつかの方法があります。

  1. NodePortを使用してサービスを通じて公開し、 <MASTER_IP>:<NODE_PORT>でアクセスできます。 (危険な)
  2. ブラウザに証明書をインポートします。
  3. kubectl proxyを使用してhttp://127.0.0.1:8001/に移動します(バインドアドレスは変更できます)。 kubeconfigファイルが安全な接続を使用するように構成されている場合、SSLトンネリングを処理します。

2番目のオプションについて。 Firefoxを使用してそれを行う方法についていくつかの情報を提供できます。

  1. 生成されたCA証明書をブラウザにインポートします。
    zrzut ekranu z 2016-09-15 16-05-47
  2. ユーザー証明書をYour Certificatesにインポートします。 2つの別々の証明書crtkeyがある場合は、ブラウザの証明書ストアに直接インポートするのが簡単なので、それらをPFX/PKCS#12証明書にマージするのが最適です。 このページを使用することも、 opensslを使用して手動で行うこともできます。
    zrzut ekranu z 2016-09-15 16-09-44

証明書が正しく生成されている場合、HTTPS経由でAPIサーバーにアクセスしようとするとポップアップが表示されます。 ブラウザのキャッシュをクリアする必要があるかもしれません。
zrzut ekranu z 2016-09-15 16-12-04

ダッシュボードが表示されます。 :)
zrzut ekranu z 2016-09-15 16-14-16

ブラウザでベアトークンを使用する方法がわかりません。 おそらく、APIサーバーにリクエストを送信する前に、HTTPヘッダーにデータを追加するための手作業が必要になります。

もちろん、ユーザーを承認する他のオプションがあります。 Kubernetesは、ABAC、RBACなどをサポートしています。

全てのコメント3件

同じ問題があります。 そして、著者はまだそれを考慮していないのではないかと思います。
https://github.com/kubernetes/dashboard/issues/1116

クラスタはHTTPSを介した安全な通信のために証明書を使用していると思います。 ここには2つの問題があります。

  1. ブラウザはルートCAを認識しないため、接続が安全であるとは信頼できません。 それをバイパスして、引き続き使用できます。 この部分はブロッカーではありません。 :)
    zrzut ekranu z 2016-09-15 15-50-35
  2. APIサーバーは、クライアントを承認するためにクライアント証明書/トークン/ユーザーとパス(構成によって異なります)が必要です。そうでない場合、 Unauthorizedが返されます。

必要なデータを簡単に提供できるため、curlで簡単に認証できます。
curl https://<MASTER_IP>/version --cacert ca.crt --cert admin.crt --key admin.key
curl https://<MASTER_IP>/version --header "Authorization: Bearer $TOKEN"`

ブラウザでは、それよりも複雑です。 ダッシュボードにアクセスするには、いくつかの方法があります。

  1. NodePortを使用してサービスを通じて公開し、 <MASTER_IP>:<NODE_PORT>でアクセスできます。 (危険な)
  2. ブラウザに証明書をインポートします。
  3. kubectl proxyを使用してhttp://127.0.0.1:8001/に移動します(バインドアドレスは変更できます)。 kubeconfigファイルが安全な接続を使用するように構成されている場合、SSLトンネリングを処理します。

2番目のオプションについて。 Firefoxを使用してそれを行う方法についていくつかの情報を提供できます。

  1. 生成されたCA証明書をブラウザにインポートします。
    zrzut ekranu z 2016-09-15 16-05-47
  2. ユーザー証明書をYour Certificatesにインポートします。 2つの別々の証明書crtkeyがある場合は、ブラウザの証明書ストアに直接インポートするのが簡単なので、それらをPFX/PKCS#12証明書にマージするのが最適です。 このページを使用することも、 opensslを使用して手動で行うこともできます。
    zrzut ekranu z 2016-09-15 16-09-44

証明書が正しく生成されている場合、HTTPS経由でAPIサーバーにアクセスしようとするとポップアップが表示されます。 ブラウザのキャッシュをクリアする必要があるかもしれません。
zrzut ekranu z 2016-09-15 16-12-04

ダッシュボードが表示されます。 :)
zrzut ekranu z 2016-09-15 16-14-16

ブラウザでベアトークンを使用する方法がわかりません。 おそらく、APIサーバーにリクエストを送信する前に、HTTPヘッダーにデータを追加するための手作業が必要になります。

もちろん、ユーザーを承認する他のオプションがあります。 Kubernetesは、ABAC、RBACなどをサポートしています。

保護されたAPIサーバーポートにアクセスするときは、ブラウザが認証する必要があります。 https://github.com/kubernetes/kubernetes/issues/31665#issuecomment -247342834が示すように、これは証明書ベースの認証で実行できます。

トークンベースの認証の場合、ブラウザーは、要求とともにベアラートークンを自動的に送信する方法を提供しません。

ダッシュボードは、認証クレデンシャルを追加するkubectl proxyの使用方法を説明し、プロキシを介してローカルでダッシュボードにアクセスできるようにします-https://github.com/kubernetes/dashboard#usage

このページは役に立ちましたか?
0 / 5 - 0 評価