拡張マルチクラスタ・インストール
Verrazzanoマルチクラスタ・インストールには、Rancherをお薦めします。ただし、管理クラスタでRancherが有効になっていない場合、登録ではいくつかの追加ステップを実行する必要があります。次の手順は、VerrazzanoでRancherが有効になっていない場合に管理対象クラスタを登録する方法を示しています。
前提条件
開始する前に、「マルチクラスタVerrazzanoのインストール」の説明に従って、前提条件を完了し、Verrazzanoをインストールしてください。
登録前の設定
管理対象クラスタを登録する前に、まず次の項目を設定する必要があります:
- 管理対象クラスタのCA証明書を含むシークレット。管理対象クラスタで既知のCAを使用している場合にのみ、このシークレットの
cacrt
フィールドは空にできます。このCA証明書は、アプリケーションとVerrazzanoコンポーネントの両方について、管理対象クラスタからメトリックをスクレイピングするために管理クラスタによって使用されます。 - 管理クラスタの外部から到達可能なアドレスを含むConfigMap。これは、管理クラスタに接続できるように、登録中に管理対象クラスタに対して提供されます。
次の登録前設定ステップに従います
-
管理クラスタに必要な場合は、管理対象クラスタのCA証明書を取得します。管理クラスタは、管理対象クラスタのPrometheusエンドポイントからメトリックをスクレイピングします。管理対象クラスタVerrazzanoインストールで自己署名証明書を使用する場合は、
https
接続をするために、管理クラスタで管理対象クラスタのCA証明書が必要になります。-
管理対象クラスタ上のVerrazzanoインストールで自己署名証明書を使用するか、既知の認証局によって署名された証明書を使用するかに応じて、適切な手順を選択します:
-
使用する証明書のタイプが不明な場合は、次の指示に従ってください。
-
管理対象クラスタの
verrazzano-system
ネームスペースでverrazzano-tls
シークレットのca.crt
フィールドを確認するには:# On the managed cluster $ kubectl --kubeconfig $KUBECONFIG_MANAGED1 --context $KUBECONTEXT_MANAGED1 \ -n verrazzano-system get secret verrazzano-tls -o jsonpath='{.data.ca\.crt}'
よく知られているCA
この場合、追加の構成は必要ありません。
自己署名証明書
管理対象クラスタの証明書が自己署名の場合、
cacrt
フィールドの値として、管理対象クラスタのCA証明書を含むmanaged1.yaml
というファイルを作成します。次のコマンドでは、管理対象クラスタのCA証明書がMGD_CA_CERT
という環境変数に保存されます。次に、kubectl
コマンドの--dry-run
オプションを使用して、managed1.yaml
ファイルを生成します。# On the managed cluster $ export MGD_CA_CERT=$(kubectl --kubeconfig $KUBECONFIG_MANAGED1 --context $KUBECONTEXT_MANAGED1 \ get secret verrazzano-tls \ -n verrazzano-system \ -o jsonpath="{.data.ca\.crt}" | base64 --decode) $ kubectl --kubeconfig $KUBECONFIG_MANAGED1 --context $KUBECONTEXT_MANAGED1 \ create secret generic "ca-secret-managed1" \ -n verrazzano-mc \ --from-literal=cacrt="$MGD_CA_CERT" \ --dry-run=client \ -o yaml > managed1.yaml
管理対象クラスタのCA証明書を含む管理クラスタにシークレットを作成します。このシークレットは、管理対象クラスタからのメトリックのスクレイピングに使用されます。前のステップで作成された
managed1.yaml
ファイルは、このステップへの入力を提供します。# On the admin cluster $ kubectl --kubeconfig $KUBECONFIG_ADMIN --context $KUBECONTEXT_ADMIN \ apply -f managed1.yaml # After the command succeeds, you may delete the managed1.yaml file $ rm managed1.yaml
-
-
-
次の手順を使用して、管理クラスタのKubernetes APIサーバー・アドレスを取得します。このアドレスは、管理対象クラスタからアクセスできる必要があります。
ほとんどのKubernetesクラスタ
kindクラスタを除くほとんどのタイプのKubernetesクラスタでは、管理クラスタの外部からアクセス可能なAPIサーバー・アドレスをkubeconfigファイルから見つけることができます。
# View the information for the admin cluster in your kubeconfig file $ kubectl --kubeconfig $KUBECONFIG_ADMIN --context $KUBECONTEXT_ADMIN config view --minify # Sample output apiVersion: v1 kind: Config clusters: - cluster: certificate-authority-data: DATA+OMITTED server: https://11.22.33.44:6443 name: my-admin-cluster contexts: .... ....
このコマンドの出力では、server
フィールドに管理クラスタAPIサーバーのURLが見つかります。ADMIN_K8S_SERVER_ADDRESS
変数の値をこのURLに設定します。$ export ADMIN_K8S_SERVER_ADDRESS=<the server address from the config output>
kindクラスタ
kindクラスタはDockerコンテナ内で実行されます。管理クラスタと管理対象クラスタがkindクラスタの場合、kubeconfigファイル内の管理クラスタのAPIサーバー・アドレスは、一般にホスト・マシン上のローカル・アドレスであり、管理対象クラスタからはアクセスできません。
kind
コマンドを使用して、管理クラスタのinternal
kubeconfigを取得します。これには、同じマシン上の他のkindクラスタからアクセス可能な(つまり、同じDockerネットワークでアクセス可能な)サーバー・アドレスが含まれます。$ kind get kubeconfig --internal --name <your-admin-cluster-name> | grep server
server
フィールドに管理クラスタAPIサーバーのURLが見つかります。ADMIN_K8S_SERVER_ADDRESS
変数の値をこのURLに設定します。$ export ADMIN_K8S_SERVER_ADDRESS=<the server address from the config output>
-
管理クラスタで、前のステップで見つかった外部からアクセス可能な管理クラスタKubernetesサーバー・アドレスを含むConfigMapを作成します。Verrazzanoで検出するには、このConfigMapに
verrazzano-admin-cluster
という名前が付いている必要があります。# On the admin cluster $ kubectl --kubeconfig $KUBECONFIG_ADMIN --context $KUBECONTEXT_ADMIN \ apply -f <<EOF - apiVersion: v1 kind: ConfigMap metadata: name: verrazzano-admin-cluster namespace: verrazzano-mc data: server: "${ADMIN_K8S_SERVER_ADDRESS}" EOF
登録ステップ
最初の3つの登録ステップを管理クラスタで実行し、最後のステップを管理対象クラスタで実行します。コマンドを実行するクラスタは、各コード・ブロックに示されます。
管理クラスタで
-
managed1
という名前の管理対象クラスタの登録プロセスを開始するには、管理クラスタでVerrazzanoManagedClusterリソースを適用します。# On the admin cluster $ kubectl --kubeconfig $KUBECONFIG_ADMIN --context $KUBECONTEXT_ADMIN \ apply -f <<EOF - apiVersion: clusters.verrazzano.io/v1alpha1 kind: VerrazzanoManagedCluster metadata: name: managed1 namespace: verrazzano-mc spec: description: "Test VerrazzanoManagedCluster object" caSecret: ca-secret-managed1 EOF
-
VerrazzanoManagedClusterリソースが
Ready
ステータスになるまで待ちます。その時点で、登録プロセスを完了するために管理対象クラスタに適用する必要があるYAMLファイルが生成されています。# On the admin cluster $ kubectl --kubeconfig $KUBECONFIG_ADMIN --context $KUBECONTEXT_ADMIN \ wait --for=condition=Ready \ vmc managed1 -n verrazzano-mc
-
管理対象クラスタを登録するために、作成されたYAMLファイルをエクスポートします。
# On the admin cluster $ kubectl --kubeconfig $KUBECONFIG_ADMIN --context $KUBECONTEXT_ADMIN \ get secret verrazzano-cluster-managed1-manifest \ -n verrazzano-mc \ -o jsonpath={.data.yaml} | base64 --decode > register.yaml
管理対象クラスタで
前のステップでエクスポートした登録ファイルを管理対象クラスタに適用します。
# On the managed cluster
$ kubectl --kubeconfig $KUBECONFIG_MANAGED1 --context $KUBECONTEXT_MANAGED1 \
apply -f register.yaml
# After the command succeeds, you may delete the register.yaml file
$ rm register.yaml
このステップの後、管理対象クラスタは管理クラスタへの定期的な接続を開始します。管理対象クラスタが管理クラスタに接続すると、次の情報を使用して、この管理対象クラスタのVerrazzanoManagedCluster
リソースのStatus
フィールドが更新されます:
- 管理対象クラスタから行われた最新接続のタイムスタンプ(
lastAgentConnectTime
ステータス・フィールド)。 - 管理対象クラスタで実行されているPrometheusインスタンスのホスト・アドレス(
prometheusHost
ステータス・フィールド)。その後これは、管理クラスタが管理対象クラスタからメトリックをスクレイピングするために使用されます。 - 管理対象クラスタのAPIアドレス(
apiUrl
ステータス・フィールド)。これは、管理クラスタの認証プロキシが、管理対象クラスタ情報の受信リクエストを管理対象クラスタの認証プロキシにルーティングするために使用されます。
管理対象クラスタの登録が完了したことの検証
これらのステップが完了したら、「管理対象クラスタの登録が完了したことの検証」に戻ります。
Rancherを使用しない管理対象クラスタの登録解除
ノート: 次の手順は、管理クラスタでRancherが有効になっていないVerrazzanoマルチクラスタ環境用です。Rancherが有効な場合は、「管理対象クラスタの登録解除」を参照してください。
Verrazzanoマルチクラスタ環境の一部にする必要がなくなったために管理対象クラスタを登録解除する場合は、次のステップを実行します。
管理クラスタで
-
管理対象クラスタを登録するために、作成されたYAMLファイルをエクスポートします。
# On the admin cluster $ kubectl --kubeconfig $KUBECONFIG_ADMIN --context $KUBECONTEXT_ADMIN \ get secret verrazzano-cluster-managed1-manifest \ -n verrazzano-mc \ -o jsonpath={.data.yaml} | base64 --decode > register.yaml
-
管理クラスタの
VerrazzanoManagedCluster
リソースを削除します。# On the admin cluster $ kubectl --kubeconfig $KUBECONFIG_ADMIN --context $KUBECONTEXT_ADMIN \ delete vmc -n verrazzano-mc managed1
管理対象クラスタで
管理対象クラスタで、前のステップでエクスポートした登録ファイル内のリソースを削除します。
# On the managed cluster
$ kubectl --kubeconfig $KUBECONFIG_MANAGED1 --context $KUBECONTEXT_MANAGED1 \
delete -f register.yaml
# After the command succeeds, you may delete the register.yaml file
$ rm register.yaml