設定 Argo CD 設定 - Amazon EKS

View a markdown version of this page

設定 Argo CD 設定 - Amazon EKS

協助改進此頁面

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

設定 Argo CD 設定

Argo CD 的 EKS 功能提供全受管 Argo CD 體驗。上游 Argo CD 提供許多選用設定和功能,而 功能支援其中一部分。對於支援的設定,您可以透過叢集中的 ConfigMap,以與上游 Argo CD argocd-cm 相同的方式進行設定。功能會從該 ConfigMap 讀取支援的欄位,並將其套用至受管 Argo CD 執行個體。

下列各節說明如何為支援的設定設定設定 argocd-cm ConfigMap。

先決條件

設定 Argo CD 設定之前,您必須擁有:

  • 建立 Argo CD 功能的 EKS 叢集 (請參閱 建立 Argo CD 功能)

  • 在 功能中為 Argo CD 設定的命名空間 (預設為argocd命名空間)

  • 設定為與您的叢集通訊的 kubectl CLI

設定 argocd-cm ConfigMap

若要設定支援的 Argo CD 設定,請在叢集argocd-cm中建立名為 的 ConfigMap。受管功能會從此 ConfigMap 讀取支援的設定,並將其套用至受管 Argo CD 執行個體。如需 功能支援的設定及其套用方式,請參閱 支援的設定

建立具有下列需求的 ConfigMap:

  • 為 ConfigMap 命名argocd-cm

  • 在 功能中為 Argo CD 設定的命名空間中建立它 (您在建立 功能時在 Argo CD 組態中設定的命名空間)。根據預設,這是argocd命名空間。

  • 套用標籤 app.kubernetes.io/part-of: argocd。此標籤是必要的,符合上游 Argo CD 行為。

  • 使用與上游 Argo CD 相同的欄位格式和金鑰。

下列範例顯示 ConfigMap 結構,其設定會在 Argo CD UI 上顯示橫幅。data 以相同方式新增 下的其他支援設定。

apiVersion: v1 kind: ConfigMap metadata: name: argocd-cm namespace: argocd labels: app.kubernetes.io/part-of: argocd data: ui.bannercontent: "Production cluster"
重要

ConfigMap 不是安全存放區。請勿在 ConfigMap argocd-cm 中放置秘密、登入資料或其他敏感資訊。

功能如何套用您的設定

您可以在自己的叢集中建立 argocd-cm ConfigMap 來設定 Argo CD。此功能會將 ConfigMap 中支援的設定套用至受管 Argo CD 執行個體。它只會套用支援的設定,並忽略您設定的任何其他欄位或功能。任何未列在 中的設定支援的設定都不受支援,而且沒有任何效果。

該功能會驗證您設定的值。如果值無效或格式不正確,則 功能會忽略該值,並繼續執行該設定的預設組態。ConfigMap 中的錯誤不會破壞您的受管 Argo CD 執行個體。

注意

此功能會從叢集中的 argocd-cm ConfigMap 套用組態。具有此 ConfigMap 寫入存取權的任何主體都可以變更受管 Argo CD 執行個體的組態。叢集的 Kubernetes 角色型存取控制 (RBAC) 管理對 ConfigMap 的存取,而不是控制功能資源的 IAM 許可。作為安全最佳實務,將修改 Argo CD 命名空間中物件的許可授予信任的使用者和服務帳戶。由於 Kubernetes RBAC 會依資源類型範圍許可,因此您仍然可以授予其他使用者所需的存取權。例如,您可以允許開發人員建立和管理應用程式,但不能修改 ConfigMaps。這可防止他們變更argocd-cm組態。

如需 Argo CD 功能的共同責任模型、Kubernetes RBAC 和命名空間隔離的詳細資訊,請參閱 EKS 功能的安全考量。若要控制 Argo CD 中的存取,請參閱 設定 Argo CD 許可

支援的設定

下列各節列出 受管功能支援的argocd-cm設定,依類別分組。每個設定都使用與上游 Argo CD 相同的金鑰和格式。每個資料表的套用值方式欄會顯示您的值是否附加至或覆寫功能的預設組態。如需每個設定的完整說明,請參閱 Argo CD 文件網站上的 argocd-cm ConfigMap 參考

使用者界面

這些設定會自訂 Argo CD UI。

設定 說明 如何套用您的值

ui.bannercontent

在整個 UI 中顯示的橫幅文字,例如環境識別符或維護通知。

覆寫

ui.bannerurl

橫幅連結的 URL,例如 Runbook 或 Wiki 頁面。

覆寫

ui.bannerpermanent

設定為 true以防止使用者關閉橫幅。

覆寫

ui.bannerposition

橫幅出現的位置:bottomtopboth

覆寫

ui.cssurl

用於品牌或樣式的自訂 CSS 檔案 URL。CSS 會在您的瀏覽器中執行。

覆寫

資源設定

這些設定控制功能如何監看、比較和顯示 Argo CD 管理的資源。

設定 說明 如何套用您的值

resource.customizations.ignoreDifferences.<group>_<kind>

當 Argo CD 針對資源類型比較 Git 與叢集時要忽略的欄位,例如由 Horizontal Pod Autoscaler 管理的複本計數。

附加

resource.customizations.ignoreDifferences.all

比較 Git 與叢集時要忽略的欄位,套用至所有資源類型。

附加

resource.customizations.ignoreResourceUpdates.<group>_<kind>

Argo CD 在決定更新事件是否應觸發調節時忽略的欄位,以降低負載。事件仍然發生,Argo CD 只會忽略這些欄位的變更。

附加

resource.customizations.ignoreResourceUpdates.all

Argo CD 在處理更新事件時忽略的欄位,套用至所有資源類型。

附加

resource.customizations.knownTypeFields.<group>_<kind>

自訂資源的欄位類型 (清單、映射或基本),讓 Argo CD 計算準確的差異,而不是顯示全欄位取代。

附加

resource.customizations.health.<group>_<kind>

資源類型的自訂運作狀態檢查,定義為 Lua 指令碼。功能包括 ACK 和 kro 資源的內建運作狀態檢查。請參閱 自訂運作狀態檢查

覆寫

resource.exclusions

Argo CD 未監看的資源類型,可改善高流失類型的效能。

附加

resource.inclusions

Argo CD 監看的資源類型。設定時,Argo CD 只會監看列出的類型。

附加

resource.compareoptions

控制 Argo CD 如何計算差異的選項,例如 ignoreAggregatedRoles

覆寫

resource.respectRBAC

控制器是否只監控其具有 RBAC 讀取許可的資源。接受 normalstrict

覆寫

resource.customLabels

要在 UI 資源檢視中顯示的其他資源標籤。

覆寫

resource.includeEventLabelKeys

要複製到 Argo CD 產生的 Kubernetes 事件的應用程式和專案標籤。

覆寫

resource.excludeEventLabelKeys

從 Argo CD 產生的 Kubernetes 事件中排除的標籤。

覆寫

resource.sensitive.mask.annotations

當 UI 或 CLI 顯示秘密時要遮罩的註釋。

覆寫

儲存庫和工具設定

這些設定控制 Argo CD 用來轉譯資訊清單的資訊清單工具。

設定 說明 如何套用您的值

kustomize.enable

Kustomize 是否已啟用為資訊清單來源類型。

覆寫

helm.enable

Helm 是否啟用為資訊清單來源類型。

覆寫

jsonnet.enable

Jsonnet 是否啟用為資訊清單來源類型。

覆寫

kustomize.buildOptions

傳遞至每個 的全域命令列旗標kustomize build。功能支援一部分旗標。請參閱 支援的 kustomize.buildOptions 旗標

覆寫

支援的 kustomize.buildOptions 旗標

對於 kustomize.buildOptions, 功能會將您的值篩選為一組安全、支援的旗標。它不支援允許組建讀取任意檔案或執行任意程式碼的旗標。它會個別捨棄任何不支援的旗標或無效的值,並套用其餘支援的旗標。您可以撰寫 --flag value--flag=value形式的旗標。

旗標 支援的值 備註

--reorder

legacy, none

僅變更轉譯 YAML 的順序。

--enable-helm

Boolean

從 路徑執行受管 Helm 二進位檔。

--enable-managedby-label

Boolean

僅新增標籤。

此功能會捨棄任何其他旗標,包括 --load-restrictor--enable-exec--enable-alpha-plugins

自訂運作狀態檢查

Argo CD 會評估其部署之資源的運作狀態。對於 部署和服務等標準 Kubernetes 資源,Argo CD 具有內建的運作狀態邏輯。對於 Argo CD 無法辨識的自訂資源,它沒有內建的運作狀態邏輯,也不會報告運作狀態。

當自訂資源沒有運作狀態檢查時,Argo CD 會報告沒有運作狀態,並將其排除在應用程式的整體運作狀態之外。因此,應用程式可以報告Healthy,即使其資源仍在佈建或失敗。這也表示同步波可以在這些資源就緒之前進行,因為同步排序取決於報告的運作狀態。

透過自訂運作狀態檢查,您可以定義自訂資源的運作狀態邏輯,因此 Argo CD 會正確報告準確的運作狀態和序列部署。您可以使用相同的組態金鑰,以您在上游 Argo CD 中相同的方式定義自訂運作狀態檢查。現有的上游指令碼和社群範例適用於 Argo CD 的 EKS 功能,無需修改。

ACK 和 kro 的內建運作狀態檢查

Argo CD 的 EKS 功能包含 AWS Kubernetes (ACK) kro (Kube Resource Orchestrator) 資源控制器的內建運作狀態檢查。這些資源會報告準確的運作狀態,無需額外的組態。

若要變更 功能如何評估 ACK 或 kro 資源的運作狀態,您可以定義該資源類型的自訂運作狀態檢查。您為資源類型定義的自訂運作狀態檢查會覆寫該類型的內建運作狀態檢查。

撰寫自訂運作狀態檢查

使用下列格式的金鑰,將 Lua 指令碼新增至 argocd-cm ConfigMap 來定義自訂運作狀態檢查:

resource.customizations.health.<group>_<kind>

以自訂資源的 API 群組取代 <group>,並以其類型取代 <kind>。例如,具有 API 群組example.com和種類的自訂資源的金鑰Databaseresource.customizations.health.example.com_Database

Lua 指令碼可透過 全域obj變數存取資源物件。指令碼必須傳回 欄位status設定為 HealthyDegradedProgressing或 之一的資料表Suspended。指令碼也可以設定選用message欄位,以提供描述性狀態訊息。

下列範例 ConfigMap 會定義Database自訂資源的運作狀態檢查。當資源的狀態階段為 HealthyReady,指令碼會回報資源,Progressing否則會回報資源:

apiVersion: v1 kind: ConfigMap metadata: name: argocd-cm namespace: argocd labels: app.kubernetes.io/part-of: argocd data: resource.customizations.health.example.com_Database: | hs = {} hs.status = "Progressing" hs.message = "Waiting for the resource to become ready" if obj.status ~= nil then if obj.status.phase == "Ready" then hs.status = "Healthy" hs.message = "Database is ready" end end return hs

如需運作狀態檢查指令碼格式、內建運作狀態檢查清單,以及您可以調整的社群範例的詳細資訊,請參閱 Argo CD 文件網站上的 Resource Health

安全與限制

透過 受管功能,您的自訂運作狀態檢查指令碼會在隔離、全受管的運算中執行。每個功能都會隔離執行環境,而且無法存取叢集的資料或 AWS APIs。您不會佈建、修補或操作執行環境的任何部分。

當您撰寫自訂運作狀態檢查以搭配 EKS 功能使用時,請注意下列事項:

  • 標準 Lua 程式庫無法使用。useOpenLibs 選項一律停用,這是上游 Argo CD 中的預設值。指令碼無法存取作業系統或檔案系統。如果您從依賴標準 Lua 程式庫的自我管理 Argo CD 遷移指令碼,則可能不會在 功能中以相同的方式執行。建議您在開發環境中測試運作狀態檢查指令碼,然後再在生產環境中使用它們。

如果運作狀態評估暫時無法使用, 功能會報告受影響的自訂資源,Progressing而不是移除其運作狀態。這可讓受影響的資源在應用程式的運作狀態中可見,直到評估復原為止。

驗證自訂運作狀態檢查

套用或更新 argocd-cm ConfigMap 之後,請確認運作狀態檢查為作用中:

  1. 在 Argo CD UI 中,選擇包含您定義運作狀態檢查之自訂資源的應用程式。確認資源報告指令碼傳回的運作狀態。或者,執行argocd app get <application-name> 並檢閱資源的運作狀態。

  2. 如果資源未報告預期的運作狀態,請確認下列事項:

    • ConfigMap 名為 ,argocd-cm位於 功能中為 Argo CD 設定的命名空間中。

    • ConfigMap 具有必要的app.kubernetes.io/part-of: argocd標籤。

    • 運作狀態檢查金鑰<group>_<kind>針對資源類型使用正確的 。