Azure Stack Hub の Kubernetes ダッシュボードにアクセスする
手記
概念実証としてクラスターをデプロイするには、Kubernetes Azure Stack Marketplace 項目のみを使用します。 Azure Stack でサポートされている Kubernetes クラスターの場合は、AKS エンジン
Kubernetes には、基本的な管理操作に使用できる Web ダッシュボードが含まれています。 このダッシュボードでは、アプリケーションの基本的な正常性状態とメトリックの表示、サービスの作成とデプロイ、既存のアプリケーションの編集を行うことができます。 この記事では、Azure Stack Hub で Kubernetes ダッシュボードを設定する方法について説明します。
Kubernetes ダッシュボードの前提条件
- Azure Stack Hub Kubernetes クラスター: Azure Stack Hub にデプロイされた Kubernetes クラスター。 詳細については、「Kubernetesのデプロイ」を参照してください。
- SSH クライアント: セキュリティへの SSH クライアントは、クラスター内のコントロール プレーン ノードに接続します。 Windows を使用する場合は、Putty
使用できます。 Kubernetes クラスターのデプロイ時に使用した秘密キーが必要です。 - FTP (PSCP): コントロール プレーン ノードから Azure Stack Hub 管理マシンに証明書を転送するための SSH および SSH ファイル転送プロトコルをサポートする FTP クライアント。 FileZillaを使用できます。 Kubernetes クラスターのデプロイ時に使用した秘密キーが必要です。
ダッシュボードを有効にする手順の概要
- クラスター内のコントロール プレーン ノードから Kubernetes 証明書をエクスポートします。
- 証明書を Azure Stack Hub 管理マシンにインポートします。
- Kubernetes Web ダッシュボードを開きます。
マスターから証明書をエクスポートする
クラスター内のコントロール プレーン ノードからダッシュボードの URL を取得できます。
Azure Stack Hub ダッシュボードから、メイン クラスターのパブリック IP アドレスとユーザー名を取得します。 この情報を取得するには:
https://portal.local.azurestack.external/
で Azure Stack Hub ポータルにサインインします。- すべてのサービス >すべてのリソースを選択します。 クラスター リソース グループでマスターを見つけます。 マスターは
k8s-master-<sequence-of-numbers>
という名前です。
ポータルでコントロール プレーン ノードを開きます。 パブリック IP アドレスをコピーします。 [接続] を接続して、[VM ローカル アカウントを使用してログインする] ボックスのユーザー名を取得します。 これは、クラスターの作成時に設定したのと同じユーザー名です。 接続ブレードに一覧表示されているプライベート IP アドレスではなく、パブリック IP アドレスを使用します。
SSH クライアントを開いてメイン クラスターに接続します。 Windows を使用する場合は、Putty を使用して接続を作成できます。 コントロール プレーン ノードのパブリック IP アドレス、ユーザー名を使用し、クラスターの作成時に使用した秘密キーを追加します。
ターミナルが接続したら、「
kubectl
」と入力して Kubernetes コマンド ライン クライアントを開きます。次のコマンドを実行します。
kubectl cluster-info
ダッシュボードの URL を見つけます。 例:
https://k8-1258.local.cloudapp.azurestack.external/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy
自己署名証明書を抽出し、PFX 形式に変換します。 次のコマンドを実行します。
sudo su openssl pkcs12 -export -out /etc/kubernetes/certs/client.pfx -inkey /etc/kubernetes/certs/client.key -in /etc/kubernetes/certs/client.crt -certfile /etc/kubernetes/certs/ca.crt
kube-system 名前空間内のシークレットの一覧を取得します。 次のコマンドを実行します。
kubectl -n kube-system get secrets
kubernetes-dashboard-token-<XXXXX> 値を書き留めます。
トークンを取得して保存します。 前の手順のシークレット値で
kubernetes-dashboard-token-<####>
を更新します。kubectl -n kube-system describe secret kubernetes-dashboard-token-<####>| awk '$1=="token:"{print $2}'
証明書をインポートする
Filezilla を開き、コントロール プレーン ノードに接続します。 次の情報が必要です。
- コントロール プレーン ノードのパブリック IP
- ユーザー名
- プライベート シークレット
- SFTP - SSH ファイル転送プロトコル を使用する
/etc/kubernetes/certs/client.pfx
と/etc/kubernetes/certs/ca.crt
を Azure Stack Hub 管理マシンにコピーします。ファイルの場所をメモします。 その場所でスクリプトを更新してから、管理者特権のプロンプトで PowerShell を開きます。 更新されたスクリプトを実行します。
Import-Certificate -Filepath "ca.crt" -CertStoreLocation cert:\LocalMachine\Root $pfxpwd = Get-Credential -UserName 'Enter password below' -Message 'Enter password below' Import-PfxCertificate -Filepath "client.pfx" -CertStoreLocation cert:\CurrentUser\My -Password $pfxpwd.Password
Kubernetes ダッシュボードを開く
Web ブラウザーでポップアップ ブロックを無効にします。
kubectl cluster-info
コマンドを実行したときに示された URL をブラウザーにポイントします。たとえば、https://azurestackdomainnamefork8sdashboard/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy
します。クライアント証明書を選択します。
トークンを入力します。
コントロール プレーン ノードの bash コマンド ラインに再接続し、
kubernetes-dashboard
へのアクセス許可を付与します。 次のコマンドを実行します。kubectl create clusterrolebinding kubernetes-dashboard --clusterrole=cluster-admin --serviceaccount=kube-system:kubernetes-dashboard
このスクリプトは、
kubernetes-dashboard
クラウド管理者特権を付与します。 詳細については、「RBAC 対応クラスター」のを参照してください。
ダッシュボードを使用できるようになりました。 Kubernetes ダッシュボードの詳細については、「Kubernetes Web UI ダッシュボード」を参照してください。
トラブルシューティング
カスタム仮想ネットワーク
Kubernetes を カスタム仮想ネットワークにデプロイした後に Kubernetes ダッシュボードへのアクセスに関する接続の問題が発生した場合は、ターゲット サブネットが、AKS エンジンによって作成されたルート テーブルとネットワーク セキュリティ グループ リソースにリンクされていることを確認します。
ネットワーク セキュリティ グループの規則で、コントロール プレーン ノードと Kubernetes ダッシュボード ポッド IP の間の通信が許可されていることを確認します。 コントロール プレーン ノードの ping
コマンドを使用して、このアクセス許可を検証できます。
次の手順
- Kubernetes を Azure Stack Hub にデプロイする
- Kubernetes クラスターを Marketplace に追加する (Azure Stack Hub オペレーターの場合)
- Azure 上の Kubernetes