Azure Arc 対応 Kubernetes クラスターに対して GitOps を使用して Helm チャートをデプロイする
重要
この記事は、Flux v1 を使用した GitOps 向けです。 Azure Arc 対応 Kubernetes と Azure Kubernetes Service (AKS) クラスターに対して、Flux v2 による GitOps を使用できるようになりました。Flux v2 による GitOps のチュートリアルに進んでください。 できるだけ早く Flux v2 に移行 することをお勧めします。
2024 年 1 月 1 日より前に作成された Flux v1 ベースのクラスター構成リソースのサポートは、2025 年 5 月 24 日に終了します。 2024 年 1 月 1 日から、新しい Flux v1 ベースのクラスター構成リソースを作成することはできません。 Helm は、Kubernetes アプリケーションのライフサイクルをインストールおよび管理するのに役立つオープン ソースのパッケージ化ツールです。 APT や Yum などの Linux パッケージ マネージャーと同様に、Helm は、構成済みの Kubernetes リソースのパッケージである Kubernetes チャート の管理に使用されます。
この記事では、Azure Arc 対応 Kubernetes で Helm を構成して使用する方法を示します。
前提条件
アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成できます。
Azure Arc 対応 Kubernetes に接続された既存のクラスター。
- まだクラスターを接続していない場合は、Azure Arc 対応 Kubernetes クラスターの接続に関するクイックスタートをご覧ください。
この機能の利点とアーキテクチャについて理解していること。 詳細については、Azure Arc 対応 Kubernetes での構成と GitOps に関する記事をご覧ください。
k8s-configuration
Azure CLI 拡張機能バージョン 1.0.0 以降をインストールします。az extension add --name k8s-configuration
Azure Arc 対応 Kubernetes での GitOps および Helm の使用の概要
Helm Operator により、Helm Chart の Release を自動化する Flux への拡張機能が提供されます。 Helm Chart の Release は、HelmRelease と呼ばれる Kubernetes のカスタム リソースによって表現されます。 Flux によってこれらのリソースが Git からクラスターに同期され、Helm Operator によって Helm Chart がリソースで指定されたとおりに確実にリリースされるようにします。
この記事で使用されるリポジトリの例は、次のように構成されています。
├── charts
│ └── azure-arc-sample
│ ├── Chart.yaml
│ ├── templates
│ │ ├── NOTES.txt
│ │ ├── deployment.yaml
│ │ └── service.yaml
│ └── values.yaml
└── releases
└── app.yaml
この Git リポジトリには、2 つのディレクトリがあります。一方には Helm Chart が含まれ、もう一方には Release の構成が含まれています。releases
ディレクトリ内の app.yaml
には、次のような HelmRelease の構成が含まれています。
apiVersion: helm.fluxcd.io/v1
kind: HelmRelease
metadata:
name: azure-arc-sample
namespace: arc-k8s-demo
spec:
releaseName: arc-k8s-demo
chart:
git: https://github.com/Azure/arc-helm-demo
ref: master
path: charts/azure-arc-sample
values:
serviceName: arc-k8s-demo
Helm Release の構成には、次のフィールドが含まれています。
フィールド | 説明 |
---|---|
metadata.name |
必須フィールドです。 Kubernetes の名前付け規則に従っている必要があります。 |
metadata.namespace |
オプション フィールド。 Release の作成場所を指定します。 |
spec.releaseName |
オプション フィールド。 指定されない場合、Release 名は $namespace-$name になります。 |
spec.chart.path |
チャートが含まれているディレクトリ (リポジトリのルートからの相対パス)。 |
spec.values |
Chart そのものからの既定のパラメーター値に対するユーザーによるカスタム値です。 |
Chart ソースの values.yaml
で指定されたオプションにより、HelmRelease の spec.values
に指定されたオプションはオーバーライドされます。
詳細については、公式の Helm Operator のドキュメントを参照してください。
構成を作成する
k8s-configuration
の Azure CLI 拡張機能を使用して、接続されたクラスターを Git リポジトリの例にリンクします。 この構成に azure-arc-sample
という名前を付け、Flux Operator を arc-k8s-demo
名前空間にデプロイします。
az k8s-configuration create --name azure-arc-sample --cluster-name AzureArcTest1 --resource-group AzureArcTest --operator-instance-name flux --operator-namespace arc-k8s-demo --operator-params='--git-readonly --git-path=releases' --enable-helm-operator --helm-operator-chart-version='1.2.0' --helm-operator-params='--set helm.versions=v3' --repository-url https://github.com/Azure/arc-helm-demo.git --scope namespace --cluster-type connectedClusters
構成パラメータ
構成の作成をカスタマイズするには、その他のパラメーターを確認してください。
構成の検証
Azure CLI を使用して、構成の作成が成功したことを検証します。
az k8s-configuration show --name azure-arc-sample --cluster-name AzureArcTest1 --resource-group AzureArcTest --cluster-type connectedClusters
構成リソースで、コンプライアンスの状態、メッセージ、およびデバッグの情報が更新されます。
{
"complianceStatus": {
"complianceState": "Installed",
"lastConfigApplied": "2019-12-05T05:34:41.481000",
"message": "{\"OperatorMessage\":null,\"ClusterState\":null}",
"messageLevel": "3"
},
"enableHelmOperator": "True",
"helmOperatorProperties": {
"chartValues": "--set helm.versions=v3",
"chartVersion": "1.2.0"
},
"id": "/subscriptions/57ac26cf-a9f0-4908-b300-9a4e9a0fb205/resourceGroups/AzureArcTest/providers/Microsoft.Kubernetes/connectedClusters/AzureArcTest1/providers/Microsoft.KubernetesConfiguration/sourceControlConfigurations/azure-arc-sample",
"name": "azure-arc-sample",
"operatorInstanceName": "flux",
"operatorNamespace": "arc-k8s-demo",
"operatorParams": "--git-readonly --git-path=releases",
"operatorScope": "namespace",
"operatorType": "Flux",
"provisioningState": "Succeeded",
"repositoryPublicKey": "",
"repositoryUrl": "https://github.com/Azure/arc-helm-demo.git",
"resourceGroup": "AzureArcTest",
"type": "Microsoft.KubernetesConfiguration/sourceControlConfigurations"
}
アプリケーションを検証する
次のコマンドを実行し、ブラウザーで localhost:8080
に移動して、アプリケーションが実行されていることを確認します。
kubectl port-forward -n arc-k8s-demo svc/arc-k8s-demo 8080:8080
次のステップ
Azure Policy を使用してクラスター構成を大規模に適用する。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示