GitOps (Flux v2) 支援的參數
Azure 會使用 GitOps 提供自動化應用程式部署功能,此功能可與 Azure Kubernetes 服務 (AKS) 和已啟用 Azure Arc 的 Kubernetes 叢集搭配使用。 搭配 Flux v2 的 GitOps 可讓您使用 Git 存放庫做為叢集設定和應用程式部署的事實來源。 如需詳細資訊,請參閱使用 GitOps (Flux v2) 進行應用程式部署和教學課程:使用 GitOps 搭配 Flux v2 部署應用程式。
在已啟用 Azure Arc 的 Kubernetes 或 Azure Kubernetes Service 上,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 |
String | Azure 中叢集資源的名稱。 |
--cluster-type -t |
允許值︰connectedClusters 和 managedClusters |
將 connectedClusters 用於已啟用 Azure Arc 的 Kubernetes 叢集,或將 managedClusters 用於 AKS 叢集。 |
--resource-group -g |
String | 保留叢集資源的 Azure 資源群組名稱。 |
--name -n |
String | Azure 中 Flux 設定的名稱。 |
--namespace --ns |
String | 要部署設定的命名空間名稱。 預設值:default 。 |
--scope -s |
String | 運算子的權限範圍。 可能的值為 cluster (完整存取) 或 namespace (受限制的存取)。 預設值:cluster 。 |
--suspend |
旗標 | 暫停此 Flux 設定中定義的所有來源和 kustomize 協調。 暫停時作用中的協調將繼續進行。 |
來源一般引數
參數 | 格式 | 備註 |
---|---|---|
--kind |
String | 要協調的來源種類。 允許值:bucket 、git 、azblob 。 預設值:git 。 |
--timeout |
Golang 持續時間格式 | 在逾時之前嘗試協調來源的時間上限。預設:10m 。 |
--sync-interval --interval |
Golang 持續時間格式 | 叢集上協調來源之間的時間。 預設值:10m 。 |
Git 存放庫來源參考引數
參數 | 格式 | 備註 |
---|---|---|
--branch |
String | Git 來源內要同步至叢集的分支。 預設值:master 。 較新的存放庫可能具有名為 main 的根分支,在此情況下,您必須設定 --branch=main 。 |
--tag |
String | Git 來源內要同步至叢集的標籤。 範例:--tag=3.2.0 。 |
--semver |
String | Git 來源內要同步至叢集的 Git 標籤 semver 範圍。 範例:--semver=">=3.1.0-rc.1 <3.2.0" 。 |
--commit |
String | 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 取代。
具有 SSH 和 Flux 所建立金鑰的私人 Git 存放庫
將 Flux 產生的公開金鑰新增至 Git 服務提供者的使用者帳戶中。
參數 | 格式 | 備註 |
---|---|---|
--url -u |
ssh://user@server/repo[.git] |
如果公開金鑰與存放庫相關聯,而不是使用者帳戶,git@ 應該取代 user@ 。 |
具有 SSH 和使用者所提供金鑰的私人 Git 存放庫
直接或從檔案中使用您自己的私密金鑰。 金鑰必須為 PEM 格式,並以新行符號 (\n
) 結尾。
將關聯的公開金鑰新增至 Git 服務提供者中的使用者帳戶。
參數 | 格式 | 備註 |
---|---|---|
--url -u |
ssh://user@server/repo[.git] | 如果公開金鑰與存放庫相關聯,而不是使用者帳戶,git@ 應該取代 user@ 。 |
--ssh-private-key |
PEM 格式的 Base64 金鑰 | 直接提供金鑰。 |
--ssh-private-key-file |
本機檔案的完整路徑 | 提供包含 PEM 格式金鑰的本機檔案完整路徑。 |
具有 SSH 和使用者所提供已知主機的私人 Git 主機
Flux 運算子會在其 known_hosts
檔案中維護常用 Git 主機的清單。 Flux 會先使用此資訊來驗證 Git 存放庫,再建立 SSH 連線。 如果您使用的是不常見的 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 內容。 |
具有 HTTPS 使用者和金鑰的私人 Git 存放庫
參數 | 格式 | 備註 |
---|---|---|
--url -u |
https://server/repo[.git] |
具有基本驗證的 HTTPS。 |
--https-user |
原始字串 | HTTPS 使用者名稱。 |
--https-key |
原始字串 | HTTPS 個人存取權杖或密碼。 |
具有 HTTPS CA 憑證的私人 Git 存放庫
參數 | 格式 | 備註 |
---|---|---|
--url -u |
https://server/repo[.git] |
具有基本驗證的 HTTPS。 |
--https-ca-cert |
Base64 字串 | 用於 TLS 通訊的 CA 憑證。 |
--https-ca-cert-file |
本機檔案的完整路徑 | 在本機檔案中提供 CA 憑證內容。 |
貯體來源引數
如果您使用 bucket
來源,以下是貯體特定的命令引數。
參數 | 格式 | 備註 |
---|---|---|
--url -u |
URL 字串 | bucket 的 URL。 支援的格式:http:// 、https:// 。 |
--bucket-name |
String | 要同步的 bucket 名稱。 |
--bucket-access-key |
String | 用來搭配 bucket 驗證的存取金鑰識別碼。 |
--bucket-secret-key |
String | 用來搭配 bucket 驗證的祕密金鑰。 |
--bucket-insecure |
布林值 | 與沒有 TLS 的 bucket 通訊。 如果未提供,則假設為 false;如果已提供,則假設為 true。 |
Azure Blob 儲存體來源引數
如果您使用 azblob
來源,以下是 Blob 特定的命令引數。
參數 | 格式 | 備註 |
---|---|---|
--url -u |
URL 字串 | azblob 的 URL。 |
--container-name |
String | 要同步的 Azure Blob 儲存體容器名稱 |
--sp_client_id |
String | 搭配 Azure Blob 驗證服務主體的用戶端識別碼,此驗證方法的必要項目 |
--sp_tenant_id |
String | 搭配 Azure Blob 驗證服務主體的租用戶識別碼,此驗證方法的必要項目 |
--sp_client_secret |
String | 使用 Azure Blob 驗證服務主體的用戶端密碼 |
--sp_client_cert |
String | 使用 Azure Blob 驗證服務主體的 Base64 編碼用戶端憑證 |
--sp_client_cert_password |
String | 用來搭配 Azure Blob 驗證服務主體的用戶端憑證密碼 |
--sp_client_cert_send_chain |
String | 指定取得權杖時是否要在用戶端宣告中包含 x5c 標頭,為用戶端憑證啟用主體名稱/簽發者型驗證 |
--account_key |
String | 用於驗證的 Azure Blob 共用金鑰 |
--sas_token |
String | 用於驗證的 Azure Blob SAS 權杖 |
--managed-identity-client-id |
String | 搭配 Azure Blob 進行驗證的受控識別用戶端識別碼 |
重要
針對 AKS 叢集和 azblob
來源使用受控識別驗證時,受控識別至少必須獲指派儲存體 Blob 資料讀者角色。 使用受控識別的驗證尚未適用於已啟用 Azure Arc 的 Kubernetes 叢集。
搭配來源進行驗證的本機祕密
您可以使用本機 Kubernetes 祕密,搭配 git
、bucket
或 azBlob
來源進行驗證。 本機祕密必須包含來源所需的所有驗證參數,而且必須在與 Flux 設定相同的命名空間中建立。
參數 | 格式 | 備註 |
---|---|---|
--local-auth-ref --local-ref |
String | 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 透過 Proxy 存取 Git 存放庫,您必須使用 Proxy 設定來更新 Azure Arc 代理程式。 如需詳細資訊,請參閱使用輸出 Proxy 伺服器連線。
Git 實作
若要支援實作 Git 的各種存放庫提供者,Flux 可以設定為使用兩個 Git 程式庫的其中一個:go-git
或 libgit2
。 如需詳細資料,請參閱 Flux 文件。
Flux v2 的 GitOps 實作會自動決定要用於公用雲端存放庫的程式庫:
- 針對 GitHub、GitLab 和 BitBucket 存放庫,Flux 會使用
go-git
。 - 針對 Azure DevOps 和其他所有存放庫,Flux 會使用
libgit2
。
針對內部部署存放庫,Flux 會使用 libgit2
。
Kustomization
Kustomization 是針對 Flux 設定所建立的設定,可讓您在來源存放庫中選擇與叢集協調的特定路徑。 您不需要在此指定的路徑上建立 `kustomization.yaml 檔案。 根據預設,此路徑中的所有資訊清單都會進行協調。 不過,如果您想要使應用程式可在此存放庫路徑上使用 Kustomize 重疊,您應該在 Git 中建立 Kustomize 檔案,供 Flux 設定使用。
透過使用 az k8s-configuration flux kustomization create
,您可以在設定期間建立一或多個 Kustomization。
參數 | 格式 | 備註 |
---|---|---|
--kustomization |
沒有任何值 | 設定 Kustomization 的參數字串開頭。 您可以多次使用此開頭,來建立多個 Kustomization。 |
name |
String | 此 Kustomization 的唯一名稱。 |
path |
String | Git 存放庫內要與叢集協調的路徑。 預設為分支的最上層。 |
prune |
布林值 | 預設值為 false 。 設定 prune=true 以確保若從存放庫移除了 Flux 部署至叢集的物件,或若刪除了 Flux 設定或 kustomization,則會清除這些物件。 對於使用者無法存取叢集,且只能透過 Git 存放庫進行變更的環境,使用 prune=true 很重要。 |
depends_on |
String | 必須先協調,然後此 Kustomization 才能協調的一或多個 Kustomizations (在此設定內) 名稱。 例如: depends_on=["kustomization1","kustomization2"] 。 如果您移除具有相依 Kustomization 的 Kustomization,則相依 Kustomization 的狀態會變成 DependencyNotReady ,而且協調會停止。 |
timeout |
Golang 持續時間格式 | 預設值:10m 。 |
sync_interval |
Golang 持續時間格式 | 預設值:10m 。 |
retry_interval |
Golang 持續時間格式 | 預設值:10m 。 |
validation |
String | 值:none 、client 、server 。 預設值:none 。 如需詳細資料,請參閱 Flux 文件。 |
force |
布林值 | 預設值:false 。 設定 force=true ,以指示 Kustomize 控制器在修補由於不可變欄位變更而失敗時重新建立資源。 |
您也可以使用 az k8s-configuration flux kustomization
來更新、列出、顯示及刪除 Flux 設定中的 Kustomizations。