Terraform を使用して Kubernetes クラスターを作成する (プレビュー)
この記事では、Terraform と Azure Verified Module を使用して Azure Local で Kubernetes クラスターを作成する方法について説明します。 ワークフローは次のとおりです。
- SSH キーの組を作成します。
- Terraform を使用して Azure Local 23H2 に Kubernetes クラスターを作成します。 既定では、クラスターは Azure Arc 接続です。
- デプロイを検証し、クラスターに接続します。
重要
これらのプレビュー機能は、セルフサービスのオプトインベースで利用できます。 プレビューは、"現状有姿" および "利用可能な限度" で提供され、サービス レベル アグリーメントおよび限定保証から除外されるものとします。 Azure Arc プレビューで有効になっている Azure Kubernetes Service は、ベスト エフォートベースでカスタマー サポートによって部分的にカバーされます。
開始する前に
開始する前に、以下の前提条件を確認してください。
- オンプレミスインフラストラクチャ管理者から次の詳細を取得します。
- Azure サブスクリプション ID: デプロイと登録に Azure Local を使用する Azure サブスクリプション ID。
- カスタムの場所の名前または ID: カスタムの場所の Azure Resource Manager ID。 カスタムの場所は、Azure ローカル クラスターのデプロイ中に構成されます。 インフラストラクチャ管理者は、カスタムの場所の Resource Manager ID を指定する必要があります。 このパラメーターは、Kubernetes クラスターを作成するために必要です。 インフラストラクチャ管理者がカスタムの場所名とリソース グループ名を提供する場合は、
az customlocation show --name "<custom location name>" --resource-group <azure resource group> --query "id" -o tsv
を使用して Resource Manager ID を取得することもできます。 - 論理ネットワーク名または ID: 次の手順に従って作成された Azure Stack HCI 論理ネットワークの Azure Resource Manager ID。 管理者が論理ネットワークの ID を指定する必要があります。 Kubernetes クラスターを作成するには、このパラメーターが必要です。 論理ネットワークが作成されたリソース グループがわかっている場合は、
az stack-hci-vm network lnet show --name "<lnet name>" --resource-group <azure resource group> --query "id" -o tsv
を使用して Azure Resource Manager ID を取得することもできます。
- 開発用コンピューターに GitHub、最新バージョンの Azure CLI、Terraform クライアントがインストールされていることを確認します。
- 開発用コンピューターに kubectl をダウンロードしてインストールします。
SSH キー ペアの作成
SSH キー ペア (Azure AKS と同じ) を作成するには、次の手順に従います。
ブラウザーで Cloud Shell セッション を開きます。
az sshkey create コマンド、ポータルから、または
ssh-keygen
コマンドを使用して SSH キー ペアを作成します。az sshkey create --name "mySSHKey" --resource-group "myResourceGroup"
または
ssh-keygen -t rsa -b 4096
Azure またはローカル コンピューターの /.ssh/id_rsa.pub から公開キーの値を取得します。
Azure へのサインイン
Terraform は、Azure CLI を使用した Azure への認証のみをサポートしています。 Azure PowerShell を使用した認証はサポートされていません。 そのため、Terraform の作業を行うときに Azure PowerShell モジュールを使用できますが、最初に Azure に認証 する必要があります。
Terraform コードを実装する
サンプルの Terraform コードのテストに使用できるディレクトリを作成し、それを現在のディレクトリにします。
同じディレクトリに、 providers.tf という名前のファイルを作成し、次のコードを貼り付けます。
terraform { required_version = "~> 1.5" required_providers { azapi = { source = "azure/azapi" version = "~> 1.13" } azurerm = { source = "hashicorp/azurerm" version = "~> 3.74" } } } provider "azurerm" { features { resource_group { prevent_deletion_if_contains_resources = false } } }
最新の AKS Arc AVM モジュールを指す main.tf という名前の別のファイルを作成し、次のコードを挿入します。 モジュールの説明と入力を読み、必要に応じて省略可能なパラメーターを追加できます。
module "aks_arc" { # Make sure to use the latest AVM module version source = "Azure/avm-res-hybridcontainerservice-provisionedclusterinstance/azurerm" version = "0.5.0" # Make sure to provide all required parameters resource_group_id = "<Resource_Group>" location = "<Region>" name = "<Cluster_Name>" logical_network_id = "<LNet_ID>" custom_location_id = "<CustomLocation_ID>" agent_pool_profiles = [{count=1}] # Optional parameters ssh_public_key = "Your_SSH_Key" enable_workload_identity = true enable_oidc_issuer = true rbac_admin_group_object_ids = "" }
Terraform を初期化する
terraform init
を実行して、Terraform のデプロイを初期化します。 必要なプロバイダー プラグインを最新バージョンにアップグレードするには、必ず -upgrade
フラグを使用してください。
terraform init -upgrade
Terraform 実行プランを作成し、プランを適用する
teraform プランを実行実行プランを作成してから、 teraform apply を実行して、出力ファイルをクラウド インフラストラクチャに適用します。
terraform plan -out main.tfplan
terraform apply main.tfplan
コマンドが実行され、リソースが正常にプロビジョニングされた後に成功が返されます。
デプロイを検証し、クラスターに接続する
開発用コンピューターから az connectedk8s proxy
を実行して、Kubernetes クラスターに接続できるようになりました。 kubectlを使用して、ノードとポッドの状態を確認することもできます。 Kubernetes クラスターへの接続で説明されているのと同じ手順に従います。