GitOps (Flux v2) 支持的参数
Azure 使用适用于 Azure Kubernetes 服务 (AKS) 和已启用 Azure Arc 的 Kubernetes 群集的 GitOps 提供自动化应用程序部署功能。 带有 Flux v2 的 GitOps 允许将 Git 存储库用作群集配置和应用程序部署的事实来源。 有关详细信息,请参阅使用 GitOps (Flux v2) 部署应用程序和教程:使用 GitOps 和 Flux v2 部署应用程序。
已启用 Azure Arc 的 Kubernetes 或 Azure Kubernetes 服务上的 GitOps 使用 Flux,这是一种热门的开源工具集,支持许多参数以支持各种方案。 有关 Flux 支持的所有参数的说明,请参阅官方 Flux 文档。
若要查看 Azure 中 Flux 支持的所有参数,请参阅 az k8s-configuration
文档。 此实现目前并不支持 Flux 支持的所有参数。 如果 Azure 实现中缺少你需要的参数,请告诉我们。
本文介绍了可用于 az k8s-configuration flux create
命令的一些参数和自变量。 还可以通过使用 Azure CLI 中的 -h
参数(例如 az k8s-configuration flux -h
或 az k8s-configuration flux create -h
),查看 az k8s-configuration flux
的参数完整列表。
提示
使用不受支持的参数部署 Flux 资源的一种解决方法是在 Git 存储库中定义所需的 Flux 自定义资源(例如 GitRepository 或 Kustomization)。 使用 az k8s-configuration flux create
命令部署这些资源。 接下来,你仍然可以通过 Azure Arc UI 访问 Flux 资源。
配置常规参数
参数 | 格式 | 说明 |
---|---|---|
--cluster-name -c |
字符串 | Azure 中群集资源的名称。 |
--cluster-type -t |
允许的值:connectedClusters 、managedClusters |
将 connectedClusters 用于已启用 Azure Arc 的 Kubernetes 群集,或将 managedClusters 用于 AKS 群集。 |
--resource-group -g |
字符串 | 包含群集资源的 Azure 资源组的名称。 |
--name -n |
字符串 | Azure 中 Flux 配置的名称。 |
--namespace --ns |
字符串 | 用于部署配置的命名空间的名称。 默认:default 。 |
--scope -s |
字符串 | 操作员的权限范围。 可能的值为 cluster (完全访问权限)或 namespace (受限访问权限)。 默认:cluster 。 |
--suspend |
flag | 暂停此 Flux 配置中定义的所有源和 kustomize 调整。 在暂停时处于活动状态的调整将继续进行。 |
源常规参数
参数 | 格式 | 说明 |
---|---|---|
--kind |
字符串 | 要调整的源类型。 允许的值:bucket 、git 、azblob 。 默认:git 。 |
--timeout |
golang 持续时间格式 | 在超时之前尝试调整源的最长时间。默认值:10m 。 |
--sync-interval --interval |
golang 持续时间格式 | 在群集上调整源的时间间隔。 默认:10m 。 |
Git 存储库源引用参数
参数 | 格式 | 说明 |
---|---|---|
--branch |
字符串 | Git 源中要同步到群集的分支。 默认:master 。 较新的存储库可能有一个名为 main 的根分支,在这种情况下,需要设置 --branch=main 。 |
--tag |
字符串 | Git 源中要同步到群集的标记。 示例:--tag=3.2.0 。 |
--semver |
字符串 | Git 源中要同步到群集的 Git 标记 semver 范围。 示例:--semver=">=3.1.0-rc.1 <3.2.0" 。 |
--commit |
字符串 | Git 源中要同步到群集的 Git 提交 SHA。 示例:--commit=363a6a8fe6a7f13e05d34c163b0ef02a777da20a 。 |
有关详细信息,请参阅有关 Git 存储库签出策略的 Flux 文档。
公共 Git 存储库
参数 | 格式 | 说明 |
---|---|---|
--url -u |
http[s]://server/repo[.git] |
要在群集上调整的 Git 存储库源的 URL。 |
使用 SSH 的专用 Git 存储库
重要
Azure DevOps 宣布弃用 SSH-RSA,作为使用 SSH 连接到 Azure 存储库的受支持加密方法。 如果使用 SSH 密钥连接到 Flux 配置中由世纪互联运营的 Azure 存储库,建议移动到更安全的 RSA-SHA2-256 或 RSA-SHA2-512 密钥。 有关详细信息,请参阅 Azure DevOps SSH-RSA 弃用。
专用 Git 存储库以及 SSH 和 Flux 创建的密钥
将 Flux 生成的公钥添加到 Git 服务提供程序中的用户帐户。
参数 | 格式 | 说明 |
---|---|---|
--url -u |
ssh://user@server/repo[.git] |
如果公钥与存储库而不是用户帐户相关联,则 git@ 应替换 user@ 。 |
专用 Git 存储库以及 SSH 和用户提供的密钥
直接或者在文件中使用你自己的私钥。 该密钥必须采用 PEM 格式,并以换行符 (\n
) 结尾。
将关联的公钥添加到 Git 服务提供程序中的用户帐户。
参数 | 格式 | 说明 |
---|---|---|
--url -u |
ssh://user@server/repo[.git] | 如果公钥与存储库而不是用户帐户相关联,则 git@ 应替换 user@ 。 |
--ssh-private-key |
采用 PEM 格式的 Base64 密钥 | 直接提供密钥。 |
--ssh-private-key-file |
本地文件的完整路径 | 提供包含 PEM 格式密钥的本地文件的完整路径。 |
专用 Git 主机以及 SSH 和用户提供的已知主机
Flux operator 在其 known_hosts
文件中维护一个常用 Git 主机列表。 Flux 在建立 SSH 连接之前使用此信息对 Git 存储库进行身份验证。 如果你使用的是不常用的 Git 存储库或自己的 Git 主机,则可以提供主机密钥,这样 Flux 就可以识别你的存储库。
与私钥一样,可直接或在文件中提供 known_hosts
内容。 提供自己的内容时,请使用 known_hosts 内容格式规范,以及上述任一 SSH 密钥方案。
参数 | 格式 | 说明 |
---|---|---|
--url -u |
ssh://user@server/repo[.git] | git@ 可以替换 user@ 。 |
--known-hosts |
Base64 字符串 | 直接提供 known_hosts 内容。 |
--known-hosts-file |
本地文件的完整路径 | 在本地文件中提供 known_hosts 内容。 |
专用 Git 存储库以及 HTTPS 用户和密钥
参数 | 格式 | 说明 |
---|---|---|
--url -u |
https://server/repo[.git] |
使用基本身份验证的 HTTPS。 |
--https-user |
原始字符串 | HTTPS 用户名。 |
--https-key |
原始字符串 | HTTPS 个人访问令牌或密码。 |
专用 Git 存储库以及 HTTPS CA 证书
参数 | 格式 | 说明 |
---|---|---|
--url -u |
https://server/repo[.git] |
使用基本身份验证的 HTTPS。 |
--https-ca-cert |
Base64 字符串 | 用于 TLS 通信的 CA 证书。 |
--https-ca-cert-file |
本地文件的完整路径 | 在本地文件中提供 CA 证书内容。 |
Bucket 源参数
如果使用 bucket
源,下面是特定于 Bucket 的命令自变量。
参数 | 格式 | 说明 |
---|---|---|
--url -u |
URL 字符串 | bucket 的 URL。 支持的格式:http:// 、https:// 。 |
--bucket-name |
字符串 | 要同步的 bucket 的名称。 |
--bucket-access-key |
字符串 | 用于通过 bucket 进行身份验证的访问密钥 ID。 |
--bucket-secret-key |
字符串 | 用于通过 bucket 进行身份验证的密钥。 |
--bucket-insecure |
布尔 | 与不使用 TLS 的 bucket 进行通信。 如果未提供,则假定为 false;如果提供,则假定为 true。 |
Azure Blob 存储帐户源参数
如果使用 azblob
源,下面是特定于 Blob 的命令自变量。
参数 | 格式 | 说明 |
---|---|---|
--url -u |
URL 字符串 | azblob 的 URL。 |
--container-name |
字符串 | 要同步的 Azure Blob 存储容器的名称 |
--sp_client_id |
字符串 | 用于通过 Azure Blob 对服务主体进行身份验证的客户端 ID,对于此身份验证方法是必需的 |
--sp_tenant_id |
字符串 | 用于通过 Azure Blob 对服务主体进行身份验证的租户 ID,对于此身份验证方法是必需的 |
--sp_client_secret |
字符串 | 用于通过 Azure Blob 对服务主体进行身份验证的客户端机密 |
--sp_client_cert |
字符串 | 用于通过 Azure Blob 对服务主体进行身份验证的 Base64 编码客户端证书 |
--sp_client_cert_password |
字符串 | 用于通过 Azure Blob 对服务主体进行身份验证的客户端证书的密码 |
--sp_client_cert_send_chain |
字符串 | 指定在获取令牌时是否在客户端声明中包含 x5c 标头,以便为客户端证书启用基于使用者名称/颁发者的身份验证 |
--account_key |
字符串 | 用于身份验证的 Azure Blob 共享密钥 |
--sas_token |
字符串 | 用于身份验证的 Azure Blob SAS 令牌 |
--managed-identity-client-id |
字符串 | 要通过 Azure Blob 进行身份验证的托管标识的客户端 ID |
重要
对 AKS 群集和 azblob
源使用托管标识身份验证时,必须至少为托管标识分配“存储 Blob 数据读取者”角色。 使用托管标识进行身份验证尚不适用于已启用 Azure Arc 的 Kubernetes 群集。
用于对源进行身份验证的本地机密
可以使用本地 Kubernetes 机密对 git
、bucket
或 azBlob
源进行身份验证。 本地机密必须包含源需要的所有身份验证参数,并且必须在与 Flux 配置相同的命名空间中创建。
参数 | 格式 | 说明 |
---|---|---|
--local-auth-ref --local-ref |
字符串 | 对 Flux 配置命名空间中的 Kubernetes 机密的本地引用,用于对源进行身份验证。 |
对于 HTTPS 身份验证,创建包含 username
和 password
的机密:
kubectl create ns flux-config
kubectl create secret generic -n flux-config my-custom-secret --from-literal=username=<my-username> --from-literal=password=<my-password-or-key>
对于 SSH 身份验证,使用 identity
和 known_hosts
字段创建机密:
kubectl create ns flux-config
kubectl create secret generic -n flux-config my-custom-secret --from-file=identity=./id_rsa --from-file=known_hosts=./known_hosts
重要
Azure DevOps 宣布弃用 SSH-RSA,作为使用 SSH 连接到 Azure 存储库的受支持加密方法。 如果使用 SSH 密钥连接到 Flux 配置中由世纪互联运营的 Azure 存储库,建议移动到更安全的 RSA-SHA2-256 或 RSA-SHA2-512 密钥。 有关详细信息,请参阅 Azure DevOps SSH-RSA 弃用。
对于这两种情况,在创建 Flux 配置时,请使用 --local-auth-ref my-custom-secret
代替其他身份验证参数:
az k8s-configuration flux create -g <cluster_resource_group> -c <cluster_name> -n <config_name> -t connectedClusters --scope cluster --namespace flux-config -u <git-repo-url> --kustomization name=kustomization1 --local-auth-ref my-custom-secret
详细了解如何将本地 Kubernetes 机密与以下身份验证方法配合使用:
注意
如果需要 Flux 通过代理访问源,则必须使用代理设置更新 Azure Arc 代理。 有关详细信息,请参阅使用出站代理服务器进行连接。
Git 实现
若要支持实现 Git 的各种存储库提供程序,可将 Flux 配置为使用以下两个 Git 库之一:go-git
或 libgit2
。 有关详细信息,请参阅 Flux 文档。
Flux v2 的 GitOps 实现会自动确定用于公有云存储库的库:
- 对于 GitHub、GitLab 和 BitBucket 存储库,Flux 使用
go-git
。 - 对于 Azure DevOps 和所有其他存储库,Flux 使用
libgit2
。
对于本地存储库,Flux 使用 libgit2
。
自定义
Kustomization 是为 Flux 配置创建的设置,可用于在源存储库中选择与群集协调的特定路径。 无需在此指定路径上创建 'kustomization.yaml 文件。 默认情况下,此路径中的所有清单都会进行调整。 但是,如果要为此存储库路径上的应用程序创建 Kustomize 覆盖,应在 git 中创建 Kustomize 文件以使用 Flux 配置。
使用 az k8s-configuration flux kustomization create
可以在配置期间创建一个或多个自定义项。
参数 | 格式 | 说明 |
---|---|---|
--kustomization |
无值 | 用于配置自定义项的参数字符串的开头。 可以多次使用它来创建多个自定义项。 |
name |
字符串 | 此自定义项的唯一名称。 |
path |
字符串 | Git 存储库中的、要在群集上调整的路径。 默认值为分支的顶层。 |
prune |
布尔 | 默认值为 false 。 设置 prune=true 以确保 Flux 部署到群集的对象在从存储库中移除时或者在删除 Flux 配置或 kustomization 时被清除。 对于用户无权访问群集,且只能通过 Git 存储库进行更改的环境,使用 prune=true 非常重要。 |
depends_on |
字符串 | 在调整此自定义项之前必须调整的一个或多个自定义项(在此配置中)的名称。 例如:depends_on=["kustomization1","kustomization2"] 。 如果移除具有依赖自定义项的自定义项,则依赖的自定义项的状态将变为 DependencyNotReady ,并且调整将停止。 |
timeout |
golang 持续时间格式 | 默认:10m 。 |
sync_interval |
golang 持续时间格式 | 默认:10m 。 |
retry_interval |
golang 持续时间格式 | 默认:10m 。 |
validation |
字符串 | 值:none 、client 、server 。 默认:none 。 有关详细信息,请参阅 Flux 文档。 |
force |
布尔 | 默认:false 。 设置 force=true 可以在修补因不可变字段发生更改而失败时,指示 kustomize 控制器重新创建资源。 |
还可以使用 az k8s-configuration flux kustomization
在 Flux 配置中更新、列出、显示和删除自定义项。