

 **協助改進此頁面** 

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

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

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

# 設定 Argo CD 的私有端點存取
<a name="argocd-private-access"></a>

根據預設，您可以透過公有網際網路存取 Argo CD 端點。您可以設定私有端點存取，讓 VPC 和 Argo CD 端點之間的流量保持在 AWS 網路中，而無需透過公有網際網路。

當您啟用私有存取時， 會 AWS 更新網域名稱系統 (DNS)，以便 Argo CD 端點主機名稱解析為與您的 VPC 端點相關聯的私有 IP 地址。您必須擁有這些私有 IPs網路連線能力 （透過 VPC、虛擬私有網路 (VPN) 連線或 AWS Direct Connect)，才能存取 Argo CD 端點。

## 私有存取的運作方式
<a name="_how_private_access_works"></a>

當您為 Argo CD 功能設定私有存取時：

1. 您可以在 VPC 中為`com.amazonaws.region-code.eks-capabilities`服務建立 VPC 端點。

1. 您可以在建立或更新 Argo CD 功能時提供 VPC 端點 ID。

1.  AWS 設定 DNS 記錄，以便 Argo CD 端點主機名稱解析為與您的 VPC 端點相關聯的私有 IP 地址。

1. Argo CD 端點的所有流量都會私下流經 VPC 端點。

## 先決條件
<a name="_prerequisites"></a>
+ 具有作用中 Argo CD 功能的 Amazon Elastic Kubernetes Service (Amazon EKS) 叢集 （請參閱 [建立 Argo CD 功能](create-argocd-capability.md))
+ 熟悉 Amazon VPC 概念，包括子網路、安全群組和界面 VPC 端點
+ 在您想要私有存取的可用區域中具有子網路的 VPC
+  AWS 命令列界面 (AWS CLI) 版本 `2.12.3` 或更新版本

## 步驟 1：為 eks-capabilities 建立 VPC 端點
<a name="_step_1_create_a_vpc_endpoint_for_eks_capabilities"></a>

建立 `com.amazonaws.region-code.eks-capabilities`服務的介面 VPC 端點。

------
#### [ Console ]

1. 開啟 [Amazon VPC 主控台](https://console.aws.amazon.com/vpc/)。

1. 在左側導覽窗格中選擇 **Endpoints** (端點)。

1. 選擇**建立端點**。

1. 針對**服務類別**，選擇 ** AWS 服務**。

1. 在搜尋欄位中，輸入 `eks-capabilities`並選取 `com.amazonaws.region-code.eks-capabilities`。

1. 針對 **VPC**，選取您要從中存取 Argo CD 端點的 VPC。

1. 對於**子網路**，請在您要私有存取的每個可用區域中選取子網路。

1. 針對**安全群組**，選取允許來自用戶端網路的 HTTPS （連接埠 443) 傳入流量的安全群組。

1. 選擇**建立端點**。

1. 請記下 VPC 端點 ID （例如 `vpce-0123456789abcdef0`)。

------
#### [ CLI ]

將 {{region-code}} 取代為您的 AWS 區域、將 {{vpc-id}} 取代為您的 VPC ID、將 {{subnet-id-1 subnet-id-2}} 取代為不同可用區域中的子網路 IDs，並將 {{sg-id}} 取代為允許 HTTPS 傳入流量的安全群組。

```
aws ec2 create-vpc-endpoint \
  --region {{region-code}} \
  --vpc-endpoint-type Interface \
  --service-name com.amazonaws.{{region-code}}.eks-capabilities \
  --vpc-id {{vpc-id}} \
  --subnet-ids {{subnet-id-1 subnet-id-2}} \
  --security-group-ids {{sg-id}}
```

記下回應中的 `VpcEndpointId`。

------

**重要**  
確定連接到 VPC 端點的安全群組允許傳入 HTTPS （連接埠 443) 流量。流量來源必須包含您的使用者或應用程式存取 Argo CD 端點的所有網路。

## 步驟 2：在 Argo CD 功能上設定私有存取
<a name="_step_2_configure_private_access_on_the_argo_cd_capability"></a>

在 VPC 端點可用後，設定 Argo CD 功能來使用它。您可以在建立新功能或更新現有功能時設定私有存取。

### 建立具有私有存取權的新功能
<a name="_create_a_new_capability_with_private_access"></a>

在 `create-capability`命令`networkAccess`中包含 。將 {{region-code}}、{{my-cluster}} 和其他預留位置取代為您的值：

```
aws eks create-capability \
  --region {{region-code}} \
  --cluster-name {{my-cluster}} \
  --capability-name my-argocd \
  --type ARGOCD \
  --role-arn {{arn:aws:iam::111122223333:role/ArgoCDCapabilityRole}} \
  --configuration '{
    "argoCd": {
      "awsIdc": {
        "idcInstanceArn": "arn:aws:sso:::instance/ssoins-1234567890abcdef",
        "idcRegion": "idc-region-code"
      },
      "rbacRoleMappings": [{
        "role": "ADMIN",
        "identities": [{
          "id": "user-id",
          "type": "SSO_USER"
        }]
      }],
      "networkAccess": {
        "vpceIds": ["vpce-0123456789abcdef0"]
      }
    }
  }'
```

### 更新現有功能以啟用私有存取
<a name="_update_an_existing_capability_to_enable_private_access"></a>

將 {{region-code}}、{{my-cluster}}、{{my-argocd}} 和 VPC 端點 ID 取代為您的值：

```
aws eks update-capability \
  --region {{region-code}} \
  --cluster-name {{my-cluster}} \
  --capability-name {{my-argocd}} \
  --configuration '{
    "argoCd": {
      "networkAccess": {
        "vpceIds": ["vpce-0123456789abcdef0"]
      }
    }
  }'
```

等待功能更新完成：

```
aws eks describe-capability \
  --region {{region-code}} \
  --cluster-name {{my-cluster}} \
  --capability-name {{my-argocd}} \
  --query 'capability.status' \
  --output text
```

狀態會在更新完成`ACTIVE`時傳回 。

## 步驟 3：驗證 DNS 解析和連線
<a name="_step_3_verify_dns_resolution_and_connectivity"></a>

功能啟用並設定私有存取後，請確認 Argo CD 端點主機名稱解析為私有 IP 地址。

從任何網路執行下列`nslookup`命令：

```
nslookup {{your-argocd-endpoint.eks-capabilities.region-code.amazonaws.com}}
```

回應應該會顯示私有 IP 地址 （例如，RFC 1918 範圍內的地址，例如 `10.x.x.x`或 `172.16.x.x`)。

如果端點未解析為私有 IPs，請確認：
+ 功能狀態為 `ACTIVE`（在功能變為作用中後AWS 建立 DNS 記錄）
+ VPC 端點處於 `available` 狀態
+ 功能組態中的 VPC 端點 ID 符合您建立的端點

**注意**  
設定私有存取後，Argo CD 端點主機名稱會解析為私有 IP 地址。若要連線，您必須透過 VPC、VPN 連線或 AWS Direct Connect 與這些私有 IPs 建立網路連線。

## 停用私有存取
<a name="_disable_private_access"></a>

若要停用私有存取並還原公有端點存取，請更新 功能以移除 VPC IDs：

```
aws eks update-capability \
  --region {{region-code}} \
  --cluster-name {{my-cluster}} \
  --capability-name {{my-argocd}} \
  --configuration '{
    "argoCd": {
      "networkAccess": {
        "vpceIds": []
      }
    }
  }'
```

## 考量事項
<a name="_considerations"></a>
+ 啟用私有存取後，只能從 VPC 內或與其連線的網路 （例如，透過 VPN 或 AWS Direct Connect) 存取 Argo CD 端點。
+ VPC 端點必須保持 `available` 狀態，才能私有存取 函數。如果您刪除 VPC 端點，您會失去 Argo CD 端點的存取權，直到您建立新的端點並更新功能為止。
+  AWS 目前不支援`eks-capabilities`服務端點的 VPC 端點政策。