共用方式為


GitOps (Flux v2) 支援的參數

Azure 會使用 GitOps 提供自動化應用程式部署功能,此功能可與 Azure Kubernetes 服務 (AKS) 和已啟用 Azure Arc 的 Kubernetes 叢集搭配使用。 GitOps with Flux v2 可讓您使用 Git 存放庫作為叢集組態和應用程式部署的真相來源。 如需詳細資訊,請參閱 使用 GitOps 的應用程式部署 (Flux v2)教學課程:使用 GitOps 搭配 Flux v2 部署應用程式

已啟用 Azure Arc 的 Kubernetes 或 Azure Kubernetes Service 上的 GitOps 會使用 Flux,這是一個熱門的開放原始碼工具集,可支援許多參數來啟用各種案例。 如需 Flux 支援的所有參數的描述,請參閱官方 Flux 文件

若要查看 Flux 在 Azure 中支援的所有參數,請參閱 az k8s-configuration。 此實作目前不支援 Flux 支援的每個參數。 讓我們知道 Azure 實作中是否遺漏了您需要的參數。

本文說明命令可用的 az k8s-configuration flux create 一些參數和自變數。 您也可以在 Azure CLI 中使用 -h 參數來查看 的完整參數az k8s-configuration flux清單(例如 az k8s-configuration flux -haz k8s-configuration flux create -h)。

小提示

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

設定一般自變數

參數 格式 註釋
--cluster-name -c 繩子 Azure 中的叢集資源名稱。
--cluster-type -t 允許值︰connectedClustersmanagedClusters 為 Azure Arc 已啟用的 Kubernetes 叢集使用 connectedClusters,或為 AKS 叢集使用 managedClusters
--resource-group -g 繩子 保留叢集資源的 Azure 資源群組名稱。
--name -n 繩子 Azure 中 Flux 組態的名稱。
--namespace --ns 繩子 要部署組態的命名空間名稱。 預設值:default
--scope -s 繩子 操作員的許可範圍。 可能的值為 cluster [完整存取] 或 namespace [限制存取]。 預設值:cluster
--suspend 旗標 暫停進行此 Flux 設定中定義的所有來源和 kustomize 調和。 暫停時活躍的和解將繼續進行。

一般論點

參數 格式 註釋
--kind 繩子 要調和的來源種類。 允許的值:bucketgitazblob。 預設值: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 來源中的提交 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 繩子 要同步處理的 bucket 名稱。
--bucket-access-key 繩子 用來驗證bucket的存取金鑰 ID。
--bucket-secret-key 繩子 用來向 bucket 進行驗證的秘密金鑰。
--bucket-insecure 布爾邏輯 與未經 TLS 加密的 bucket 通訊。 如果未提供,則假設為 false;如果提供,則假設為 true。

Azure Blob 記憶體帳戶來源自變數

如果您使用 azblob 來源,以下是 Blob 特定的命令自變數。

參數 格式 註釋
--url -u URL 字串 azblob 的網址。
--container-name 繩子 要同步處理的 Azure Blob 記憶體容器名稱
--sp_client_id 繩子 用於 Azure Blob 驗證服務主體的用戶端識別碼,此驗證方法需要此識別碼。
--sp_tenant_id 繩子 此驗證方法所需的租戶 ID,用來向 Azure Blob 驗證服務主體帳戶。
--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 進行驗證之受控識別的用戶端標識碼

這很重要

針對 AKS 叢集和 azblob 來源使用受控識別驗證時,至少必須指派 記憶體 Blob 數據讀取者 角色的受控識別。 使用受控識別的驗證尚不適用於已啟用 Azure Arc 的 Kubernetes 叢集。

使用來源進行驗證的本機密碼

您可以使用 Kubernetes 本地密鑰來使用 gitbucketazBlob 來源進行驗證。 本機密碼必須包含來源所需的所有驗證參數,而且必須在與 Flux 組態相同的命名空間中建立。

參數 格式 註釋
--local-auth-ref --local-ref 繩子 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

這很重要

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 存取來源,您必須使用 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 的參數位符串開頭。 您可以多次使用它來創建多個自定義項目。
name 繩子 這個 Kustomization 的獨特名稱。
path 繩子 Git 存放庫中與叢集對齊的路徑。 預設值為分支的最高層。
prune 布爾邏輯 預設值為 false。 將 prune=true 設定為確保當 Flux 部署至叢集的物件,如果從存放庫中移除,或者如果 Flux 設定或 kustomizations 被刪除,這些物件將被清理。 對於使用者無法存取叢集的環境而言,使用 prune=true 非常重要,而且只能透過 Git 存放庫進行變更。
depends_on 繩子 一或多個 kustomizations 的名稱(在此組態內)必須先完成協調,然後這個 kustomization 才能進行協調。 例如: depends_on=["kustomization1","kustomization2"] 。 如果您移除具有相依 kustomization 的 kustomization,則相依 kustomization 的狀態會變成DependencyNotReady,而重整將停止。
timeout golang duration format 預設值:10m
sync_interval golang duration format 預設值:10m
retry_interval golang duration format 預設值:10m
validation 繩子 值:none、、serverclient。 預設值:none。 如需詳細資訊,請參閱 Flux 檔
force 布爾邏輯 預設值:false。 設定 force=true 以指示 kustomize 控制器當因不可變欄位變更導致修補失敗時重新創建資源。

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

後續步驟