次の方法で共有


Terraform を使用して Kubernetes クラスターを作成する (プレビュー)

この記事では、Terraform と Azure Verified Module を使用して Azure Local で Kubernetes クラスターを作成する方法について説明します。 ワークフローは次のとおりです。

  • SSH キーの組を作成します。
  • Terraform を使用して Azure Local 23H2 に Kubernetes クラスターを作成します。 既定では、クラスターは Azure Arc 接続です。
  • デプロイを検証し、クラスターに接続します。

重要

これらのプレビュー機能は、セルフサービスのオプトインベースで利用できます。 プレビューは、"現状有姿" および "利用可能な限度" で提供され、サービス レベル アグリーメントおよび限定保証から除外されるものとします。 Azure Arc プレビューで有効になっている Azure Kubernetes Service は、ベスト エフォートベースでカスタマー サポートによって部分的にカバーされます。

開始する前に

開始する前に、以下の前提条件を確認してください。

  1. オンプレミスインフラストラクチャ管理者から次の詳細を取得します。
    • 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 ローカル論理ネットワークの 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 を取得することもできます。
  2. 開発用コンピューターに GitHub、最新バージョンの Azure CLI、Terraform クライアントがインストールされていることを確認します。
  3. 開発用コンピューターに kubectl をダウンロードしてインストールします。

SSH キー ペアの作成

Azure で SSH キー ペアを作成し、トラブルシューティングとログ収集のために秘密キー ファイルを格納します。 詳細な手順については、「Azure CLI を使用した SSH キーの作成と格納」または「Azure portal」を参照してください。

  1. Web ブラウザーで Cloud Shell セッション を開くか、ローカル コンピューターでターミナルを起動します。

  2. az sshkey create コマンドを使用して SSH キー ペアを作成します。

    az sshkey create --name "mySSHKey" --resource-group $<resource_group_name>
    

    または、ssh-keygen コマンドを使用します。

    ssh-keygen -t rsa -b 4096 
    
  3. Azure またはローカル コンピューターの /.ssh/id_rsa.pub から公開キーの値を取得します。

その他のオプションについては、「AKS クラスター の SSH キーを構成する」に従って SSH キーを作成するか、クラスターの作成時に SSH アクセス を制限するを使用します。 後でノードにアクセスするには、「SSHを使用して Windows または Linux ワーカー ノードに接続する」を参照してください。

Azure へのサインイン

Terraform では、az loginを使用した Azure CLI を使用した Azure への認証のみがサポートされます。 Azure PowerShell を使用した認証はサポートされていません。 そのため、Terraform の作業を行うときに Azure PowerShell モジュールを使用できますが、最初に Azure に対して認証必要があります。

az login 

Terraform コードを実装する

  1. サンプルの Terraform コードのテストに使用できるディレクトリを作成し、それを現在のディレクトリにします。

  2. 同じディレクトリに、 providers.tf という名前のファイルを作成し、次のコードを貼り付けます。

    terraform { 
     required_version = "~> 1.5" 
     required_providers { 
       azapi = { 
         source  = "azure/azapi" 
         version = "~> 2.0" 
       } 
       azurerm = { 
        source  = "hashicorp/azurerm" 
        version = "~> 4.0" 
       } 
      }
     }
    
     provider "azurerm" { 
     features { 
      resource_group { 
       prevent_deletion_if_contains_resources = false 
      } 
     } 
    }
    
  3. 最新の AKS Arc AVM モジュールを指す main.tf という名前の別のファイルを作成し、次のコードを挿入します。 モジュールの説明と入力を読み取り、必要に応じて省略可能なパラメーターを追加できます。 管理者グループ オブジェクト ID を見つけるには、「Kubernetes クラスターの Microsoft Entra 認証を有効にする」を参照してください。 このガイダンス に従って、Azure 環境で見つけることができます。 Azure RBAC を有効にするには、対応するパラメーターを更新し、前提条件については「Kubernetes Authorization の Azure RBAC を有効にする」を参照してください。

    module "aks_arc" { 
    # Make sure to use the latest AVM module version
    source = "Azure/avm-res-hybridcontainerservice-provisionedclusterinstance/azurerm" 
    version = "~>2.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}] 
    ssh_public_key =  "Your_SSH_Key"
    
    # Optional parameters, update them as needed
    enable_azure_rbac = false
    enable_workload_identity = false 
    enable_oidc_issuer = false 
    rbac_admin_group_object_ids = ["<Admin_Group_Object_ID>"]
    }
    

Terraform を初期化する

terraform init を実行して、Terraform のデプロイを初期化します。 必要なプロバイダー プラグインを最新バージョンにアップグレードするには、必ず -upgrade フラグを使用してください。

terraform init -upgrade

Terraform 実行プランを作成して適用する

この手順の前に、az login 実行して Azure に対して認証を行ってください。それ以外の場合は、Terraform プランの適用が失敗します。 terraform plan を実行して実行プランを作成し、terraform apply 実行して出力ファイルをクラウド インフラストラクチャに適用します。

terraform plan -out main.tfplan 
terraform apply main.tfplan 

コマンドが実行され、リソースが正常にプロビジョニングされた後に成功が返されます。

デプロイを検証し、クラスターに接続する

開発用コンピューターから az connectedk8s proxy を実行して、Kubernetes クラスターに接続できるようになりました。 kubectlを使用して、ノードとポッドの状態を確認することもできます。 Kubernetes クラスターへの接続で説明されているのと同じ手順に従います。

次のステップ

Kubernetes クラスターに接続する