このページはプラットフォーム管理者を対象としています。
このページでは、Terraform を使用してユーザー クラスタを管理する方法について説明します。
前提条件
管理クラスタにアクセスできるアカウントが必要です。このアカウントには、ユーザー クラスタを管理するための適切な権限が必要です。このアカウントには、プラットフォーム管理者のアクセス権のサブセットと、apiextensions.k8s.io
API グループの customresourcedefinitions
に対する「list」アクセス権が必要です。このアカウントを使用して、Terraform Kubernetes プロバイダを構成して、ユーザー クラスタ関連のリソースを管理できるようにします。このアカウントには次の固有の権限が必要です。
- 管理クラスタ内のユーザー クラスタの名前空間に対する完全アクセス権(例:
cluster-user-cluster2
) baremetal.cluster.gke.io
のclusters
とnodepools
に対する完全なアクセス権managementcenter.anthos.cloud.google.com
のbootstrapservicebindings
、configmanagementfeaturespecs
、configmanagementbindings
、servicemeshfeaturespecs
、servicemeshbindings
に対する完全なアクセス権apiextensions.k8s.io
のcustomresourcedefinitions
に対するlist
のアクセス権- Anthos Config Management と Anthos Service Mesh をインストールする必要がある場合は、管理クラスタのユーザー クラスタ名前空間の Secret を取得して、ユーザー クラスタに接続するための認証情報を取得する必要があります。
Terraform スクリプトをダウンロードする
Anthos Management Center Console の [サポート] タブから、Terraform スクリプトの tarball ファイルをダウンロードします。ファイルからスクリプトを抽出します。
tar xvf terraform-scripts.tar.gz
Terraform の init を実行して認証を設定する
Terraform の Kubernetes プロバイダを設定して、管理クラスタ API で認証する方法は多数あります。プロバイダの設定に記載されたユースケースに最適な方法を選択してください。管理クラスタに十分な権限がない場合は、インフラストラクチャ オペレータに相談してください。
cd cluster
terraform init
(# TODO 認証)をプロバイダの設定の認証方法の内のいずれかに置き換えます。
ユーザー クラスタを作成する
すべての変数を
cluster/terraform.tfvars
に指定します。root 権限がない場合は、login_user_name
を指定してください。例:admin_cluster_endpoint = "https://10.200.0.100:443" cluster_name = "user-cluster2" control_plane_nodes = [ { "address" = "10.200.0.26" }, { "address" = "10.200.0.21" }, { "address" = "10.200.0.22" }, ] control_plane_vip = "10.200.0.110" nodepool_nodes = [ { "address" = "10.200.0.23" }, { "address" = "10.200.0.25" }, { "address" = "10.200.0.24" }, ] address_pools = [ { "addresses" = ["10.200.0.111-10.200.0.119"] "name" = "pool1" }, ] bootstrap_service = ["test-bootstrapservice", "test-bootstrapservice-2"] anthos_baremetal_version = "1.9.0"
変更を適用します。コマンドが正常に完了すると、ユーザー クラスタが作成されます。
terraform apply
ユーザー クラスタの破棄
ユーザー クラスタを破棄するには、次のコマンドを使用します。
terraform destroy
リソースの破棄を制御するため、待ち時間を設定します。wait_duration
変数を更新して調整することをおすすめします。待ち時間を設定する理由は、Kubernetes のプロバイダに機能がないためです(この機能のリクエストをご覧ください)。
問題によりユーザー クラスタの作成が保留中の場合は、terraform destroy
を使用しないでください。代わりに、手動でインストールをクリーンアップします。
terraform コマンドを停止します。
Management Center Console からユーザー クラスタを削除します。
terraform.tfstate
ファイルを削除します。
Anthos Config Management と Anthos Service Mesh を有効にする
Anthos Config Management と Anthos Service Mesh を有効にするには、次の手順を行います。
features
Terraform プロジェクトのため、Terraform を init します。cd features terraform init
管理クラスタに認証を設定します。
/etc/ssh-key/key
内の git リポジトリに秘密鍵を配置します。activate_acm
とactivate_asm
を true に設定し、関連するすべての変数を定義します。例:cluster_name = "user-cluster2" admin_cluster_endpoint = "https://10.200.0.100:443" user_cluster_ca_certificate = "" activate_acm = true version_acm = "1.7.1" enable_acm_policy_controller = true acm_git_repo = { git_repo_url = "git@github.com:example/example.git" git_repo_branch = "main" git_policy_dir = "." git_secret_type = "ssh" } activate_asm = true version_asm = "1.9.6-asm.1"
変更を適用します。
terraform apply
(省略可)必要に応じて、Anthos Service Mesh の待機時間を調整します。これを行うには、
wait_duration
変数を更新します。
Anthos Config Management と Anthos Service Mesh を無効にする
Anthos Config Management を削除する前に、Anthos Config Management によりクラスタ内で同期されているすべてのリソースを削除することをおすすめします。
tfstate
から git-creds
シークレットと config-management-system
を削除します。ConfigManagementBinding
と ConfigManagementFeatureSpec
が削除された後は、Anthos Config Management オペレータがユーザー クラスタ内のリソースを削除します。Anthos Config Management は、すぐに Management Center でアンインストールとして表示されません。オペレーターがすべてを削除するまでに 5~10 分ほどかかります。
terraform state rm kubernetes_namespace.config-management-system
terraform state rm kubernetes_secret.git-creds
terraform destroy
既知の問題
現在、クラスタを更新することはできません。問題 1378 により、プロバイダは更新をリリースするときに、既存リソースのファイナライザの削除を試みます。
問題 1357 により、ユーザー クラスタと Anthos Service Mesh の破棄コマンドは、待ち時間に依存します。クラスタのサイズによっては、待ち時間の調整が必要になることがあります。
クラスタが Management Center よりも早く Terraform に準備完了と表示されます(プロバイダによる
kubernetes_manifest
データのサポートによってブロックされるため)。terraform destroy
を使用して Anthos Config Management を削除するには、まず tfstate からリソースを削除する必要があります。詳細については、Anthos Config Management と Anthos Service Mesh を無効にするをご覧ください。Anthos Config Management はすぐに Management Center でアンインストール済みとして表示されません。オペレーターがすべてを削除するまでに 5~10 分ほどかかります。terraform destroy
コマンドは、ユーザー クラスタの名前空間を削除します。プラットフォーム管理者には、管理クラスタ内の名前空間を削除する権限がありません。このため、コマンドが失敗する可能性があります。
制限事項
現在のコードは単一のユーザー クラスタを作成するものです。
現在のコードには、OIDC を構成する機能は含まれていません。このパートでは、kubernetes_manifest リソースの Kubernetes プロバイダのパッチ機能が必要です。