この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。

AKSクラスターの作成

Rancherを使用して、Microsoft Azure Kubernetes Service (AKS) にホストされるクラスターを作成できます。

Microsoft Azureの前提条件

AKSにデプロイすると、料金が発生します。

Azure APIと対話するには、AKSクラスターにAzure Active Directory (AD) サービスプリンシパルが必要です。サービスプリンシパルは、他のAzureリソースを動的に作成および管理するために必要であり、AKSと通信するためのクラスターの資格情報を提供します。サービスプリンシパルに関する詳細は、 AKSドキュメントを参照してください。

サービスプリンシパルを作成する前に、 Microsoft Azureポータルから以下の情報を取得する必要があります。

  • サブスクリプションID

  • クライアントID(アプリIDとも呼ばれます)

  • クライアントシークレット

以下のセクションでは、AzureコマンドラインツールまたはAzureポータルを使用してこれらの前提条件を設定する方法を説明します。

Azureコマンドラインツールを使用したサービスプリンシパルの設定

サービスプリンシパルに役割を割り当てて、AKS APIとの通信権限を持たせる必要があります。また、仮想ネットワークを作成および一覧表示するためのアクセス権も必要です。

以下の例では、コマンドがサービスプリンシパルを作成し、貢献者ロールを付与します。貢献者ロールはAKS上のすべてを管理できますが、他のユーザーにアクセスを与えることはできません。少なくとも1つのAzureリソースへの完全なパスを`scopes`提供する必要があることに注意してください。

az ad sp create-for-rbac --role Contributor --scopes /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>

結果には新しいサービスプリンシパルに関する情報が表示される必要があります。

{
  "appId": "xxxx--xxx",
  "displayName": "<service-principal-name>",
  "name": "http://<service-principal-name>",
  "password": "<secret>",
  "tenant": "<tenant-name>"
}

次のコマンドは、Azureリソースを含む リソースグループを作成します。

az group create --location <azure-location-name> --resource-group <resource-group-name>

Azureポータルからサービスプリンシパルを設定する

これらの手順に従って、サービスプリンシパルを設定し、Azureポータルからロールベースのアクセスを付与します。

  1. Microsoft Azureポータルの ホームページに移動します。

  2. *Azure Active Directory*をクリックします。

  3. *アプリ登録*をクリックします。

  4. *新しい登録*をクリックします。

  5. サービスプリンシパルの名前を入力します。

  6. オプション:どのアカウントがサービスプリンシパルを使用できるかを選択します。

  7. *登録*をクリックします。

  8. 現在、Azure Active Directory  アプリ登録の下にサービスプリンシパルの名前が表示されているはずです。

  9. サービスプリンシパルの名前をクリックします。AKSクラスターをプロビジョニングする際に使用できるように、アプリケーションID(アプリIDまたはクライアントIDとも呼ばれます)をメモしておきます。次に、*証明書とシークレット*をクリックします。

  10. *新しいクライアントシークレット*をクリックします。

  11. 短い説明を入力し、有効期限を選択して、*追加*をクリックします。AKSクラスターをプロビジョニングする際に使用できるように、クライアントシークレットをメモしておきます。

*結果:*サービスプリンシパルを作成しました。*Azure Active Directory*セクションの*アプリ登録*にリストされているのが見えるはずです。サービスプリンシパルにAKSへのアクセスを付与する必要があります。

サービスプリンシパルにロールベースのアクセスを付与するには、

  1. 左側のナビゲーションバーで*すべてのサービス*をクリックします。次に、*サブスクリプション*をクリックします。

  2. Kubernetesクラスターに関連付けたいサブスクリプションの名前をクリックしてください。サブスクリプションIDをメモして、AKSクラスターをプロビジョニングする際に使用できるようにしてください。

  3. *アクセス制御 (IAM)*をクリックしてください。

  4. *役割の割り当て*セクションで、*追加*をクリックしてください。

  5. *役割*フィールドで、AKSにアクセスできる役割を選択してください。例えば、他のユーザーにアクセスを与えることを除いてすべてを管理する権限を持つ*貢献者*役割を使用できます。

  6. *アクセスを割り当てる*フィールドで、*Azure ADユーザー、グループ、またはサービスプリンシパル*を選択してください。

  7. *選択*フィールドで、サービスプリンシパルの名前を選択し、*保存*をクリックしてください。

*結果:*あなたのサービスプリンシパルは現在AKSにアクセスできます。

AKSクラウド資格情報を作成してください。

  1. Rancher UIで、*☰ > クラスター管理*をクリックしてください。

  2. クラウド資格情報 をクリックします。

  3. 作成]をクリックします。

  4. *Azure*をクリックしてください。

  5. フォームを記入します。フォームの記入に関するヘルプは、設定リファレンスを参照してください。

  6. 作成]をクリックします。

AKSクラスターを作成する

Rancherを使用してKubernetesクラスターを設定および構成してください。

  1. *☰ > クラスター管理*をクリックします。

  2. *クラスター*セクションで、*作成*をクリックしてください。

  3. *Azure AKS*をクリックしてください。

  4. フォームを記入します。フォームの記入に関するヘルプは、設定リファレンスを参照してください。

  5. 作成]をクリックします。

*結果:*クラスターが作成され、状態が*プロビジョニング*に割り当てられました。Rancherがクラスターを立ち上げています。

状態が*アクティブ*に更新された後、クラスターにアクセスできます。

ロールベースのアクセス制御を構成してください。

Rancher UIでAKSクラスターをプロビジョニングする際、RBACは有効である必要があるため、構成できません。

RBACは、Rancherに登録またはインポートされたAKSクラスターに必要です。

Azureコマンドラインツールを使用してサービスプリンシパルへのロール割り当てを設定する

Azureコマンドラインツールを使用してサービスプリンシパルにRancher AKSv2ロールを割り当てます:

az role assignment create \
--assignee <client-id> \
--scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>" \
--role "Rancher AKSv2"

AKSクラスター構成リファレンス

Rancher UIからAKSクラスターを構成する方法についての詳細は、構成リファレンスを参照してください。

プライベートクラスター

通常、AKSワーカーノードは、クラスターがプライベートであるかどうかにかかわらず、パブリックIPを取得しません。プライベートクラスターでは、コントロールプレーンにパブリックエンドポイントはありません。

Rancherは、プライベートAKSクラスターに2つの方法のいずれかで接続できます。

RancherがAKSノードと同じ NAT上で実行されていることを確認する最初の方法です。

2番目の方法は、クラスターをRancherに登録するためのコマンドを実行することです。クラスターがプロビジョニングされると、クラスターのKubernetes APIに接続できる場所で表示されたコマンドを実行できます。このコマンドは、プライベートAPIエンドポイントが有効なAKSクラスターをプロビジョニングする際にポップアップで表示されます。

既存のAKSクラスターを登録する際には、クラスターが`Cluster To register`のドロップダウンリストに表示されるまでに時間がかかる場合があることにご注意ください。この結果はリージョンによって決まります。

AKSプライベートクラスターへの接続に関する詳細は、 AKS ドキュメントをご覧ください。

Azureコマンドラインツールを使用して最小権限ロールを設定する

  1. このコマンドを実行して最小Rancher AKSv2権限ロールを作成します:

  cat >> rancher-azure.json << EOF

  {
      "Name": "Rancher AKSv2",
      "IsCustom": true,
      "Description": "Everything needed by Rancher AKSv2 operator",
      "Actions": [
          "Microsoft.Compute/disks/delete",
          "Microsoft.Compute/disks/read",
          "Microsoft.Compute/disks/write",
          "Microsoft.Compute/diskEncryptionSets/read",
          "Microsoft.Compute/locations/DiskOperations/read",
          "Microsoft.Compute/locations/vmSizes/read",
          "Microsoft.Compute/locations/operations/read",
          "Microsoft.Compute/proximityPlacementGroups/write",
          "Microsoft.Compute/snapshots/delete",
          "Microsoft.Compute/snapshots/read",
          "Microsoft.Compute/snapshots/write",
          "Microsoft.Compute/virtualMachineScaleSets/manualUpgrade/action",
          "Microsoft.Compute/virtualMachineScaleSets/delete",
          "Microsoft.Compute/virtualMachineScaleSets/read",
          "Microsoft.Compute/virtualMachineScaleSets/virtualMachines/networkInterfaces/read",
          "Microsoft.Compute/virtualMachineScaleSets/virtualMachines/networkInterfaces/ipconfigurations/publicipaddresses/read",
          "Microsoft.Compute/virtualMachineScaleSets/virtualmachines/instanceView/read",
          "Microsoft.Compute/virtualMachineScaleSets/virtualMachines/read",
          "Microsoft.Compute/virtualMachineScaleSets/virtualMachines/write",
          "Microsoft.Compute/virtualMachineScaleSets/write",
          "Microsoft.Compute/virtualMachines/read",
          "Microsoft.Compute/virtualMachines/write",
          "Microsoft.ContainerService/managedClusters/read",
          "Microsoft.ContainerService/managedClusters/write",
          "Microsoft.ContainerService/managedClusters/delete",
          "Microsoft.ContainerService/managedClusters/accessProfiles/listCredential/action",
          "Microsoft.ContainerService/managedClusters/agentPools/read",
          "Microsoft.ContainerService/managedClusters/agentPools/write",
          "Microsoft.ContainerService/managedClusters/agentPools/delete",
          "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action",
          "Microsoft.Network/applicationGateways/read",
          "Microsoft.Network/applicationGateways/write",
          "Microsoft.Network/loadBalancers/write",
          "Microsoft.Network/loadBalancers/backendAddressPools/join/action",
          "Microsoft.Network/loadBalancers/delete",
          "Microsoft.Network/loadBalancers/read",
          "Microsoft.Network/networkInterfaces/join/action",
          "Microsoft.Network/networkInterfaces/read",
          "Microsoft.Network/networkInterfaces/write",
          "Microsoft.Network/networkSecurityGroups/read",
          "Microsoft.Network/networkSecurityGroups/write",
          "Microsoft.Network/publicIPAddresses/delete",
          "Microsoft.Network/publicIPAddresses/join/action",
          "Microsoft.Network/publicIPAddresses/read",
          "Microsoft.Network/publicIPAddresses/write",
          "Microsoft.Network/publicIPPrefixes/join/action",
          "Microsoft.Network/privatednszones/*",
          "Microsoft.Network/routeTables/read",
          "Microsoft.Network/routeTables/routes/delete",
          "Microsoft.Network/routeTables/routes/read",
          "Microsoft.Network/routeTables/routes/write",
          "Microsoft.Network/routeTables/write",
          "Microsoft.Network/virtualNetworks/read",
          "Microsoft.Network/virtualNetworks/subnets/join/action",
          "Microsoft.Network/virtualNetworks/subnets/read",
          "Microsoft.Network/virtualNetworks/joinLoadBalancer/action",
          "Microsoft.OperationalInsights/workspaces/sharedkeys/read",
          "Microsoft.OperationalInsights/workspaces/read",
          "Microsoft.OperationsManagement/solutions/write",
          "Microsoft.OperationsManagement/solutions/read",
          "Microsoft.Resources/subscriptions/resourcegroups/read",
          "Microsoft.Resources/subscriptions/resourcegroups/write",
          "Microsoft.Storage/operations/read",
          "Microsoft.Storage/storageAccounts/listKeys/action",
          "Microsoft.Storage/storageAccounts/delete",
          "Microsoft.Storage/storageAccounts/read",
          "Microsoft.Storage/storageAccounts/write"
      ],
      "NotActions": [],
      "DataActions": [],
      "NotDataActions": [],
      "AssignableScopes": [
          "/subscriptions/SUBSCRIPTION_ID"
      ]
  }
  EOF
  1. Rancher AKSv2ロールを適用します:

  az role definition create --role-definition rancher-azure.json
  1. Rancher AKSv2ロールが作成されたかどうかを確認します:

  az role definition list | grep "Rancher AKSv2"

sync

AKSプロビジョナーは、Rancherとプロバイダー間でAKSクラスターの状態を同期できます。これがどのように機能するかについての詳細な技術的説明は、syncを参照してください。

リフレッシュ間隔の設定に関する情報は、このセクションを参照してください。

プログラムによるAKSクラスターの作成

Rancherを通じてAKSクラスターをプログラム的にデプロイする最も一般的な方法は、Rancher2 Terraformプロバイダーを使用することです。Terraformを使用したクラスターの作成に関するドキュメントは こちらです。