|
この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。 |
Azureクラウドプロバイダーの設定
|
重要:
Kubernetes 1.30以降では、アウトオブツリーのAzureクラウドプロバイダーを使用する必要があります。Azureクラウドプロバイダーは 完全に削除されました。Kubernetes 1.30にアップグレード後は機能しません。以下に示す手順は、Azureクラウドプロバイダーを設定するために依然として必要です。Azureの前提条件を完了した後に、アウトオブツリーのクラウドプロバイダーを設定できます。 Kubernetes 1.29以前では、インツリーからアウトオブツリーのAzureクラウドプロバイダーに移行することもできます。すべての既存のクラスターは、機能を維持するためにv1.30にアップグレードする前に移行する必要があります。 Kubernetes 1.29以降、インツリーのクラウドプロバイダーは無効化されています。インツリーのAzureクラウドプロバイダーを使用するには、`DisableCloudProviders`と`DisableKubeletCloudCredentialProviders`のフィーチャーゲートを`false`に設定する必要があります。これは、クラスターのKubelet、コントローラーマネージャー、およびAPIサーバーの高度なクラスター設定で`feature-gates=DisableCloudProviders=false,DisableKubeletCloudCredentialProviders=false`を追加の引数として設定することで実行できます。Kubelet、コントローラーマネージャー、およびAPIサーバーの引数に`DisableKubeletCloudCredentialProviders=false`を設定すると、Azureコンテナレジストリへの認証のためのインツリー機能が有効になります。詳細については、 Kubernetes 1.29: Mandalaリリースノートおよびこの ブログ投稿を参照してください。 Kubernetesバージョン1.26以降、インツリーの永続ボリュームタイプ`kubernetes.io/azure-disk`と`kubernetes.io/azure-file`は廃止され、もはやサポートされません。新しいクラスターの場合、CSIドライバーをインストールするか、`disk.csi.azure.com`および`file.csi.azure.com`に対応するCSIドライバーに移行するには、 アップストリーム移行ドキュメントに従ってください。 |
`Azure`クラウドプロバイダーを使用する場合、次の機能を活用できます:
-
*ロードバランサー:*特定のネットワークセキュリティグループ内にAzureロードバランサーを起動します。
-
*永続ボリューム:*標準およびプレミアムストレージアカウントでAzure BlobディスクおよびAzureマネージドディスクの使用をサポートします。
-
*ネットワークストレージ:*CIFSマウントを介してAzure Filesをサポートします。
次のアカウントタイプはAzureのサブスクリプションではサポートされていません。
-
シングルテナントアカウント(つまり、サブスクリプションのないアカウント)。
-
マルチサブスクリプションアカウント。
RKEおよびSUSE® Rancher Prime: RKE2の前提条件
RKEおよびRKE2のためにAzureクラウドプロバイダーを設定するには、次の資格情報を構成する必要があります。
1.AzureテナントIDを設定する
Azureポータルにアクセスし、ログインして*Azure Active Directory*に移動し、プロパティ*を選択します。あなたの*ディレクトリID*はあなたの*テナントID(tenantID)です。
Azure CLIを使用したい場合は、情報を取得するためにコマンド`az account show`を実行できます。
2.AzureクライアントIDとAzureクライアントシークレットを設定する
Azureポータルにアクセスし、ログインして以下の手順に従い、アプリ登録*を作成し、対応する*AzureクライアントID(aadClientId)と*Azureクライアントシークレット*(aadClientSecret)を作成します。
-
Azure Active Directoryを選択する
-
アプリ登録を選択する
-
新しいアプリケーション登録を選択する
-
*名前*を選択し、`Web app / API`を*アプリケーションタイプ*として選択し、この場合は何でも構いませんが*サインオンURL*を選択します。
-
*作成*を選択します。
アプリ登録*のビューで、作成したアプリ登録が表示されるはずです。列 *APPLICATION ID に表示されている値は、Azure Client ID として使用する必要があります。
次のステップは、Azure Client Secret を生成することです。
-
作成したアプリ登録を開いてください。
-
設定 ビューで、キー を開いてください。
-
キーの説明 を入力し、期限を選択して、保存 を選択してください。
-
列 値 に表示される生成された値は、Azure Client Secret として使用する必要があります。この値は一度だけ表示されます。
SUSE® Rancher Prime: RKE2 Rancher でのクラスター設定
|
重要:
このセクションは、インツリークラウドプロバイダーを使用してクラスターを作成する場合にのみ有効です。 |
-
クラスター構成セクションのクラウドプロバイダーのドロップダウンから「Azure」を選択してください。
-
クラウドプロバイダー設定を提供してください。Rancherは自動的に新しいネットワークセキュリティグループ、リソースグループ、可用性セット、サブネット、および仮想ネットワークを作成します。これらのいずれかまたはすべてがすでに作成されている場合は、クラスターを作成する前にそれらを指定する必要があります。
-
自動生成されたこれらの名前を表示または編集するには、*詳細を表示*をクリックしてください。あなたのクラウドプロバイダー設定は、*マシンプール*セクションのフィールドと一致する必要があります。複数のプールがある場合は、すべて同じリソースグループ、可用性セット、サブネット、仮想ネットワーク、およびネットワークセキュリティグループを使用する必要があります。
-
以下に例を示します。必要に応じて修正してください。
例:クラウドプロバイダー設定
+
{ "cloud":"AzurePublicCloud", "tenantId": "YOUR TENANTID HERE", "aadClientId": "YOUR AADCLIENTID HERE", "aadClientSecret": "YOUR AADCLIENTSECRET HERE", "subscriptionId": "YOUR SUBSCRIPTIONID HERE", "resourceGroup": "docker-machine", "location": "westus", "subnetName": "docker-machine", "securityGroupName": "rancher-managed-KA4jV9V2", "securityGroupResourceGroup": "docker-machine", "vnetName": "docker-machine-vnet", "vnetResourceGroup": "docker-machine", "primaryAvailabilitySetName": "docker-machine", "routeTableResourceGroup": "docker-machine", "cloudProviderBackoff": false, "useManagedIdentityExtension": false, "useInstanceMetadata": true }+
-
-
menu:クラスター構成[詳細]セクションの下で、*追加*をクリックし、*追加のコントローラーマネージャー引数*の下にこのフラグを追加します:
--configure-cloud-routes=false -
*作成*をクリックしてフォームを送信し、クラスターを作成します。
クラウドプロバイダー設定
Rancherは自動的に新しいネットワークセキュリティグループ、リソースグループ、可用性セット、サブネット、および仮想ネットワークを作成します。これらのいずれかまたはすべてがすでに作成されている場合は、クラスターを作成する前にそれらを指定する必要があります。自動生成されたこれらの名前を表示または編集するには、*RKE1ノードテンプレート*または*RKE2マシンプール*を確認できます。
設定オプションの完全なリストは、 アップストリームドキュメントを参照してください。
|
AzureはKubernetesシークレットからクラウド設定を読み取ることをサポートしています。シークレットはazure.jsonファイルのシリアライズされたバージョンです。シークレットが変更されると、クラウドコントローラーマネージャーはポッドを再起動せずに自らを再構築します。Helmチャートがシークレットからクラウドプロバイダー設定を読み取ることを推奨します。
チャートは`kube-system`ネームスペース内の指定されたシークレット名からクラウドプロバイダー設定を読み取ることに注意してください。AzureがKubernetesシークレットを読み取るため、RBACも設定する必要があります。クラウドプロバイダー設定の例シークレットは以下に示されています。必要に応じて修正し、シークレットを作成してください。
# azure-cloud-config.yaml
apiVersion: v1
kind: Secret
metadata:
name: azure-cloud-config
namespace: kube-system
type: Opaque
stringData:
cloud-config: |-
{
"cloud": "AzurePublicCloud",
"tenantId": "<tenant-id>",
"subscriptionId": "<subscription-id>",
"aadClientId": "<client-id>",
"aadClientSecret": "<client-secret>",
"resourceGroup": "docker-machine",
"location": "westus",
"subnetName": "docker-machine",
"securityGroupName": "rancher-managed-kqmtsjgJ",
"securityGroupResourceGroup": "docker-machine",
"vnetName": "docker-machine-vnet",
"vnetResourceGroup": "docker-machine",
"primaryAvailabilitySetName": "docker-machine",
"routeTableResourceGroup": "docker-machine",
"cloudProviderBackoff": false,
"useManagedIdentityExtension": false,
"useInstanceMetadata": true,
"loadBalancerSku": "standard",
"excludeMasterFromStandardLB": false,
}
アウトオブツリーAzureクラウドプロバイダーの使用
-
RKE2
-
RKE1
-
*クラスター設定*セクションの*クラウドプロバイダー*ドロップダウンから*外部*を選択します。
-
menu:クラスター設定[詳細設定]の下で、*追加のコントローラーマネージャー引数*の下にある*追加*をクリックし、このフラグを追加します:
--configure-cloud-routes=false。 -
次のステップで設定するためにクラウドプロバイダー設定を準備します。Rancherは自動的に新しいネットワークセキュリティグループ、リソースグループ、可用性セット、サブネット、および仮想ネットワークを作成します。これらのいずれかまたはすべてがすでに作成されている場合は、クラスターを作成する前にそれらを指定する必要があります。
自動生成されたこれらの名前を表示または編集するには、詳細を表示*をクリックしてください。あなたのクラウドプロバイダー設定は、**マシンプール*セクションのフィールドと一致する必要があります。複数のプールがある場合は、すべて同じリソースグループ、可用性セット、サブネット、仮想ネットワーク、およびネットワークセキュリティグループを使用する必要があります。
-
*クラスター設定 > アドオン設定*の下に、以下に示すクラウドコントローラーマネージャーマニフェストを*追加のマニフェスト*に追加します。
このチャートは`kube-system`ネームスペース内のシークレットからクラウドプロバイダー設定を読み取ることに注意してください。クラウドプロバイダー設定用のシークレットの例は以下に示されています。必要に応じて修正してください。 アップストリームドキュメントにある設定オプションの完全なリストを参照してください。
また、Helm CLIを使用してクラウドコントローラーマネージャーをインストールすることもできます。
apiVersion: helm.cattle.io/v1 kind: HelmChart metadata: name: azure-cloud-controller-manager namespace: kube-system spec: chart: cloud-provider-azure repo: https://raw.githubusercontent.com/kubernetes-sigs/cloud-provider-azure/master/helm/repo targetNamespace: kube-system bootstrap: true valuesContent: |- infra: clusterName: <cluster-name> cloudControllerManager: cloudConfigSecretName: azure-cloud-config cloudConfig: null clusterCIDR: null enableDynamicReloading: 'true' nodeSelector: node-role.kubernetes.io/control-plane: 'true' allocateNodeCidrs: 'false' hostNetworking: true caCertDir: /etc/ssl configureCloudRoutes: 'false' enabled: true tolerations: - effect: NoSchedule key: node-role.kubernetes.io/master - effect: NoSchedule key: node-role.kubernetes.io/control-plane value: 'true' - effect: NoSchedule key: node.cloudprovider.kubernetes.io/uninitialized value: 'true' --- apiVersion: v1 kind: Secret metadata: name: azure-cloud-config namespace: kube-system type: Opaque stringData: cloud-config: |- { "cloud": "AzurePublicCloud", "tenantId": "<tenant-id>", "subscriptionId": "<subscription-id>", "aadClientId": "<client-id>", "aadClientSecret": "<client-secret>", "resourceGroup": "docker-machine", "location": "westus", "subnetName": "docker-machine", "securityGroupName": "rancher-managed-kqmtsjgJ", "securityGroupResourceGroup": "docker-machine", "vnetName": "docker-machine-vnet", "vnetResourceGroup": "docker-machine", "primaryAvailabilitySetName": "docker-machine", "routeTableResourceGroup": "docker-machine", "cloudProviderBackoff": false, "useManagedIdentityExtension": false, "useInstanceMetadata": true, "loadBalancerSku": "standard", "excludeMasterFromStandardLB": false, } -
*作成*をクリックしてフォームを送信し、クラスターを作成します。
-
*クラスターオプション*セクションの*クラウドプロバイダー*のドロップダウンから*外部*を選択してください。これにより、Kubernetesコンポーネントの`--cloud-provider=external`が設定されます。
-
クラスターのプロビジョニングが完了した後に、`cloud-provider-azure`チャートをインストールします。クラウドコントローラーマネージャーをデプロイするまで、クラスターは正常にプロビジョニングされておらず、ノードはまだ`uninitialized`状態にあることに注意してください。これはCLIを使用して手動で行うことも、UIのHelmチャートを介して行うこともできます。
クラウドコントローラーマネージャーのデプロイに関する詳細は、 公式のAzureアップストリームドキュメントを参照してください。
CLIからのHelmチャートのインストール
Helmチャートのインストールに関する公式のアップストリームドキュメントはGithubにあります。
-
必要なクラウドプロバイダーの設定を持つ`azure-cloud-config`シークレットを作成します。
kubectl apply -f azure-cloud-config.yaml -
Helmリポジトリを追加します:
helm repo add azure-cloud-controller-manager https://raw.githubusercontent.com/kubernetes-sigs/cloud-provider-azure/master/helm/repo helm repo update -
デフォルトの`values.yaml`を上書きするために、次の内容を持つ`values.yaml`ファイルを作成します:
-
RKE2
-
RKE
# values.yaml infra: clusterName: <cluster-name> cloudControllerManager: cloudConfigSecretName: azure-cloud-config cloudConfig: null clusterCIDR: null enableDynamicReloading: 'true' configureCloudRoutes: 'false' allocateNodeCidrs: 'false' caCertDir: /etc/ssl enabled: true replicas: 1 hostNetworking: true nodeSelector: node-role.kubernetes.io/control-plane: 'true' tolerations: - effect: NoSchedule key: node-role.kubernetes.io/master - effect: NoSchedule key: node-role.kubernetes.io/control-plane value: 'true' - effect: NoSchedule key: node.cloudprovider.kubernetes.io/uninitialized value: 'true'# values.yaml cloudControllerManager: cloudConfigSecretName: azure-cloud-config cloudConfig: null clusterCIDR: null enableDynamicReloading: 'true' configureCloudRoutes: 'false' allocateNodeCidrs: 'false' caCertDir: /etc/ssl enabled: true replicas: 1 hostNetworking: true nodeSelector: node-role.kubernetes.io/controlplane: 'true' node-role.kubernetes.io/control-plane: null tolerations: - effect: NoSchedule key: node-role.kubernetes.io/controlplane value: 'true' - effect: NoSchedule key: node.cloudprovider.kubernetes.io/uninitialized value: 'true' infra: clusterName: <cluster-name> -
-
Helmチャートをインストールします:
helm upgrade --install cloud-provider-azure azure-cloud-controller-manager/cloud-provider-azure -n kube-system --values values.yamlHelmチャートが正常にインストールされたことを確認します:
helm status cloud-provider-azure -n kube-system -
(オプション)クラウドコントローラーマネージャーの更新が成功したことを確認します:
kubectl rollout status deployment -n kube-system cloud-controller-manager kubectl rollout status daemonset -n kube-system cloud-node-manager -
クラウドプロバイダーはノードのProviderIDを設定する責任があります。すべてのノードがProviderIDで初期化されているか確認します:
kubectl describe nodes | grep "ProviderID"
UIからのHelmチャートのインストール
-
*☰*をクリックし、左側のナビゲーションからクラスターの名前を選択します。
-
アプリ > *リポジトリ*を選択します。
-
[Create]ボタンをクリックします。
-
*インデックスURL*フィールドに`https://raw.githubusercontent.com/kubernetes-sigs/cloud-provider-azure/master/helm/repo`を入力します。
-
左側のナビゲーションから*アプリ* > *チャート*を選択し、*cloud-provider-azure*チャートをインストールします。
-
名前空間`kube-system`を選択し、*インストール前にHelmオプションをカスタマイズする*を有効にします。
-
`cloudConfig: /etc/kubernetes/azure.json`をCloud Config Secretから読み取るように置き換え、動的リロードを有効にします:
cloudConfigSecretName: azure-cloud-config enableDynamicReloading: 'true' -
必要に応じて以下のフィールドを更新してください:
allocateNodeCidrs: 'false' configureCloudRoutes: 'false' clusterCIDR: null
-
RKE2
-
RKE
-
RancherがプロビジョニングしたRKE2ノードには、セレクタ`node-role.kubernetes.io/control-plane`が`true`に設定されています。nodeSelectorを更新する:
nodeSelector: node-role.kubernetes.io/control-plane: 'true'
-
RancherがプロビジョニングしたRKEノードは、`node-role.kubernetes.io/controlplane`でテイントされています。トレランスとnodeSelectorを更新する:
tolerations: - effect: NoSchedule key: node.cloudprovider.kubernetes.io/uninitialized value: 'true' - effect: NoSchedule value: 'true' key: node-role.kubernetes.io/controlplanenodeSelector: node-role.kubernetes.io/controlplane: 'true'
-
チャートをインストールし、クラウドコントローラーとクラウドノードマネージャーが正常にデプロイされたことを確認する:
kubectl rollout status deployment -n kube-system cloud-controller-manager kubectl rollout status daemonset -n kube-system cloud-node-manager -
クラウドプロバイダーはノードのProviderIDを設定する責任があります。すべてのノードがProviderIDで初期化されているか確認します:
kubectl describe nodes | grep "ProviderID"
CSIドライバーのインストール
Azure Disk CSIドライバーまたは Azure File CSIドライバーをインストールして、それぞれ Azure Diskまたは Azure Fileボリュームにアクセスします。
Azure Disk CSIドライバーをインストールする手順は以下の通りです。Azure File CSIドライバーも同様の方法で、 helmインストールドキュメントに従ってインストールできます。
|
重要
Azure Diskを使用するには、クラスタを`Managed Disk`を使用してプロビジョニングする必要があります。*RKE1ノードテンプレート*または_*RKE2マシンプール_を作成する際にこれを設定できます。 |
Helmチャートのインストールに関する公式のアップストリームドキュメントはGithubにあります。
-
helmリポジトリを追加および更新する:
helm repo add azuredisk-csi-driver https://raw.githubusercontent.com/kubernetes-sigs/azuredisk-csi-driver/master/charts helm repo update azuredisk-csi-driver -
以下のようにチャートをインストールし、必要に応じて—バージョン引数を更新する。 アップストリームドキュメントに最新のチャート設定の完全なリストを参照してください。
helm install azuredisk-csi-driver azuredisk-csi-driver/azuredisk-csi-driver --namespace kube-system --version v1.30.1 --set controller.cloudConfigSecretName=azure-cloud-config --set controller.cloudConfigSecretNamespace=kube-system --set controller.runOnControlPlane=true -
(オプション)azuredisk-csi-driverのインストールが成功したことを確認する:
kubectl --namespace=kube-system get pods --selector="app.kubernetes.io/name=azuredisk-csi-driver" --watch -
例のストレージクラスをプロビジョニングする:
cat <<EOF | kubectl create -f - kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: standard provisioner: kubernetes.io/azure-disk parameters: storageaccounttype: Standard_LRS kind: Managed EOFストレージクラスがプロビジョニングされたことを確認する:
kubectl get storageclasses -
PersistentVolumeClaimを作成する:
cat <<EOF | kubectl create -f - kind: PersistentVolumeClaim apiVersion: v1 metadata: name: azure-disk-pvc spec: storageClassName: standard accessModes: ** ReadWriteOnce resources: requests: storage: 5Gi EOFPersistentVolumeClaimとPersistentVolumeが作成されたことを確認する:
kubectl get persistentvolumeclaim kubectl get persistentvolume -
新しいAzureディスクを接続してください。
これでKubernetesのPersistentVolumeをKubernetes Podにマウントできます。ディスクは、Deployment、DaemonSet、またはStatefulSetを含む任意のKubernetesオブジェクトタイプによって使用できます。ただし、以下の例ではPersistentVolumeをスタンドアロンのPodに単純にマウントします。
cat <<EOF | kubectl create -f - kind: Pod apiVersion: v1 metadata: name: mypod-dynamic-azuredisk spec: containers: - name: mypod image: nginx ports: - containerPort: 80 name: "http-server" volumeMounts: - mountPath: "/usr/share/nginx/html" name: storage volumes: - name: storage persistentVolumeClaim: claimName: azure-disk-pvc EOF