你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在已启用 Azure Arc 的 Kubernetes 群集上使用 GitOps 部署 Helm 图表
重要
本文适用于带 Flux v1 的 GitOps。 GitOps with Flux v2 现在适用于已启用 Azure Arc 的 Kubernetes 和 Azure Kubernetes 服务 (AKS) 群集;转到 GitOps with Flux v2 的教程。 建议尽快迁移到 Flux v2。
自 2025 年 5 月 24 日起,将不再支持 2024 年 1 月 1 日之前创建的基于 Flux v1 的群集配置资源。 从 2024 年 1 月 1 日开始,你将无法创建新的基于 Flux v1 的群集配置资源。 Helm 是一种开放源打包工具,有助于安装和管理 Kubernetes 应用程序的生命周期。 与诸如 APT 和 Yum 的 Linux 包管理器类似,Helm 用于管理 Kubernetes 图表,这些图表是预配置的 Kubernetes 资源包。
本文介绍了如何配置 Helm 并将其用于启用了 Azure Arc 的 Kubernetes。
先决条件
具有活动订阅的 Azure 帐户。 免费创建帐户。
一个现有的已启用 Azure Arc 的 Kubernetes 连接的群集。
- 如果尚未连接群集,请参阅连接已启用 Azure Arc 的 Kubernetes 群集快速入门。
了解此功能的好处和体系结构。 有关详细信息,请参阅配置和 GitOps - 已启用 Azure Arc 的 Kubernetes 一文。
安装 1.0.0 或更高版本的
k8s-configuration
Azure CLI 扩展:az extension add --name k8s-configuration
将 GitOps 与 Helm 配合用于已启用 Azure Arc 的 Kubernetes 概述
Helm Operator 提供了 Flux 的一个扩展,用于自动完成 Helm 图表发布。 Helm 图表发布是通过名为 HelmRelease 的 Kubernetes 自定义资源描述的。 Flux 将这些资源从 Git 同步到群集,同时 Helm Operator 确保根据资源中指定的内容发布 Helm 图表。
本文中使用的示例存储库的结构如下所示:
├── charts
│ └── azure-arc-sample
│ ├── Chart.yaml
│ ├── templates
│ │ ├── NOTES.txt
│ │ ├── deployment.yaml
│ │ └── service.yaml
│ └── values.yaml
└── releases
└── app.yaml
Git 存储库中有两个目录,其中一个目录包含 Helm 图表,另一个目录包含发布配置。在 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 发布配置包含以下字段:
字段 | 说明 |
---|---|
metadata.name |
必填字段。 需要遵循 Kubernetes 命名约定。 |
metadata.namespace |
可选字段。 确定创建发布的位置。 |
spec.releaseName |
可选字段。 如果未提供,则发布名称将是 $namespace-$name 。 |
spec.chart.path |
包含图表的目录(相对于存储库根路径)。 |
spec.values |
图表本身中默认参数值的用户自定义设置。 |
HelmRelease spec.values
中指定的选项将替代图表源中的 values.yaml
中指定的选项。
可以在官方 Helm Operator 文档中详细了解 HelmRelease。
创建配置
使用适用于 k8s-configuration
的 Azure CLI 扩展,将已连接的群集链接到示例 Git 存储库。 将此配置命名为 azure-arc-sample
,并在 arc-k8s-demo
命名空间中部署 Flux Operator。
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 大规模应用群集配置。