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 -haz k8s-configuration flux create -h),來查看 az k8s-configuration flux 的完整參數清單。

提示

使用不受支援參數部署 Flux 資源的因應措施是定義 Git 存放庫內所需的 Flux 自訂資源 (例如 GitRepositoryKustomization)。 使用 az k8s-configuration flux create 命令部署這些資源。 您接著仍然能夠透過 Azure Arc UI 存取 Flux 資源。

設定一般引數

參數 格式 備註
--cluster-name -c String Azure 中叢集資源的名稱。
--cluster-type -t 允許值︰connectedClustersmanagedClusters 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 要協調的來源種類。 允許值:bucketgitazblob。 預設值: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 和 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 祕密,搭配 gitbucketazBlob 來源進行驗證。 本機祕密必須包含來源所需的所有驗證參數,而且必須在與 Flux 設定相同的命名空間中建立。

參數 格式 備註
--local-auth-ref --local-ref String Flux 設定命名空間中 Kubernetes 祕密的本機參考,此祕密要用於搭配來源進行驗證。

針對 HTTPS 驗證,您可以使用 usernamepassword 建立祕密:

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 驗證,您可以使用 identityknown_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

在這兩種情況下,當您建立 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-gitlibgit2。 如需詳細資料,請參閱 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 值:noneclientserver。 預設值:none。 如需詳細資料,請參閱 Flux 文件
force 布林值 預設值:false。 設定 force=true,以指示 Kustomize 控制器在修補由於不可變欄位變更而失敗時重新建立資源。

您也可以使用 az k8s-configuration flux kustomization 來更新、列出、顯示及刪除 Flux 設定中的 Kustomizations。

下一步