

 **協助改進此頁面** 

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

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

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

# 設定 Argo CD 設定
<a name="argocd-configure-settings"></a>

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

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

## 先決條件
<a name="_prerequisites"></a>

設定 Argo CD 設定之前，您必須擁有：
+ 建立 Argo CD 功能的 EKS 叢集 （請參閱 [建立 Argo CD 功能](create-argocd-capability.md))
+ 在 功能中為 Argo CD 設定的命名空間 （預設為`argocd`命名空間）
+ 設定為與您的叢集通訊的 `kubectl` CLI

## 設定 argocd-cm ConfigMap
<a name="_configure_the_argocd_cm_configmap"></a>

若要設定支援的 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 結構：

```
apiVersion: v1
kind: ConfigMap
metadata:
  name: argocd-cm
  namespace: argocd
  labels:
    app.kubernetes.io/part-of: argocd
data:
  # Supported settings go here (see the following sections)
```

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

### 支援的設定
<a name="_supported_settings"></a>

受管功能支援下列`argocd-cm`欄位：


| 欄位 | 說明 | 
| --- | --- | 
|  `resource.customizations.health.*`  | 自訂資源的自訂運作狀態檢查指令碼。請參閱 [自訂運作狀態檢查](#argocd-custom-health-checks)。 | 

## 自訂運作狀態檢查
<a name="argocd-custom-health-checks"></a>

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

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

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

### ACK 和 kro 的內建運作狀態檢查
<a name="_built_in_health_checks_for_ack_and_kro"></a>

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

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

### 撰寫自訂運作狀態檢查
<a name="_write_a_custom_health_check"></a>

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

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

以自訂資源的 API 群組取代 {{<group>}}，並以其類型取代 {{<kind>}}。例如，具有 API 群組`example.com`和種類的自訂資源的金鑰`Database`為 `resource.customizations.health.example.com_Database`。

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

下列範例 ConfigMap 會定義`Database`自訂資源的運作狀態檢查。當資源的狀態階段為 `Healthy`時`Ready`，指令碼會回報資源，`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](https://argo-cd.readthedocs.io/en/stable/operator-manual/health/)。

### 安全與限制
<a name="_safety_and_limitations"></a>

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

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

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

### 驗證自訂運作狀態檢查
<a name="_verify_a_custom_health_check"></a>

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

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

1. 如果資源未報告預期的運作狀態，請確認下列事項：
   + ConfigMap 名為 ，`argocd-cm`位於 功能中為 Argo CD 設定的命名空間中。
   + ConfigMap 具有必要的`app.kubernetes.io/part-of: argocd`標籤。
   + 運作狀態檢查金鑰`<group>_<kind>`針對資源類型使用正確的 。