

Amazon CodeCatalyst 不再向新客戶開放。現有客戶可以繼續正常使用該服務。如需詳細資訊，請參閱[如何從 CodeCatalyst 遷移](migration.md)。

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

# 使用工作流程部署至 Amazon EKS
<a name="deploy-action-eks"></a>

**提示**  
如需說明如何使用**部署至 Kubernetes 叢集**動作的教學課程，請參閱 [教學課程：將應用程式部署至 Amazon EKS](deploy-tut-eks.md)。

本節說明如何使用 CodeCatalyst 工作流程將容器化應用程式部署至 Kubernetes 叢集。若要達成此目的，您必須將**部署至 Kubernetes 叢集**動作新增至工作流程。此動作會將您的應用程式部署到您在 Amazon Elastic Kubernetes Service (EKS) 中使用一或多個 Kubernetes 資訊清單檔案設定的 Kubernetes 叢集。如需範例資訊清單，請參閱 [deployment.yaml](deploy-tut-eks.md#deploy-tut-eks-source-files-deployment-yml)中的 [教學課程：將應用程式部署至 Amazon EKS](deploy-tut-eks.md)。

如需 Kubernetes 的詳細資訊，請參閱 [Kubernetes 文件](https://kubernetes.io/docs/home/)。

如需 Amazon EKS 的詳細資訊，請參閱[什麼是 Amazon EKS？](https://docs.aws.amazon.com/eks/latest/userguide/what-is-eks.html) *Amazon EKS 使用者指南*中的 。

**Topics**
+ [「部署到 Kubernetes 叢集」動作的運作方式](#deploy-action-eks-howitworks)
+ [「部署至 Amazon EKS」動作所使用的執行期映像](#deploy-action-eks-runtime)
+ [教學課程：將應用程式部署至 Amazon EKS](deploy-tut-eks.md)
+ [將 'Deploy 新增至 Kubernetes 叢集' 動作](deploy-action-eks-adding.md)
+ [「部署到 Kubernetes 叢集」變數](deploy-action-eks-variables.md)
+ [「部署到 Kubernetes 叢集」動作 YAML](deploy-action-ref-eks.md)

## 「部署到 Kubernetes 叢集」動作的運作方式
<a name="deploy-action-eks-howitworks"></a>

**部署至 Kubernetes 叢集**的運作方式如下：

1. 在執行時間，動作會將 Kubernetes `kubectl`公用程式安裝到執行動作的 CodeCatalyst 運算機器。動作會將 設定為`kubectl`指向您在設定動作時提供的 Amazon EKS 叢集。接下來，需要 `kubectl`公用程式才能執行 `kubectl apply`命令。

1. 動作會執行 `kubectl apply -f my-manifest.yaml`命令，執行 *my-manifest.yaml* 中的指示，將您的應用程式部署為一組容器和 Pod 到設定的叢集。如需此命令的詳細資訊，請參閱 *Kubernetes 參考文件中*的 [kubectl 套用](https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#apply)主題。

## 「部署至 Amazon EKS」動作所使用的執行期映像
<a name="deploy-action-eks-runtime"></a>

**部署至 Amazon EKS** 動作會在 [2022 年 11 月的映像](build-images.md#build.previous-image)上執行。如需詳細資訊，請參閱[作用中映像](build-images.md#build-curated-images)。

# 教學課程：將應用程式部署至 Amazon EKS
<a name="deploy-tut-eks"></a>

在本教學課程中，您將了解如何使用 Amazon CodeCatalyst 工作流程、Amazon EKS 和其他一些 AWS 服務，將容器化應用程式部署至 Amazon Elastic Kubernetes Service。部署的應用程式是簡單的「Hello， World！」 在 Apache Web 伺服器 Docker 映像上建置的網站。本教學課程會逐步解說必要的準備工作，例如設定開發機器和 Amazon EKS 叢集，然後說明如何建立工作流程來建置應用程式並將其部署到叢集。

初始部署完成後，教學會指示您變更應用程式來源。此變更會導致建立新的 Docker 映像，並使用新的修訂資訊推送到您的 Docker 映像儲存庫。然後，Docker 映像的新修訂會部署到 Amazon EKS。

**提示**  
您可以使用藍圖，為您完成 Amazon EKS 設定，而不是完成本教學課程。您需要使用 **EKS 應用程式部署**藍圖。如需詳細資訊，請參閱[使用藍圖建立專案](projects-create.md#projects-create-console-template)。

**Topics**
+ [先決條件](#deploy-tut-eks-prereqs)
+ [步驟 1：設定您的開發機器](#deploy-tut-eks-dev-env-create)
+ [步驟 2：建立 Amazon EKS 叢集](#deploy-tut-eks-cluster)
+ [步驟 3：建立 Amazon ECR 映像儲存庫](#deploy-tut-eks-ecr)
+ [步驟 4：新增來源檔案](#deploy-tut-eks-source-files)
+ [步驟 5：建立 AWS 角色](#deploy-tut-eks-roles)
+ [步驟 6：將 AWS 角色新增至 CodeCatalyst](#deploy-tut-eks-import-roles)
+ [步驟 7：更新 ConfigMap](#deploy-tut-eks-configmap)
+ [步驟 8：建立和執行工作流程](#deploy-tut-eks-workflow)
+ [步驟 9：變更來源檔案](#deploy-tut-eks-change)
+ [清除](#deploy-tut-eks-cleanup)

## 先決條件
<a name="deploy-tut-eks-prereqs"></a>

開始本教學課程之前：
+ 您需要具有連線 AWS 帳戶的 Amazon CodeCatalyst **空間**。如需詳細資訊，請參閱[建立空間](spaces-create.md)。
+ 在您的空間中，您需要一個名為 的空專案：

  ```
  codecatalyst-eks-project
  ```

  使用**從頭開始**選項來建立此專案。

  如需詳細資訊，請參閱[在 Amazon CodeCatalyst 中建立空專案](projects-create.md#projects-create-empty)。
+ 在您的專案中，您需要名為 的空 CodeCatalyst **來源儲存庫**：

  ```
  codecatalyst-eks-source-repository
  ```

  如需詳細資訊，請參閱[將程式碼與 CodeCatalyst 中的來源儲存庫一起存放和協作儲存程式碼並與來源儲存庫協作](source.md)。
+ 在專案中，您需要名為 的 CodeCatalyst CI/CD **環境** （而非開發環境）：

  ```
  codecatalyst-eks-environment
  ```

  設定此環境，如下所示：
  + 選擇任何類型的，例如**非生產**。
  + 將您的帳戶連接到該 AWS 帳戶。
  + 針對**預設 IAM 角色**，選擇任何角色。稍後您將指定不同的角色。

  如需詳細資訊，請參閱[部署至 AWS 帳戶 和 VPCs](deploy-environments.md)。

## 步驟 1：設定您的開發機器
<a name="deploy-tut-eks-dev-env-create"></a>

本教學課程的第一步是使用您將在本教學課程中使用的幾個工具來設定開發機器。這些工具包括：
+ `eksctl` 公用程式 – 用於建立叢集
+ `kubectl` 公用程式 – 的先決條件 `eksctl`
+  AWS CLI - 也是 的先決條件 `eksctl`

如果您有這些工具，則可以在現有的開發機器上安裝這些工具，也可以使用以雲端為基礎的 CodeCatalyst 開發環境。CodeCatalyst 開發環境的優點是，可輕鬆啟動和關閉，並與其他 CodeCatalyst 服務整合，可讓您以較少的步驟完成本教學課程。

本教學假設您將使用 CodeCatalyst 開發環境。

下列指示說明啟動 CodeCatalyst 開發環境並使用必要工具進行設定的快速方法，但如果您需要詳細說明，請參閱：
+ 本指南中的 [建立開發環境](devenvironment-create.md)。
+ 《**Amazon EKS 使用者指南**》中的[安裝 kubectl](https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html)。
+ 《**Amazon EKS 使用者指南**》中的[安裝或升級 eksctl](https://docs.aws.amazon.com/eks/latest/userguide/eksctl.html)。
+ *AWS Command Line Interface 《 使用者指南*》中的[安裝或更新最新版本的 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html)。

**啟動開發環境**

1. 在 https：//[https://codecatalyst.aws/](https://codecatalyst.aws/) 開啟 CodeCatalyst 主控台。

1. 導覽至您的專案 `codecatalyst-eks-project`。

1. 在導覽窗格中，選擇**程式碼**，然後選擇**來源儲存庫**。

1. 選擇來源儲存庫的名稱 `codecatalyst-eks-source-repository`。

1. 在最上方選擇**建立開發環境**，然後選擇 **AWS Cloud9 （在瀏覽器中）**。

1. 確定已選取**現有分支和主要分支中的工作**，然後選擇**建立**。 ****

   您的開發環境會在新的瀏覽器索引標籤中啟動，並將您的儲存庫 (`codecatalyst-eks-source-repository`) 複製到其中。

**安裝和設定 kubectl**

1. 在開發環境終端機中，輸入：

   ```
   curl -o kubectl https://amazon-eks.s3.us-west-2.amazonaws.com/1.18.9/2020-11-02/bin/linux/amd64/kubectl
   ```

1. 輸入：

   ```
   chmod +x ./kubectl
   ```

1. 輸入：

   ```
   mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$PATH:$HOME/bin
   ```

1. 輸入：

   ```
   echo 'export PATH=$PATH:$HOME/bin' >> ~/.bashrc
   ```

1. 輸入：

   ```
   kubectl version --short --client
   ```

1. 檢查版本是否出現。

   您現在已安裝 `kubectl`。

**安裝和設定 eksctl**
**注意**  
`eksctl` 並非嚴格要求，因為您可以`kubectl`改為使用 。不過， `eksctl` 具有將大部分叢集組態自動化的好處，因此是本教學課程建議的工具。

1. 在開發環境終端機中，輸入：

   ```
   curl --silent --location "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
   ```

1. 輸入：

   ```
   sudo cp /tmp/eksctl /usr/bin
   ```

1. 輸入：

   ```
   eksctl version
   ```

1. 檢查版本是否出現。

   您現在已安裝 `eksctl`。

**驗證 AWS CLI 是否已安裝**

1. 在開發環境終端機中，輸入：

   ```
   aws --version
   ```

1. 檢查版本是否出現，以確認 AWS CLI 已安裝 。

   完成其餘程序， AWS CLI 以使用存取所需的許可來設定 AWS。

**若要設定 AWS CLI**

您必須 AWS CLI 使用存取金鑰和工作階段字符來設定 ，讓它存取 AWS 服務。下列指示提供設定金鑰和字符的快速方法，但如果您想要詳細說明，請參閱*AWS Command Line Interface 《 使用者指南*》中的[設定 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) 。

1. 建立 IAM Identity Center 使用者，如下所示：

   1. 登入 AWS 管理主控台 ，並在 https：//[https://console.aws.amazon.com/singlesignon/](https://console.aws.amazon.com/singlesignon/) 開啟 AWS IAM Identity Center 主控台。

      （如果您從未登入 IAM Identity Center，您可能需要選擇**啟用**。)
**注意**  
請務必使用連線至 CodeCatalyst 空間 AWS 帳戶 的 登入。您可以透過導覽至您的空間並選擇 **AWS 帳戶索引標籤來驗證哪個帳戶**已連線。如需詳細資訊，請參閱[建立空間](spaces-create.md)。

   1. 在導覽窗格中，選擇 **使用者**，然後選擇 **新增使用者**。

   1. 在**使用者名稱**中，輸入：

      ```
      codecatalyst-eks-user
      ```

   1. 在**密碼**下，選擇**產生您可以與此使用者共用的一次性密碼**。

   1. 在**電子郵件地址**和**確認電子郵件地址**中，輸入 IAM Identity Center 中尚不存在的電子郵件地址。

   1. 在**名字**中，輸入：

      ```
      codecatalyst-eks-user
      ```

   1. 在**姓氏**中，輸入：

      ```
      codecatalyst-eks-user
      ```

   1. 在**顯示名稱**中，保留：

      ```
      codecatalyst-eks-user codecatalyst-eks-user
      ```

   1. 選擇**下一步**。

   1. 在**新增使用者至群組**頁面上，選擇**下一步**。

   1. 在**檢閱和新增使用者**頁面上，檢閱資訊，然後選擇**新增使用者**。

      **一次性密碼**對話方塊隨即出現。

   1. 選擇**複製**，然後將登入資訊貼到文字檔案。登入資訊包含 AWS 存取入口網站 URL、使用者名稱和一次性密碼。

   1. 選擇**關閉**。

1. 建立許可集，如下所示：

   1. 在導覽窗格中，選擇**許可集**，然後選擇**建立許可集**。

   1. 選擇**預先定義的許可集**，然後選取 **AdministratorAccess**。此政策提供所有 的完整許可 AWS 服務。

   1. 選擇**下一步**。

   1. 在**許可集名稱**中，移除`AdministratorAccess`並輸入：

      ```
      codecatalyst-eks-permission-set
      ```

   1. 選擇**下一步**。

   1. 在**檢閱和建立**頁面上，檢閱資訊，然後選擇**建立**。

1. 將許可集指派給 `codecatalyst-eks-user`，如下所示：

   1. 在導覽窗格中，選擇 **AWS 帳戶**，然後選取 AWS 帳戶 您目前登入之 旁的核取方塊。

   1. 選擇**指派使用者或群組**。

   1. 選擇**使用者**索引標籤。

   1. 選取 旁的核取方塊`codecatalyst-eks-user`。

   1. 選擇**下一步**。

   1. 選取 旁的核取方塊`codecatalyst-eks-permission-set`。

   1. 選擇**下一步**。

   1. 檢閱資訊，然後選擇**提交**。

      您現在已將 `codecatalyst-eks-user`和 `codecatalyst-eks-permission-set` 指派給 AWS 帳戶，並將它們繫結在一起。

1. 取得 `codecatalyst-eks-user`的存取金鑰和工作階段字符，如下所示：

   1. 請確定您擁有 AWS 存取入口網站 URL 以及 的使用者名稱和一次性密碼`codecatalyst-eks-user`。您應該稍早已將此資訊複製到文字編輯器。
**注意**  
如果您沒有此資訊，請前往 IAM Identity Center 的詳細資訊`codecatalyst-eks-user`頁面，選擇**重設密碼**、**產生一次性密碼 【...】** 和再次**重設密碼**，以在畫面上顯示資訊。

   1. 登出 AWS。

   1. 將 AWS 存取入口網站 URL 貼到瀏覽器的地址列。

   1. 使用 登入：
      + **使用者名稱**：

        ```
        codecatalyst-eks-user
        ```
      + **密碼**：

        *one-time-password*

   1. 在**設定新密碼**中，輸入新密碼，然後選擇**設定新密碼**。

      畫面上會出現一個**AWS 帳戶**方塊。

   1. 選擇 **AWS 帳戶**，然後選擇 AWS 帳戶 您指派`codecatalyst-eks-user`使用者和許可集的 名稱。

   1. 在 旁`codecatalyst-eks-permission-set`，選擇**命令列或程式設計存取**。

   1. 在頁面中間複製命令。它們看起來類似以下內容：

      ```
      export AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE" 
      export AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" 
      export AWS_SESSION_TOKEN="session-token"
      ```

      ...其中 *session-token* 是長隨機字串。

1. 將存取金鑰和工作階段字符新增至 AWS CLI，如下所示：

   1. 返回 CodeCatalyst 開發環境。

   1. 在終端機提示中，貼上您複製的命令。按 Enter。

      您現在已 AWS CLI 使用存取金鑰和工作階段字符設定 。您現在可以使用 AWS CLI 完成本教學課程所需的任務。
**重要**  
如果您在本教學課程中的任何時候看到類似如下的訊息：  
`Unable to locate credentials. You can configure credentials by running "aws configure".`  
或者：  
`ExpiredToken: The security token included in the request is expired`  
...這是因為您的 AWS CLI 工作階段已過期。在此情況下，*請勿*執行 `aws configure`命令。請改用此程序步驟 4 中以 開頭的指示`Obtain codecatalyst-eks-user's access key and session token`來重新整理工作階段。

## 步驟 2：建立 Amazon EKS 叢集
<a name="deploy-tut-eks-cluster"></a>

在本節中，您會在 Amazon EKS 中建立叢集。以下指示說明使用 建立叢集的快速方法`eksctl`，但如果您想要詳細說明，請參閱：
+ 《**Amazon EKS 使用者指南**》中的 [eksctl 入門](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-eksctl.html) 

  或
+ [主控台入門和《Amazon EKS 使用者指南 AWS CLI](https://docs.aws.amazon.com/eks/latest/userguide/getting-started-console.html)****》中的 （本主題提供建立叢集`kubectl`的說明） 

**注意**  
CodeCatalyst 與 Amazon EKS 整合不支援[私有叢集](https://docs.aws.amazon.com/eks/latest/userguide/private-clusters.html)。

**開始之前**

請確定您已在開發機器上完成下列任務：
+ 安裝 `eksctl`公用程式。
+ 已安裝 `kubectl`公用程式。
+ 安裝 並使用存取金鑰 AWS CLI 和工作階段字符進行設定。

如需如何完成這些任務的資訊，請參閱 [步驟 1：設定您的開發機器](#deploy-tut-eks-dev-env-create)。

**建立叢集**
**重要**  
請勿使用 Amazon EKS 服務的使用者介面來建立叢集，因為叢集無法正確設定。使用 `eksctl`公用程式，如下列步驟所述。

1. 前往您的開發環境。

1. 建立叢集和節點：

   ```
   eksctl create cluster --name codecatalyst-eks-cluster --region us-west-2
   ```

   其中：
   + *codecatalyst-eks-cluster* 會取代為您要提供叢集的名稱。
   + *us-west-2* 已取代為您的 區域。

   10-20 分鐘後，會出現類似以下內容的訊息：

   `EKS cluster "codecatalyst-eks-cluster" in "us-west-2" region is ready`
**注意**  
建立叢集時 AWS ，您會看到多個`waiting for CloudFormation stack`訊息。這是預期的行為。

1. 確認您的叢集已成功建立：

   ```
   kubectl cluster-info
   ```

   您將看到類似以下的訊息，指出成功的叢集建立：

   ```
   Kubernetes master is running at https://long-string.gr7.us-west-2.eks.amazonaws.com
   CoreDNS is running at https://long-string.gr7.us-west-2.eks.amazonaws.com/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
   ```

## 步驟 3：建立 Amazon ECR 映像儲存庫
<a name="deploy-tut-eks-ecr"></a>

在本節中，您會在 Amazon Elastic Container Registry (Amazon ECR) 中建立私有映像儲存庫。此儲存庫會存放教學課程的 Docker 映像。

如需 Amazon ECR 的詳細資訊，請參閱《*Amazon Elastic Container Registry 使用者指南*》。

**在 Amazon ECR 中建立映像儲存庫**

1. 前往您的開發環境。

1. 在 Amazon ECR 中建立空儲存庫：

   ```
   aws ecr create-repository --repository-name codecatalyst-eks-image-repo
   ```

   將 *codecatalyst-eks-image-repo* 取代為您要提供 Amazon ECR 儲存庫的名稱。

   本教學假設您已將儲存庫命名為 `codecatalyst-eks-image-repo`。

1. 顯示 Amazon ECR 儲存庫的詳細資訊：

   ```
   aws ecr describe-repositories \
         --repository-names codecatalyst-eks-image-repo
   ```

1. 請記下 `“repositoryUri”:`值，例如 `111122223333.dkr.ecr.us-west-2.amazonaws.com/codecatalyst-eks-image-repo`。

   稍後在將儲存庫新增至工作流程時需要它。

## 步驟 4：新增來源檔案
<a name="deploy-tut-eks-source-files"></a>

在本節中，您將應用程式來源檔案新增至來源儲存庫 (`codecatalyst-eks-source-repository`)。它們包含：
+ `index.html` 檔案 – 顯示「Hello， World！」 瀏覽器中的 訊息。
+ Dockerfile – 描述要用於 Docker 映像的基本映像，以及要套用的 Docker 命令。
+ `deployment.yaml` 檔案 – 定義 Kubernetes 服務和部署的 Kubernetes 資訊清單。

資料夾結構如下所示：

```
|— codecatalyst-eks-source-repository
   |— Kubernetes
      |— deployment.yaml
   |— public-html
   |  |— index.html
   |— Dockerfile
```

**Topics**
+ [index.html](#deploy-tut-eks-source-files-index)
+ [Dockerfile](#deploy-tut-eks-source-files-dockerfile)
+ [deployment.yaml](#deploy-tut-eks-source-files-deployment-yml)

### index.html
<a name="deploy-tut-eks-source-files-index"></a>

`index.html` 檔案會顯示「Hello， World！」 瀏覽器中的 訊息。

**新增 index.html 檔案**

1. 前往您的開發環境。

1. 在 中`codecatalyst-eks-source-repository`，建立名為 的資料夾`public-html`。

1. 在 中`/public-html`，建立名為 的檔案`index.html`，其中包含下列內容：

   ```
   <html>
     <head>
       <title>Hello World</title>
       <style>
         body {
         background-color: black;
         text-align: center;
         color: white;
         font-family: Arial, Helvetica, sans-serif;
         }  
       </style>
     </head>
     <body>
       <h1>Hello, World!</h1>
     </body>
   </html>
   ```

1. 在終端機提示中，輸入：

   ```
   cd /projects/codecatalyst-eks-source-repository
   ```

1. 新增、遞交和推送：

   ```
   git add .
   git commit -m "add public-html/index.html"
   git push
   ```

   `index.html` 會新增至`public-html`資料夾中的儲存庫。

### Dockerfile
<a name="deploy-tut-eks-source-files-dockerfile"></a>

Dockerfile 說明要使用的基本 Docker 映像，以及要套用的 Docker 命令。如需 Dockerfile 的詳細資訊，請參閱 [Dockerfile 參考](https://docs.docker.com/engine/reference/builder/)。

此處指定的 Dockerfile 表示使用 Apache 2.4 基礎映像 (`httpd`)。它還包含將名為 的來源檔案複製到提供網頁之 Apache 伺服器上的`index.html`資料夾的說明。Dockerfile 中的`EXPOSE`說明會告知 Docker 容器正在接聽連接埠 80。

**新增 Dockerfile**

1. 在 中`codecatalyst-eks-source-repository`，建立名為 的檔案`Dockerfile`，其中包含下列內容：

   ```
   FROM httpd:2.4
   COPY ./public-html/index.html /usr/local/apache2/htdocs/index.html
   EXPOSE 80
   ```

   請勿包含副檔名。
**重要**  
Dockerfile 必須位於儲存庫的根資料夾中。工作流程的 `Docker build`命令預期會存在。

1. 新增、遞交和推送：

   ```
   git add .
   git commit -m "add Dockerfile"
   git push
   ```

   Dockerfile 會新增至您的儲存庫。

### deployment.yaml
<a name="deploy-tut-eks-source-files-deployment-yml"></a>

在本節中，您將`deployment.yaml`檔案新增至您的儲存庫。`deployment.yaml` 檔案是 Kubernetes 資訊清單，定義兩個**要執行的 Kubernetes 資源類型：「服務和「部署」。
+ 「服務」會將負載平衡器部署到 Amazon EC2。負載平衡器為您提供面向網際網路的公有 URL 和標準連接埠 （連接埠 80)，可用來瀏覽至 'Hello， World！' 應用程式。
+ 「部署」會部署三個 Pod，每個 Pod 都會包含 Docker 容器，其中包含「Hello， World！」 應用程式。這三個 Pod 會部署到您建立叢集時建立的節點上。

本教學課程中的資訊清單很簡短；不過，資訊清單可以包含任意數量的 Kubernetes 資源類型，例如 Pod、任務、輸入和網路政策。此外，如果您的部署很複雜，您可以使用多個資訊清單檔案。

**新增 deployment.yaml 檔案**

1. 在 中`codecatalyst-eks-source-repository`，建立名為 的資料夾`Kubernetes`。

1. 在 中`/Kubernetes`，建立名為 的檔案`deployment.yaml`，其中包含下列內容：

   ```
   apiVersion: v1
   kind: Service
   metadata:
     name: my-service
     labels:
       app: my-app
   spec:
     type: LoadBalancer
     selector:
       app: my-app
     ports:
       - protocol: TCP
         port: 80
         targetPort: 80
   ---
   apiVersion: apps/v1
   kind: Deployment
   metadata:
     name: my-deployment
     labels:
       app: my-app
   spec:
     replicas: 3
     selector:
       matchLabels:
         app: my-app
     template:
       metadata:
         labels:
           app: my-app
       spec:
         containers:
         - name: codecatalyst-eks-container
           # The $REPOSITORY_URI and $IMAGE_TAG placeholders will be replaced by actual values supplied by the build action in your workflow
           image: $REPOSITORY_URI:$IMAGE_TAG
           ports:
           - containerPort: 80
   ```

1. 新增、遞交和推送：

   ```
   git add .
   git commit -m "add Kubernetes/deployment.yaml"
   git push
   ```

   `deployment.yaml` 檔案會新增至名為 的資料夾中的儲存庫`Kubernetes`。

您現在已新增所有來源檔案。

花一點時間仔細檢查您的工作，並確保將所有檔案放在正確的資料夾中。資料夾結構如下所示：

```
|— codecatalyst-eks-source-repository
   |— Kubernetes
      |— deployment.yaml
   |— public-html
   |  |— index.html
   |— Dockerfile
```

## 步驟 5：建立 AWS 角色
<a name="deploy-tut-eks-roles"></a>

在本節中，您會建立 CodeCatalyst AWS 工作流程運作所需的 IAM 角色。這些角色包括：
+ **組建角色** – 授予 CodeCatalyst 組建動作 （在工作流程中） 存取 AWS 您的帳戶和寫入 Amazon ECR 和 Amazon EC2 的許可。
+ **部署角色** – 授予 CodeCatalyst **部署到 Kubernetes 叢集**動作 （在工作流程中） 存取 AWS 您的帳戶和 Amazon EKS 的許可。

如需 IAM 角色的詳細資訊，請參閱*AWS Identity and Access Management 《 使用者指南*》中的 [IAM 角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html)。

**注意**  
若要節省時間，您可以建立稱為角色的單一`CodeCatalystWorkflowDevelopmentRole-spaceName`角色，而不是先前列出的兩個角色。如需詳細資訊，請參閱[為您的帳戶和空間建立 **CodeCatalystWorkflowDevelopmentRole-*spaceName***角色](ipa-iam-roles.md#ipa-iam-roles-service-create)。了解該`CodeCatalystWorkflowDevelopmentRole-spaceName`角色具有非常廣泛的許可，這可能會構成安全風險。我們建議您只在安全性較少的教學課程和案例中使用此角色。本教學假設您正在建立先前列出的兩個角色。

若要建立建置和部署角色，請完成下列一系列程序。

**1. 為兩個角色建立信任政策**

1. 前往您的開發環境。

1. 在 `Cloud9-long-string`目錄中，建立名為 的檔案`codecatalyst-eks-trust-policy.json`，其中包含下列內容：

**2. 建立建置角色的建置政策**
+ 在 `Cloud9-long-string`目錄中，建立名為 的檔案`codecatalyst-eks-build-policy.json`，其中包含下列內容：

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "ecr:*",
                  "ec2:*"
              ],
              "Resource": "*"
          }
      ]
  }
  ```

------
**注意**  
第一次使用該角色執行工作流程動作時，請在資源政策陳述式中使用萬用字元，然後在資源名稱可用之後縮小政策的範圍。  

  ```
  "Resource": "*"
  ```

**3. 建立部署角色的部署政策**
+ 在 `Cloud9-long-string`目錄中，建立名為 的檔案`codecatalyst-eks-deploy-policy.json`，其中包含下列內容：

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "eks:DescribeCluster",
                  "eks:ListClusters"
              ],
              "Resource": "*"
          }
      ]
  }
  ```

------
**注意**  
第一次使用該角色執行工作流程動作時，請在資源政策陳述式中使用萬用字元，然後在資源名稱可用之後縮小政策的範圍。  

  ```
  "Resource": "*"
  ```

您現在已將三個政策文件新增至開發環境。您的目錄結構現在如下所示：

```
|— Cloud9-long-string
   |— .c9
   |— codecatalyst-eks-source-repository
      |— Kubernetes
      |— public-html
      |— Dockerfile
   codecatalyst-eks-build-policy.json
   codecatalyst-eks-deploy-policy.json
   codecatalyst-eks-trust-policy.json
```

**4. 將建置政策新增至 AWS**

1. 在開發環境終端機中，輸入：

   ```
   cd /projects
   ```

1. 輸入：

   ```
   aws iam create-policy \
       --policy-name codecatalyst-eks-build-policy \
       --policy-document file://codecatalyst-eks-build-policy.json
   ```

1. 按 **Enter**。

1. 在命令輸出中，記下 `"arn":`值，例如 `arn:aws:iam::111122223333:policy/codecatalyst-eks-build-policy`。您稍後需要此 ARN。

**5. 將部署政策新增至 AWS**

1. 輸入：

   ```
   aws iam create-policy \
       --policy-name codecatalyst-eks-deploy-policy \
       --policy-document file://codecatalyst-eks-deploy-policy.json
   ```

1. 按 **Enter**。

1. 在命令輸出中，記下部署政策`"arn":`的值，例如 `arn:aws:iam::111122223333:policy/codecatalyst-eks-deploy-policy`。您稍後需要此 ARN。

**6. 建立建置角色**

1. 輸入：

   ```
   aws iam create-role \
         --role-name codecatalyst-eks-build-role \
         --assume-role-policy-document file://codecatalyst-eks-trust-policy.json
   ```

1. 按 **Enter**。

1. 輸入：

   ```
   aws iam attach-role-policy \
         --role-name codecatalyst-eks-build-role \
         --policy-arn arn:aws:iam::111122223333:policy/codecatalyst-eks-build-policy
   ```

   其中 *arn：aws：iam：：111122223333：policy/codecatalyst-eks-build-policy* 會取代為您先前記下的建置政策的 ARN。

1. 按 **Enter**。

1. 在終端機提示中，輸入：

   ```
   aws iam get-role \
         --role-name codecatalyst-eks-build-role
   ```

1. 按 **Enter**。

1. 請記下角色`"Arn":`的值，例如 `arn:aws:iam::111122223333:role/codecatalyst-eks-build-role`。您稍後需要此 ARN。

**7. 建立部署角色**

1. 輸入：

   ```
   aws iam create-role \
         --role-name codecatalyst-eks-deploy-role \
         --assume-role-policy-document file://codecatalyst-eks-trust-policy.json
   ```

1. 按 **Enter**。

1. 輸入：

   ```
   aws iam attach-role-policy \
         --role-name codecatalyst-eks-deploy-role \
         --policy-arn arn:aws:iam::111122223333:policy/codecatalyst-eks-deploy-policy
   ```

   其中 *arn：aws：iam：：111122223333：policy/codecatalyst-eks-deploy-policy* 會取代為您先前記下的部署政策的 ARN。

1. 按 **Enter**。

1. 輸入：

   ```
   aws iam get-role \
         --role-name codecatalyst-eks-deploy-role
   ```

1. 按 **Enter**。

1. 請記下角色`"Arn":`的值，例如 `arn:aws:iam::111122223333:role/codecatalyst-eks-deploy-role`。您稍後需要此 ARN。

您現在已建立建置和部署角色，並記下其 ARNs。

## 步驟 6：將 AWS 角色新增至 CodeCatalyst
<a name="deploy-tut-eks-import-roles"></a>

在此步驟中，您將建置角色 (`codecatalyst-eks-build-role`) 和部署角色 (`codecatalyst-eks-deploy-role`) 新增至您連線至空間 AWS 帳戶 的 。這可讓角色在您的工作流程中使用。

**將建置和部署角色新增至您的 AWS 帳戶**

1. 在 CodeCatalyst 主控台中，導覽至您的空間。

1. 在頂端，選擇**設定**。

1. 在導覽窗格中，選擇**AWS 帳戶**。帳戶清單隨即出現。

1. 在 **Amazon CodeCatalyst 顯示名稱**欄中，複製 AWS 帳戶 您建立建置和部署角色的 顯示名稱。（可能是數字。) 稍後建立工作流程時，您將需要此值。

1. 選擇顯示名稱。

1. **從管理主控台選擇 AWS 管理角色**。

   **將 IAM 角色新增至 Amazon CodeCatalyst 空間**頁面隨即出現。您可能需要登入才能存取頁面。

1. 選取**新增您在 IAM 中建立的現有角色**。

   下拉式清單隨即出現。清單會顯示建置和部署角色，以及具有包含 `codecatalyst-runner.amazonaws.com``codecatalyst.amazonaws.com`和服務主體之信任政策的任何其他 IAM 角色。

1. 從下拉式清單中，新增：
   + `codecatalyst-eks-build-role`
   + `codecatalyst-eks-deploy-role`
**注意**  
如果您看到 `The security token included in the request is invalid`，可能是因為您沒有適當的許可。若要修正此問題，請以您建立 CodeCatalyst 空間時使用 AWS 的帳戶登入 AWS 身分登出 。

1. 返回 CodeCatalyst 主控台並重新整理頁面。

   建置和部署角色現在應該會出現在 **IAM 角色**下。

   這些角色現在可用於 CodeCatalyst 工作流程。

## 步驟 7：更新 ConfigMap
<a name="deploy-tut-eks-configmap"></a>

您必須將您在 中建立的部署角色新增至 [步驟 5：建立 AWS 角色](#deploy-tut-eks-roles) Kubernetes `ConfigMap` 檔案，讓**部署至 Kubernetes 叢集**動作 （在您的工作流程中） 能夠存取叢集並與叢集互動。您可以使用 `eksctl`或 `kubectl` 來執行此任務。

**使用 eksctl 設定 Kubernetes ConfigMap 檔案**
+ 在開發環境終端機中，輸入：

  ```
  eksctl create iamidentitymapping --cluster codecatalyst-eks-cluster --arn arn:aws:iam::111122223333:role/codecatalyst-eks-deploy-role --group system:masters --username codecatalyst-eks-deploy-role --region us-west-2
  ```

  其中：
  + *codecatalyst-eks-cluster* 會取代為 Amazon EKS 叢集的叢集名稱。
  +  *arn：aws：iam：：111122223333：role/codecatalyst-eks-deploy-role* 會取代為您在 中建立之部署角色的 ARN[步驟 5：建立 AWS 角色](#deploy-tut-eks-roles)。
  +  *codecatalyst-eks-deploy-role* ( 旁`--username`) 會取代為您在 中建立的部署角色名稱[步驟 5：建立 AWS 角色](#deploy-tut-eks-roles)。
**注意**  
如果您決定不建立部署角色，請將 *codecatalyst-eks-deploy-role* 取代為`CodeCatalystWorkflowDevelopmentRole-spaceName`角色的名稱。如需有關此角色的詳細資訊，請參閱 [步驟 5：建立 AWS 角色](#deploy-tut-eks-roles)。
  +  *us-west-2* 已取代為您的 區域。

  如需此命令的詳細資訊，請參閱[管理 IAM 使用者和角色](https://eksctl.io/usage/iam-identity-mappings/)。

  出現類似下列的訊息：

  ```
  2023-06-09 00:58:29 [ℹ]  checking arn arn:aws:iam::111122223333:role/codecatalyst-eks-deploy-role against entries in the auth ConfigMap
  2023-06-09 00:58:29 [ℹ]  adding identity "arn:aws:iam::111122223333:role/codecatalyst-eks-deploy-role" to auth ConfigMap
  ```

**使用 kubectl 設定 Kubernetes ConfigMap 檔案**

1. 在開發環境終端機中，輸入：

   ```
   kubectl edit configmap -n kube-system aws-auth
   ```

   ConfigMap 檔案會顯示在畫面上。

1. 新增紅色斜體的文字：

   ```
   # Please edit the object below. Lines beginning with a '#' will be ignored,
   # and an empty file will abort the edit. If an error occurs while saving this file will be
   # reopened with the relevant failures.
   #
   apiVersion: v1
   data:
     mapRoles: |
       - groups:
         - system:bootstrappers
         - system:nodes
         rolearn: arn:aws:iam::111122223333:role/eksctl-codecatalyst-eks-cluster-n-NodeInstanceRole-16BC456ME6YR5
         username: system:node:{{EC2PrivateDNSName}}
       - groups:
         - system:masters
         rolearn: arn:aws:iam::111122223333:role/codecatalyst-eks-deploy-role
         username: codecatalyst-eks-deploy-role
     mapUsers: |
       []
   kind: ConfigMap
   metadata:
     creationTimestamp: "2023-06-08T19:04:39Z"
     managedFields:
     ...
   ```

   其中：
   +  *arn：aws：iam：：111122223333：role/codecatalyst-eks-deploy-role* 會取代為您在 中建立之部署角色的 ARN[步驟 5：建立 AWS 角色](#deploy-tut-eks-roles)。
   +  *codecatalyst-eks-deploy-role* ( 旁`username:`) 會取代為您在 中建立的部署角色名稱[步驟 5：建立 AWS 角色](#deploy-tut-eks-roles)。
**注意**  
如果您決定不建立部署角色，請將 *codecatalyst-eks-deploy-role* 取代為`CodeCatalystWorkflowDevelopmentRole-spaceName`角色的名稱。如需有關此角色的詳細資訊，請參閱 [步驟 5：建立 AWS 角色](#deploy-tut-eks-roles)。

   如需詳細資訊，請參閱《**Amazon** [EKS 使用者指南》中的啟用叢集的 IAM 主體存取權](https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html)。

您現在已提供部署角色，並透過擴充**部署至 Amazon EKS** 動作，將`system:masters`許可授予您的 Kubernetes 叢集。

## 步驟 8：建立和執行工作流程
<a name="deploy-tut-eks-workflow"></a>

在此步驟中，您會建立工作流程來取得來源檔案、將它們建置到 Docker 映像中，然後將映像部署到 Amazon EKS 叢集中的樹莢中。

工作流程包含下列依次執行的建置區塊：
+ 觸發條件 – 當您將變更推送至來源儲存庫時，此觸發條件會自動啟動工作流程執行。關於觸發條件的詳細資訊，請參閱 [使用觸發程序自動啟動工作流程執行](workflows-add-trigger.md)。
+ 建置動作 (`BuildBackend`) – 觸發時，動作會使用 Dockerfile 建置 Docker 映像，並將映像推送至 Amazon ECR。建置動作也會使用正確的值更新 `deployment.yaml` 檔案中的 `$REPOSITORY_URI`和 `$IMAGE_TAG`變數，然後建立此檔案和 `Kubernetes` 資料夾中任何其他檔案的輸出成品。在本教學課程中，`Kubernetes`資料夾中唯一的檔案是 ，`deployment.yaml`但您可以包含更多檔案。成品會用作部署動作的輸入，接下來是 。

  如需建置動作的詳細資訊，請參閱 [使用工作流程建置](build-workflow-actions.md)。
+ 部署動作 (`DeployToEKS`) – 完成建置動作時，部署動作會尋找建置動作 (`Manifests`) 產生的輸出成品，並在其中尋找`deployment.yaml`檔案。動作接著會依照 `deployment.yaml` 檔案中的指示執行三個 Pod，每個都包含單一 'Hello， World！' Docker 容器 - Amazon EKS 叢集內部。

**建立工作流程**

1. 前往 CodeCatalyst 主控台。

1. 導覽至您的專案 (`codecatalyst-eks-project`)。

1. 在導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

1. 選擇**建立工作流程**。

1. 針對**來源儲存庫**，選擇 `codecatalyst-eks-source-repository`。

1. 針對**分支**，選擇 `main`。

1. 選擇**建立**。

1. 刪除 YAML 範例程式碼。

1. 新增下列 YAML 程式碼以建立新的工作流程定義檔案：
**注意**  
如需工作流程定義檔案的詳細資訊，請參閱 [工作流程 YAML 定義](workflow-reference.md)。
**注意**  
在下列 YAML 程式碼中，您可以視需要省略這些`Connections:`區段。如果您省略這些區段，您必須確保環境中**預設 IAM 角色**欄位中指定的角色包含 中所述兩個角色的許可和信任政策[步驟 6：將 AWS 角色新增至 CodeCatalyst](#deploy-tut-eks-import-roles)。如需使用預設 IAM 角色設定環境的詳細資訊，請參閱 [建立環境](deploy-environments-creating-environment.md)。

   ```
   Name: codecatalyst-eks-workflow
   SchemaVersion: 1.0
   
   Triggers:
     - Type: PUSH
       Branches:
         - main
   Actions:
     BuildBackend:
       Identifier: aws/build@v1
       Environment:
         Name: codecatalyst-eks-environment
         Connections:
           - Name: codecatalyst-account-connection
             Role: codecatalyst-eks-build-role
       Inputs:
         Sources:
           - WorkflowSource
         Variables:
           - Name: REPOSITORY_URI
             Value: 111122223333.dkr.ecr.us-west-2.amazonaws.com/codecatalyst-eks-image-repo
           - Name: IMAGE_TAG
             Value: ${WorkflowSource.CommitId}
       Configuration:
         Steps:
           #pre_build:
           - Run: echo Logging in to Amazon ECR...
           - Run: aws --version
           - Run: aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin 111122223333.dkr.ecr.us-west-2.amazonaws.com
           #build:
           - Run: echo Build started on `date`
           - Run: echo Building the Docker image...
           - Run: docker build -t $REPOSITORY_URI:latest .
           - Run: docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG
           #post_build:
           - Run: echo Build completed on `date`
           - Run: echo Pushing the Docker images...
           - Run: docker push $REPOSITORY_URI:latest
           - Run: docker push $REPOSITORY_URI:$IMAGE_TAG
           # Replace the variables in deployment.yaml
           - Run: find Kubernetes/ -type f | xargs sed -i "s|\$REPOSITORY_URI|$REPOSITORY_URI|g"
           - Run: find Kubernetes/ -type f | xargs sed -i "s|\$IMAGE_TAG|$IMAGE_TAG|g"
           - Run: cat Kubernetes/*
           # The output artifact will be a zip file that contains Kubernetes manifest files.
       Outputs:
         Artifacts:
           - Name: Manifests
             Files: 
               - "Kubernetes/*"
     DeployToEKS:
       DependsOn: 
         - BuildBackend
       Identifier: aws/kubernetes-deploy@v1
       Environment:
         Name: codecatalyst-eks-environment
         Connections:
           - Name: codecatalyst-account-connection
             Role: codecatalyst-eks-deploy-role
       Inputs:
         Artifacts:
           - Manifests
       Configuration:
         Namespace: default
         Region: us-west-2
         Cluster: codecatalyst-eks-cluster
         Manifests: Kubernetes/
   ```

   在上述程式碼中，取代：
   + 兩個 *codecatalyst-eks-environment* 執行個體，其名稱為您在 中建立的環境[先決條件](#deploy-tut-eks-prereqs)。
   + 這兩個 *codecatalyst-account-connection* 執行個體都具有您帳戶連線的顯示名稱。顯示名稱可能是數字。如需詳細資訊，請參閱[步驟 6：將 AWS 角色新增至 CodeCatalyst](#deploy-tut-eks-import-roles)。
   + *codecatalyst-eks-build-role*，其中包含您在 中建立的建置角色名稱[步驟 5：建立 AWS 角色](#deploy-tut-eks-roles)。
   + *111122223333.dkr.ecr.us-west-2.amazonaws.com/codecatalyst-eks-image-repo* （在 `Value:` 屬性中），其中包含您在 中建立的 Amazon ECR 儲存庫的 URI[步驟 3：建立 Amazon ECR 映像儲存庫](#deploy-tut-eks-ecr)。
   + *111122223333.dkr.ecr.us-west-2.amazonaws.com* （在 `Run: aws ecr`命令中），不含映像尾碼 () 的 Amazon ECR 儲存庫的 URI`/codecatalyst-eks-image-repo`。
   + *codecatalyst-eks-deploy-role*，內含您在 中建立的部署角色名稱[步驟 5：建立 AWS 角色](#deploy-tut-eks-roles)。
   + 使用 AWS 區域碼的 *us-west-2* 這兩個執行個體。如需區域代碼清單，請參閱《》中的[區域端點](https://docs.aws.amazon.com/general/latest/gr/rande.html)*AWS 一般參考*。
**注意**  
如果您決定不建立建置和部署角色，請將 *codecatalyst-eks-build-role* 和 *codecatalyst-eks-deploy-role* 取代為`CodeCatalystWorkflowDevelopmentRole-spaceName`角色的名稱。如需有關此角色的詳細資訊，請參閱 [步驟 5：建立 AWS 角色](#deploy-tut-eks-roles)。

1. （選用） 選擇**驗證**，以確保 YAML 程式碼在遞交之前有效。

1. 選擇 **Commit** (遞交)。

1. 在**遞交工作流程**對話方塊中，輸入下列內容：

   1. 針對**遞交訊息**，移除文字並輸入：

      ```
      Add first workflow
      ```

   1. 針對**儲存庫**，選擇 `codecatalyst-eks-source-repository`。

   1. 針對**分支名稱**，選擇主要。

   1. 選擇 **Commit** (遞交)。

   您現在已建立工作流程。由於工作流程頂端定義的觸發條件，工作流程執行會自動啟動。具體而言，當您將`workflow.yaml`檔案遞交 （並推送） 至來源儲存庫時，觸發會啟動工作流程執行。

**檢視工作流程執行進度**

1. 在 CodeCatalyst 主控台的導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

1. 選擇您剛建立的工作流程 `codecatalyst-eks-workflow`。

1. 選擇 **BuildBackend** 以查看建置進度。

1. 選擇 **DeployToEKS** 以查看部署進度。

   如需檢視執行詳細資訊的詳細資訊，請參閱 [檢視工作流程執行狀態和詳細資訊](workflows-view-run.md)。

**驗證部署**

1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在左側底部附近，選擇**負載平衡器**。

1. 選取在 Kubernetes 部署中建立的負載平衡器。如果您不確定要選擇哪個負載平衡器，請在標籤索引標籤下尋找下列**標籤**：
   + `kubernetes.io/service-name`
   + `kubernetes.io/cluster/ekstutorialcluster`

1. 選取正確的負載平衡器後，選擇**描述**索引標籤。

1. 將 **DNS 名稱**值複製並貼到瀏覽器的地址列。

   'Hello， World！' 網頁會顯示在瀏覽器中，表示您已成功部署應用程式。

## 步驟 9：變更來源檔案
<a name="deploy-tut-eks-change"></a>

在本節中，您會變更來源儲存庫中的 `index.html` 檔案。此變更會導致工作流程建立新的 Docker 映像、使用遞交 ID 標記它、將其推送至 Amazon ECR，並將其部署至 Amazon ECS。

**若要變更 index.html**

1. 前往您的開發環境。

1. 在終端機提示中，變更至您的來源儲存庫：

   ```
   cd /projects/codecatalyst-eks-source-repository
   ```

1.  提取最新的工作流程變更：

   ```
   git pull
   ```

1. 打開 `codecatalyst-eks-source-repository/public-html/index.html`。

1. 在第 14 行，將`Hello, World!`文字變更為 `Tutorial complete!`。

1. 新增、遞交和推送：

   ```
   git add .
   git commit -m "update index.html title"
   git push
   ```

   工作流程執行會自動啟動。

1. （選用） 輸入：

   ```
   git show HEAD
   ```

   請注意`index.html`變更的遞交 ID。此遞交 ID 將標記到 Docker 映像，該映像將由您剛啟動的工作流程執行所部署。

1. 觀看部署進度：

   1. 在 CodeCatalyst 主控台的導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

   1. 選擇 `codecatalyst-eks-workflow`以檢視最新的執行。

   1. 選擇 **BuildBackend** 和 **DeployToEKS** 以查看工作流程執行進度。

1. 確認您的應用程式已更新，如下所示：

   1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

   1. 在左側底部附近，選擇**負載平衡器**。

   1. 選取在 Kubernetes 部署中建立的負載平衡器。

   1. 將 **DNS 名稱**值複製並貼到瀏覽器的地址列。

      「教學完成！」 網頁會顯示在瀏覽器中，表示您已成功部署應用程式的新修訂版。

1. （選用） 在 中 AWS，切換到 Amazon ECR 主控台，並確認新的 Docker 映像已標記此程序步驟 7 的遞交 ID。

## 清除
<a name="deploy-tut-eks-cleanup"></a>

您應該清除您的環境，以免不必要地向您收取本教學課程使用的儲存和運算資源的費用。

**清理方式**

1. 刪除您的叢集：

   1. 在開發環境終端機中，輸入：

     ```
     eksctl delete cluster --region=us-west-2 --name=codecatalyst-eks-cluster
     ```

     其中：
     + *us-west-2* 已取代為您的 區域。
     + *codecatalyst-eks-cluster* 會取代為您建立的叢集名稱。

     5-10 分鐘後，會刪除叢集和相關聯的資源，包括但不限於 CloudFormation 堆疊、節點群組 （在 Amazon EC2 中） 和負載平衡器。
**重要**  
如果`eksctl delete cluster`命令無法運作，您可能需要重新整理登入 AWS 資料或登入`kubectl`資料。如果您不確定要重新整理哪些登入資料，請先重新整理 AWS 登入資料。若要重新整理您的 AWS 登入資料，請參閱 [如何修正「找不到登入資料」和「ExpiredToken」錯誤？](troubleshooting-workflows.md#troubleshooting-workflows-auth-errors-eks)。若要重新整理您的`kubectl`登入資料，請參閱 [如何修正「無法連線至伺服器」錯誤？](troubleshooting-workflows.md#troubleshooting-workflows-unable-connect-eks)。

1. 在 AWS 主控台中，如下所示進行清除：

   1. 在 Amazon ECR 中，刪除 `codecatalyst-eks-image-repo`。

   1. 在 IAM Identity Center 中，刪除：

      1. `codecatalyst-eks-user`

      1. `codecatalyst-eks-permission-set`

   1. 在 IAM 中，刪除：
      + `codecatalyst-eks-build-role`
      + `codecatalyst-eks-deploy-role`
      + `codecatalyst-eks-build-policy`
      + `codecatalyst-eks-deploy-policy`

1. 在 CodeCatalyst 主控台中，如下所示進行清除：

   1. 刪除 `codecatalyst-eks-workflow`。

   1. 刪除 `codecatalyst-eks-environment`。

   1. 刪除 `codecatalyst-eks-source-repository`。

   1. 刪除您的開發環境。

   1. 刪除 `codecatalyst-eks-project`。

在本教學課程中，您已了解如何使用 CodeCatalyst 工作流程和部署至 **Kubernetes 叢集動作，將應用程式部署至 Amazon EKS **服務。

# 將 'Deploy 新增至 Kubernetes 叢集' 動作
<a name="deploy-action-eks-adding"></a>

使用下列指示將**部署至 Kubernetes 叢集**動作新增至您的工作流程。

**開始之前**

將**部署至 Kubernetes 叢集**動作新增至工作流程之前，您必須備妥下列項目：

**提示**  
若要快速設定這些先決條件，請遵循 中的指示[教學課程：將應用程式部署至 Amazon EKS](deploy-tut-eks.md)。
+ Amazon EKS 中的 Kubernetes 叢集。如需叢集的相關資訊，請參閱《[Amazon EKS 使用者指南》中的 Amazon EKS 叢集](https://docs.aws.amazon.com/eks/latest/userguide/clusters.html)。 ****
+ 至少一個 Dockerfile，說明如何將應用程式組合成 Docker 映像。如需 Dockerfiles 的詳細資訊，請參閱 [Dockerfile 參考](https://docs.docker.com/engine/reference/builder/)。
+ 至少一個 Kubernetes 資訊清單檔案，在 Kubernetes 文件中稱為*組態檔案*或*組態*。如需詳細資訊，請參閱 Kubernetes 文件中的[管理資源](https://kubernetes.io/docs/concepts/cluster-administration/manage-deployment/)。
+ IAM 角色，可讓**部署至 Kubernetes 叢集**動作存取您的 Amazon EKS 叢集並與之互動。如需詳細資訊，請參閱 [「部署到 Kubernetes 叢集」動作 YAML](deploy-action-ref-eks.md) 中的「[Role](deploy-action-ref-eks.md#deploy.action.eks.environment.connections.role)」主題。

  建立此角色之後，您必須將其新增至：
  + 您的 Kubernetes ConfigMap 檔案。若要了解如何將角色新增至 ConfigMap 檔案，請參閱《**Amazon EKS 使用者指南*》中的*[啟用叢集的 IAM 主體存取權](https://docs.aws.amazon.com/eks/latest/userguide/add-user-role.html)。
  + CodeCatalyst。若要了解如何將 IAM 角色新增至 CodeCatalyst，請參閱 [新增 IAM 角色至帳戶連線](ipa-connect-account-addroles.md)。
+ CodeCatalyst 空間、專案和環境。空間和環境都必須連線到您要部署應用程式的 AWS 帳戶。如需詳細資訊，請參閱[建立空間](spaces-create.md)、[在 Amazon CodeCatalyst 中建立空專案](projects-create.md#projects-create-empty)及[部署至 AWS 帳戶 和 VPCs](deploy-environments.md)。
+ CodeCatalyst 支援的來源儲存庫。儲存庫會存放您的應用程式來源檔案、Dockerfiles 和 Kubernetes 資訊清單。如需詳細資訊，請參閱[將程式碼與 CodeCatalyst 中的來源儲存庫一起存放和協作儲存程式碼並與來源儲存庫協作](source.md)。

------
#### [ Visual ]

**使用視覺化編輯器將 'Deploy 新增至 Kubernetes 叢集' 動作**

1. 在 https：//[https://codecatalyst.aws/](https://codecatalyst.aws/) 開啟 CodeCatalyst 主控台。

1. 選擇您的專案。

1. 在導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

1. 選擇工作流程的名稱。您可以依定義工作流程的來源儲存庫或分支名稱進行篩選，或依工作流程名稱或狀態進行篩選。

1. 選擇**編輯**。

1. 選擇**視覺化**。

1. 在左上角，選擇 **\$1 動作**以開啟動作目錄。

1. 從下拉式清單中，選擇 **Amazon CodeCatalyst**。

1. 搜尋**部署至 Kubernetes 叢集**動作，並執行下列其中一項操作：
   + 選擇加號 (**\$1**) 將動作新增至工作流程圖表，並開啟其組態窗格。

     或
   + 選擇**部署到 Kubernetes 叢集**。動作詳細資訊對話方塊隨即出現。在此對話方塊中：
     + （選用） 選擇**下載**[以檢視動作的原始碼](workflows-view-source.md#workflows-view-source.title)。
     + 選擇**新增至工作流程**，將動作新增至工作流程圖表，然後開啟其組態窗格。

1. 在**輸入**和**組態**索引標籤中，根據您的需求完成欄位。如需每個欄位的說明，請參閱 [「部署到 Kubernetes 叢集」動作 YAML](deploy-action-ref-eks.md)。此參考提供在 YAML 和視覺化編輯器中顯示的每個欄位 （和對應的 YAML 屬性值） 的詳細資訊。

1. （選用） 選擇**驗證**以在遞交之前驗證工作流程的 YAML 程式碼。

1. 選擇**遞交**，輸入遞交訊息，然後再次選擇**遞交**。

------
#### [ YAML ]

**使用 YAML 編輯器將 'Deploy 新增至 Kubernetes 叢集' 動作**

1. 在 https：//[https://codecatalyst.aws/](https://codecatalyst.aws/) 開啟 CodeCatalyst 主控台。

1. 選擇您的專案。

1. 在導覽窗格中，選擇 **CI/CD**，然後選擇**工作流程**。

1. 選擇工作流程的名稱。您可以依定義工作流程的來源儲存庫或分支名稱進行篩選，或依工作流程名稱或狀態進行篩選。

1. 選擇**編輯**。

1. 選擇 **YAML**。

1. 在左上角，選擇 **\$1 動作**以開啟動作目錄。

1. 從下拉式清單中，選擇 **Amazon CodeCatalyst**。

1. 搜尋**部署到 Kubernetes 叢集**動作，並執行下列其中一項操作：
   + 選擇加號 (**\$1**) 將動作新增至工作流程圖表，並開啟其組態窗格。

     或
   + 選擇**部署到 Kubernetes 叢集**。動作詳細資訊對話方塊隨即出現。在此對話方塊中：
     + （選用） 選擇**下載**[以檢視動作的原始程式碼](workflows-view-source.md#workflows-view-source.title)。
     + 選擇**新增至工作流程**，將動作新增至工作流程圖表，然後開啟其組態窗格。

1. 根據您的需求修改 YAML 程式碼中的屬性。中提供了每個可用屬性的說明[「部署到 Kubernetes 叢集」動作 YAML](deploy-action-ref-eks.md)。

1. （選用） 選擇**驗證**以在遞交之前驗證工作流程的 YAML 程式碼。

1. 選擇**遞交**，輸入遞交訊息，然後再次選擇**遞交**。

------

# 「部署到 Kubernetes 叢集」變數
<a name="deploy-action-eks-variables"></a>

**部署至 Kubernetes 叢集**動作會在執行時間產生並設定下列變數。這些稱為*預先定義的變數*。

如需在工作流程中參考這些變數的資訊，請參閱 [使用預先定義的變數](workflows-using-predefined-variables.md)。


| 金鑰 | 值 | 
| --- | --- | 
|  叢集  |  在工作流程執行期間部署至 之 Amazon EKS 叢集 的 Amazon.com Resource Name (ARN)。 範例：`arn:aws:eks:us-west-2:111122223333:cluster/codecatalyst-eks-cluster`  | 
|  deployment-platform  |  部署平台的名稱。 硬式編碼為 `AWS:EKS`。  | 
|  中繼資料  |  預訂. 在工作流程執行期間所部署叢集的相關 JSON 格式中繼資料。  | 
|  命名空間  |  部署叢集的 Kubernetes 命名空間。 範例：`default`  | 
|  resources  |  預訂. 與工作流程執行期間部署的資源相關的 JSON 格式中繼資料。  | 
|  伺服器  |  您可以使用 等管理工具與叢集通訊的 API 伺服器端點名稱`kubectl`。 如需 API 服務端點的詳細資訊，請參閱《[Amazon EKS 使用者指南》中的 Amazon EKS 叢集端點存取控制](https://docs.aws.amazon.com/eks/latest/userguide/cluster-endpoint.html)。 **** 範例：`https://random-string.gr7.us-west-2.eks.amazonaws.com`  | 

# 「部署到 Kubernetes 叢集」動作 YAML
<a name="deploy-action-ref-eks"></a>

以下是**部署至 Kubernetes 叢集動作的 YAML **定義。若要了解如何使用此動作，請參閱 [使用工作流程部署至 Amazon EKS](deploy-action-eks.md)。

此動作定義以區段的形式存在於更廣泛的工作流程定義檔案中。如需有關此檔案的詳細資訊，請參閱[工作流程 YAML 定義](workflow-reference.md)。

**注意**  
下列大多數 YAML 屬性在視覺化編輯器中都有對應的 UI 元素。若要查詢 UI 元素，請使用 **Ctrl\$1F**。 元素會與其相關聯的 YAML 屬性一起列出。

```
# The workflow definition starts here.
# See 最上層屬性 for details.
        
Name: MyWorkflow
SchemaVersion: 1.0 
Actions:

# The action definition starts here.   
  DeployToKubernetesCluster\$1nn: 
    Identifier: aws/kubernetes-deploy@v1
    DependsOn:
      - build-action
    Compute:  
        - Type: EC2 | Lambda
        - Fleet: fleet-name
    Timeout: timeout-minutes
    Environment:
      Name: environment-name
      Connections:
        - Name: account-connection-name
          Role: DeployToEKS
    Inputs:
      # Specify a source or an artifact, but not both.
      Sources:
        - source-name-1
      Artifacts:
        - manifest-artifact
    Configuration:
      Namespace: namespace
      Region: us-east-1 
      Cluster: eks-cluster
      Manifests: manifest-path
```

## DeployToKubernetesCluster
<a name="deploy.action.eks.name"></a>

(必要)

指定動作的名稱。工作流程中的所有動作名稱都必須是唯一的。動作名稱僅限於英數字元 (a-z、A-Z、0-9)、連字號 (-) 和底線 (\$1)。不允許空格。您不能使用引號在動作名稱中啟用特殊字元和空格。

預設：`DeployToKubernetesCluster_nn`。

對應的 UI：組態索引標籤/**動作顯示名稱**

## Identifier
<a name="deploy.action.eks.identifier"></a>

(*DeployToKubernetesCluster*/**Identifier**)

(必要)

識別 動作。除非您想要變更版本，否則請勿變更此屬性。如需詳細資訊，請參閱[指定要使用的動作版本](workflows-action-versions.md)。

預設：`aws/kubernetes-deploy@v1`。

對應的 UI：工作流程圖表/DeployToKubernetesCluster\$1nn/**aws/kubernetes-deploy@v1** 標籤

## DependsOn
<a name="deploy.action.eks.dependson"></a>

(*DeployToKubernetesCluster*/**DependsOn**)

(選用)

指定必須成功執行的動作、動作群組或閘道，才能執行此動作。

如需 'depends on' 功能的詳細資訊，請參閱 [定序動作](workflows-depends-on.md)。

對應的 UI：輸入索引標籤/**取決於 - 選用**

## Compute
<a name="deploy.action.eks.computename"></a>

(*DeployToKubernetesCluster*/**Compute**)

(選用)

用來執行工作流程動作的運算引擎。您可以在工作流程層級或動作層級指定運算，但不能同時指定兩者。在工作流程層級指定時，運算組態會套用至工作流程中定義的所有動作。在工作流程層級，您也可以在同一個執行個體上執行多個動作。如需詳細資訊，請參閱[跨動作共用運算](compute-sharing.md)。

對應的 UI：*無*

## Type
<a name="deploy.action.eks.computetype"></a>

(*DeployToKubernetesCluster*/Compute/**Type**)

（如果[Compute](#deploy.action.eks.computename)包含 則為必要）

運算引擎的類型。您可以使用下列其中一個值：
+ **EC2** （視覺化編輯器） 或 `EC2`(YAML 編輯器）

  最佳化動作執行期間的彈性。
+ **Lambda** （視覺化編輯器） 或 `Lambda`(YAML 編輯器）

  最佳化動作啟動速度。

如需運算類型的更多相關資訊，請參閱[運算類型](workflows-working-compute.md#compute.types)。

對應的 UI：組態索引標籤/進階 - 選用/**運算類型**

## Fleet
<a name="deploy.action.eks.computefleet"></a>

(*DeployToKubernetesCluster*/Compute/**Fleet**)

(選用)

指定將執行工作流程或工作流程動作的機器或機群。使用隨需機群時，當動作開始時，工作流程會佈建所需的資源，並在動作完成時銷毀機器。隨需機群的範例：`Linux.x86-64.Large`、`Linux.x86-64.XLarge`。如需隨需機群的詳細資訊，請參閱 [隨需機群屬性](workflows-working-compute.md#compute.on-demand)。

使用佈建機群，您可以設定一組專用機器來執行工作流程動作。這些機器保持閒置狀態，準備好立即處理動作。如需佈建機群的詳細資訊，請參閱 [佈建的機群屬性](workflows-working-compute.md#compute.provisioned-fleets)。

如果省略 `Fleet` ，則預設值為 `Linux.x86-64.Large`。

對應的 UI：組態索引標籤/進階 - 選用/**運算機群**

## Timeout
<a name="deploy.action.eks.timeout"></a>

(*DeployToKubernetesCluster*/**Timeout**)

(選用)

指定動作在 CodeCatalyst 結束動作之前可執行的時間，以分鐘為單位 (YAML 編輯器） 或小時和分鐘為單位。最小值為 5 分鐘，最大值如 中所述[CodeCatalyst 中工作流程的配額](workflows-quotas.md)。預設逾時與最大逾時相同。

對應的 UI：組態索引標籤/**逾時 - 選用 **

## Environment
<a name="deploy.action.eks.environment"></a>

(*DeployToKubernetesCluster*/**Environment**)

(必要)

指定要與 動作搭配使用的 CodeCatalyst 環境。動作會連線至所選環境中指定的 AWS 帳戶 和選用 Amazon VPC。動作會使用環境中指定的預設 IAM 角色來連線至 AWS 帳戶，並使用 [Amazon VPC 連線](https://docs.aws.amazon.com/codecatalyst/latest/adminguide/managing-vpcs.add.html)中指定的 IAM 角色來連線至 Amazon VPC。

**注意**  
如果預設 IAM 角色沒有 動作所需的許可，您可以將 動作設定為使用不同的角色。如需詳細資訊，請參閱[變更 動作的 IAM 角色](deploy-environments-switch-role.md)。

如需環境的詳細資訊，請參閱 [部署至 AWS 帳戶 和 VPCs](deploy-environments.md)和 [建立環境](deploy-environments-creating-environment.md)。

對應的 UI：組態索引標籤/**環境**

## Name
<a name="deploy.action.eks.environment.name"></a>

(*DeployToKubernetesCluster*/Environment/**Name**)

（如果[Environment](#deploy.action.eks.environment)包含 則為必要）

指定您要與動作建立關聯的現有環境名稱。

對應的 UI：組態索引標籤/**環境**

## Connections
<a name="deploy.action.eks.environment.connections"></a>

(*DeployToKubernetesCluster*/Environment/**Connections**)

（動作的較新版本為選用；較舊版本為必要）

指定要與動作建立關聯的帳戶連線。您可以在 下指定最多一個帳戶連線`Environment`。

如果您未指定帳戶連線：
+ 動作會使用 CodeCatalyst 主控台中環境指定的 AWS 帳戶 連線和預設 IAM 角色。如需將帳戶連線和預設 IAM 角色新增至環境的相關資訊，請參閱 [建立環境](deploy-environments-creating-environment.md)。
+ 預設 IAM 角色必須包含 動作所需的政策和許可。若要判斷這些政策和許可是什麼，請參閱動作 YAML 定義文件中**角色**屬性的描述。

如需帳戶連線的詳細資訊，請參閱 [允許存取已連線 AWS 的資源 AWS 帳戶](ipa-connect-account.md)。如需將帳戶連線新增至環境的相關資訊，請參閱 [建立環境](deploy-environments-creating-environment.md)。

對應的 UI：取決於動作版本，下列其中一項：
+ （較新版本） 組態tab/Environment/What是 *my-environment*？/三個點功能表/**切換角色**
+ （舊版本） 組態索引標籤/'Environment/account/role'/**AWS account connection**

## Name
<a name="deploy.action.eks.environment.connections.name"></a>

(*DeployToKubernetesCluster*/Environment/Connections/**Name**)

(選用)

指定帳戶連線的名稱。

對應的 UI：取決於動作版本，下列其中一項：
+ （較新版本） 組態tab/Environment/What是 *my-environment*？/三個點功能表/**切換角色**
+ （舊版本） 組態索引標籤/'Environment/account/role'/**AWS account connection**

## Role
<a name="deploy.action.eks.environment.connections.role"></a>

(*DeployToKubernetesCluster*/Environment/Connections/**Role**)

（如果[Connections](#deploy.action.eks.environment.connections)包含 則為必要）

指定**部署至 Kubernetes 叢集動作用來存取的 IAM **角色名稱 AWS。請確定您已[將角色新增至 CodeCatalyst 空間](ipa-connect-account-addroles.md)，且該角色包含下列政策。

如果您未指定 IAM 角色，則動作會使用 CodeCatalyst 主控台中[環境中](deploy-environments.md)列出的預設 IAM 角色。如果您在環境中使用預設角色，請確定其具有下列政策。
+ 下列許可政策：
**警告**  
將許可限制為下列政策中顯示的許可。使用具有更廣泛許可的角色可能會帶來安全風險。

------
#### [ JSON ]

****  

  ```
  {
      "Version":"2012-10-17",		 	 	 
      "Statement": [
          {
              "Effect": "Allow",
              "Action": [
                  "eks:DescribeCluster",
                  "eks:ListClusters"
              ],
              "Resource": "*"
          }
      ]
  }
  ```

------
**注意**  
第一次使用角色時，請在資源政策陳述式中使用下列萬用字元，然後在可用的資源名稱縮小政策範圍。  

  ```
  "Resource": "*"
  ```
+ 下列自訂信任政策：

請確定此角色已新增至：
+ 您的帳戶連線。若要進一步了解如何將 IAM 角色新增至帳戶連線，請參閱 [新增 IAM 角色至帳戶連線](ipa-connect-account-addroles.md)。
+ 您的 Kubernetes ConfigMap。若要進一步了解如何將 IAM 角色新增至 ConfigMap，請參閱 `eksctl` 文件中的[管理 IAM 使用者和角色](https://eksctl.io/usage/iam-identity-mappings/)。

**提示**  
另請參閱 [教學課程：將應用程式部署至 Amazon EKS](deploy-tut-eks.md) ，以取得將 am IAM 角色新增至帳戶連線和 ConfigMap 的指示。

**注意**  
如有需要，您可以使用 `CodeCatalystWorkflowDevelopmentRole-spaceName`角色搭配此動作。如需有關此角色的詳細資訊，請參閱 [為您的帳戶和空間建立 **CodeCatalystWorkflowDevelopmentRole-*spaceName***角色](ipa-iam-roles.md#ipa-iam-roles-service-create)。了解該`CodeCatalystWorkflowDevelopmentRole-spaceName`角色具有可能造成安全風險的完整存取許可。我們建議您只在安全性較少的教學課程和案例中使用此角色。

對應的 UI：取決於動作版本，下列其中一項：
+ （較新版本） 組態tab/Environment/What是 *my-environment*？/三個點功能表/**切換角色**
+ （舊版本） 組態索引標籤/'Environment/account/role'/**Role**

## Inputs
<a name="deploy.action.eks.inputs"></a>

(*DeployToKubernetesCluster*/**Inputs**)

（如果[Connections](#deploy.action.eks.environment.connections)包含 則為必要）

`Inputs` 區段定義工作流程執行期間 `DeployToKubernetesCluster`所需的資料。

**注意**  
每個**部署到 Amazon EKS **動作只允許一個輸入 （來源或成品）。

對應的 UI：**輸入**索引標籤

## Sources
<a name="deploy.action.eks.inputs.sources"></a>

(*DeployToKubernetesCluster*/Inputs/**Sources**)

（如果您的資訊清單檔案存放在來源儲存庫中，則為必要項目）

如果您的 Kubernetes 資訊清單檔案存放在來源儲存庫中，請指定該來源儲存庫的標籤。目前，唯一支援的標籤是 `WorkflowSource`。

如果您的資訊清單檔案不包含在來源儲存庫中，它們必須位於另一個動作所產生的成品中。

如需來源的詳細資訊，請參閱 [將來源儲存庫連線至工作流程](workflows-sources.md)。

對應的 UI：輸入索引標籤/**來源 - 選用**

## Artifacts - input
<a name="deploy.action.eks.inputs.artifacts"></a>

(*DeployToKubernetesCluster*/Inputs/**Artifacts**)

（如果您的資訊清單檔案存放在先前動作的[輸出成品](workflows-working-artifacts-output.md)中，則為必要）

如果 Kubernetes 資訊清單檔案或檔案包含在先前動作產生的成品中，請在此處指定該成品。如果您的資訊清單檔案不包含在成品中，則必須位於來源儲存庫中。

如需成品的詳細資訊，包括範例，請參閱 [在動作之間共用成品和檔案](workflows-working-artifacts.md)。

對應的 UI：組態索引標籤/**成品 - 選用**

## Configuration
<a name="deploy.action.eks.configuration"></a>

(*DeployToKubernetesCluster*/**Configuration**)

(必要)

您可以在此區段定義 動作的組態屬性。

對應的 UI：**組態**索引標籤

## Namespace
<a name="deploy.action.eks.namespace"></a>

(*DeployToKubernetesCluster*/Configuration/**Namespace**)

(選用)

指定要部署 Kubernetes 應用程式的 Kubernetes 命名空間。`default` 如果您未搭配叢集使用命名空間，請使用 。如需命名空間的詳細資訊，請參閱 [Kubernetes 文件中的使用 Kubernetes 命名空間細分叢集](https://kubernetes.io/docs/tasks/administer-cluster/namespaces/#subdividing-your-cluster-using-kubernetes-namespaces)。

如果您省略命名空間，`default`則會使用 的值。

對應的 UI：組態索引標籤/**命名空間**

## Region
<a name="deploy.action.eks.region"></a>

(*DeployToKubernetesCluster*/Configuration/**Region**)

(必要)

指定 Amazon EKS 叢集和服務所在的 AWS 區域。如需區域代碼清單，請參閱《》中的[區域端點](https://docs.aws.amazon.com/general/latest/gr/rande.html#region-names-codes)*AWS 一般參考*。

對應的 UI：組態索引標籤/**區域**

## Cluster
<a name="deploy.action.eks.cluster"></a>

(*DeployToKubernetesCluster*/Configuration/**Cluster**)

(必要)

指定現有 Amazon EKS 叢集的名稱。**部署至 Kubernetes 叢集**動作會將您的容器化應用程式部署至此叢集。如需 Amazon EKS 叢集的詳細資訊，請參閱《**Amazon EKS 使用者指南**》中的[叢集](https://docs.aws.amazon.com/eks/latest/userguide/clusters.html)。

對應的 UI：組態索引標籤/**叢集**

## Manifests
<a name="deploy.action.eks.manifest"></a>

(*DeployToKubernetesCluster*/Configuration/**Manifests**)

(必要)

在 Kubernetes 文件中指定 YAML 格式 Kubernetes 資訊清單檔案的路徑 （稱為*組態檔案*、*組態檔案*或簡稱*組態*)。

如果您使用的是多個資訊清單檔案，請將它們放在單一資料夾中，並參考該資料夾。資訊清單檔案是由 Kubernetes 以英數方式處理，因此請務必在檔案名稱前面加上數字或字母，以控制處理順序。例如：

`00-namespace.yaml`

`01-deployment.yaml`

如果您的資訊清單檔案位於來源儲存庫中，則路徑會與來源儲存庫根資料夾相對。如果檔案位於先前工作流程動作的成品中，則路徑會與成品根資料夾相對。

範例：

`Manifests/`

`deployment.yaml`

`my-deployment.yml`

請勿使用萬用字元 (`*`)。

**注意**  
不支援 [Helm Chart](https://helm.sh/docs/topics/charts/) 和 [kustomization 檔案](https://kubernetes.io/docs/tasks/manage-kubernetes-objects/kustomization/)。

如需資訊清單檔案的詳細資訊，請參閱 Kubernetes 文件中的[組織資源組態](https://kubernetes.io/docs/concepts/cluster-administration/manage-deployment/#organizing-resource-configurations)。

對應的 UI：組態索引標籤/**資訊清單**