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 クラスターのデプロイ時に使用した秘密キーが必要です。

ダッシュボードを有効にする手順の概要

  1. クラスター内のコントロール プレーン ノードから Kubernetes 証明書をエクスポートします。
  2. 証明書を Azure Stack Hub 管理マシンにインポートします。
  3. Kubernetes Web ダッシュボードを開きます。

マスターから証明書をエクスポートする

クラスター内のコントロール プレーン ノードからダッシュボードの URL を取得できます。

  1. Azure Stack Hub ダッシュボードから、メイン クラスターのパブリック IP アドレスとユーザー名を取得します。 この情報を取得するには:

    • https://portal.local.azurestack.external/で Azure Stack Hub ポータルにサインインします。
    • すべてのサービス >すべてのリソースを選択します。 クラスター リソース グループでマスターを見つけます。 マスターは k8s-master-<sequence-of-numbers>という名前です。
  2. ポータルでコントロール プレーン ノードを開きます。 パブリック IP アドレスをコピーします。 [接続] を接続して、[VM ローカル アカウントを使用してログインする] ボックスのユーザー名を取得します。 これは、クラスターの作成時に設定したのと同じユーザー名です。 接続ブレードに一覧表示されているプライベート IP アドレスではなく、パブリック IP アドレスを使用します。

  3. SSH クライアントを開いてメイン クラスターに接続します。 Windows を使用する場合は、Putty を使用して接続を作成できます。 コントロール プレーン ノードのパブリック IP アドレス、ユーザー名を使用し、クラスターの作成時に使用した秘密キーを追加します。

  4. ターミナルが接続したら、「kubectl」と入力して Kubernetes コマンド ライン クライアントを開きます。

  5. 次のコマンドを実行します。

    kubectl cluster-info 
    

    ダッシュボードの URL を見つけます。 例: https://k8-1258.local.cloudapp.azurestack.external/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy

  6. 自己署名証明書を抽出し、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 
    
  7. kube-system 名前空間内のシークレットの一覧を取得します。 次のコマンドを実行します。

    kubectl -n kube-system get secrets
    

    kubernetes-dashboard-token-<XXXXX> 値を書き留めます。

  8. トークンを取得して保存します。 前の手順のシークレット値で kubernetes-dashboard-token-<####> を更新します。

    kubectl -n kube-system describe secret kubernetes-dashboard-token-<####>| awk '$1=="token:"{print $2}' 
    

証明書をインポートする

  1. Filezilla を開き、コントロール プレーン ノードに接続します。 次の情報が必要です。

    • コントロール プレーン ノードのパブリック IP
    • ユーザー名
    • プライベート シークレット
    • SFTP - SSH ファイル転送プロトコル を使用する
  2. /etc/kubernetes/certs/client.pfx/etc/kubernetes/certs/ca.crt を Azure Stack Hub 管理マシンにコピーします。

  3. ファイルの場所をメモします。 その場所でスクリプトを更新してから、管理者特権のプロンプトで 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 ダッシュボードを開く

  1. Web ブラウザーでポップアップ ブロックを無効にします。

  2. kubectl cluster-infoコマンドを実行したときに示された URL をブラウザーにポイントします。たとえば、https://azurestackdomainnamefork8sdashboard/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxyします。

  3. クライアント証明書を選択します。

  4. トークンを入力します。

  5. コントロール プレーン ノードの bash コマンド ラインに再接続し、kubernetes-dashboardへのアクセス許可を付与します。 次のコマンドを実行します。

    kubectl create clusterrolebinding kubernetes-dashboard --clusterrole=cluster-admin --serviceaccount=kube-system:kubernetes-dashboard 
    

    このスクリプトは、kubernetes-dashboard クラウド管理者特権を付与します。 詳細については、「RBAC 対応クラスター」のを参照してください。

ダッシュボードを使用できるようになりました。 Kubernetes ダッシュボードの詳細については、「Kubernetes Web UI ダッシュボード」を参照してください。

Azure Stack Hub Kubernetes ダッシュボード

トラブルシューティング

カスタム仮想ネットワーク

Kubernetes を カスタム仮想ネットワークにデプロイした後に Kubernetes ダッシュボードへのアクセスに関する接続の問題が発生した場合は、ターゲット サブネットが、AKS エンジンによって作成されたルート テーブルとネットワーク セキュリティ グループ リソースにリンクされていることを確認します。

ネットワーク セキュリティ グループの規則で、コントロール プレーン ノードと Kubernetes ダッシュボード ポッド IP の間の通信が許可されていることを確認します。 コントロール プレーン ノードの ping コマンドを使用して、このアクセス許可を検証できます。

次の手順