InfoGrab Docs

Amazon EKS 클러스터 생성

요약

IaC(Infrastructure as Code)를 통해 Amazon Elastic Kubernetes Service(EKS)에 클러스터를 생성할 수 있습니다. GitLab에서 IaC를 사용하여 클러스터를 만들려면 클러스터를 관리할 프로젝트를 만들어야 합니다.

IaC(Infrastructure as Code)를 통해 Amazon Elastic Kubernetes Service(EKS)에 클러스터를 생성할 수 있습니다. 이 프로세스는 AWS와 Kubernetes Terraform 공급자를 사용하여 EKS 클러스터를 생성합니다. GitLab Kubernetes 에이전트를 사용하여 클러스터를 GitLab에 연결합니다.

시작하기 전에:

  • 보안 자격 증명이 구성된 Amazon Web Services(AWS) 계정.
  • GitLab CI/CD 파이프라인을 실행하는 데 사용할 수 있는 러너.

단계:

  1. 예제 프로젝트 임포트.
  2. Kubernetes 에이전트 등록.
  3. 프로젝트 구성.
  4. 클러스터 프로비저닝.

예제 프로젝트 임포트#

GitLab에서 IaC를 사용하여 클러스터를 만들려면 클러스터를 관리할 프로젝트를 만들어야 합니다. 이 튜토리얼에서는 샘플 프로젝트로 시작하여 필요에 맞게 수정합니다.

먼저 URL로 예제 프로젝트를 임포트합니다.

프로젝트를 임포트하려면:

  1. GitLab의 상단 표시줄에서 검색 또는 이동을 선택합니다.
  2. 내 모든 프로젝트 보기를 선택합니다.
  3. 페이지 오른쪽에서 새 프로젝트를 선택합니다.
  4. 프로젝트 임포트를 선택합니다.
  5. URL로 리포지터리를 선택합니다.
  6. Git 리포지터리 URLhttps://gitlab.com/gitlab-org/configure/examples/gitlab-terraform-eks.git을 입력합니다.
  7. 필드를 완성하고 프로젝트 만들기를 선택합니다.

이 프로젝트는 다음을 제공합니다:

에이전트 등록#

히스토리
  • GitLab 14.9에서 변경됨. certificate_based_clusters라는 이름의 플래그작업 메뉴를 인증서보다 에이전트에 초점을 맞추도록 변경함. 기본값으로 비활성화됨.

Kubernetes용 GitLab 에이전트를 만들려면:

  1. 왼쪽 사이드바에서 운영 > Kubernetes 클러스터를 선택합니다.
  2. **클러스터 연결(에이전트)**을 선택합니다.
  3. 에이전트 선택 드롭다운 목록에서 eks-agent를 선택하고 에이전트 등록을 선택합니다.
  4. GitLab이 에이전트의 등록 토큰을 생성합니다. 나중에 필요하므로 이 비밀 토큰을 안전하게 저장합니다.
  5. GitLab이 에이전트 서버(KAS) 주소를 제공합니다. 이것도 나중에 필요합니다.

AWS 자격 증명 설정#

GitLab으로 AWS를 인증할 때 AWS 자격 증명을 설정합니다.

  1. IAM 사용자 또는 IAM 역할을 만듭니다.

  2. IAM 사용자 또는 역할이 프로젝트에 적합한 권한을 가지고 있는지 확인합니다. 이 예제 프로젝트의 경우 다음 JSON 블록에 나열된 권한이 있어야 합니다. 자체 프로젝트를 설정할 때 이 권한을 확장할 수 있습니다.

    // IAM custom Policy definition
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "VisualEditor0",
          "Effect": "Allow",
          "Action": [
            "ec2:*",
            "eks:*",
            "elasticloadbalancing:*",
            "autoscaling:*",
            "cloudwatch:*",
            "logs:*",
            "kms:DescribeKey",
            "kms:TagResource",
            "kms:UntagResource",
            "kms:ListResourceTags",
            "kms:CreateKey",
            "kms:CreateAlias",
            "kms:ListAliases",
            "kms:DeleteAlias",
            "iam:AddRoleToInstanceProfile",
            "iam:AttachRolePolicy",
            "iam:CreateInstanceProfile",
            "iam:CreateRole",
            "iam:CreateServiceLinkedRole",
            "iam:GetRole",
            "iam:ListAttachedRolePolicies",
            "iam:ListRolePolicies",
            "iam:ListRoles",
            "iam:PassRole",
            "iam:DetachRolePolicy",
            "iam:ListInstanceProfilesForRole",
            "iam:DeleteRole",
            "iam:CreateOpenIDConnectProvider",
            "iam:CreatePolicy",
            "iam:TagOpenIDConnectProvider",
            "iam:GetPolicy",
            "iam:GetPolicyVersion",
            "iam:GetOpenIDConnectProvider",
            "iam:DeleteOpenIDConnectProvider",
            "iam:ListPolicyVersions",
            "iam:DeletePolicy"
          ],
          "Resource": "*"
        }
      ]
    }
    
  3. 사용자 또는 역할에 대한 액세스 키를 만듭니다.

  4. 액세스 키와 시크릿을 저장합니다. AWS를 GitLab으로 인증하는 데 필요합니다.

프로젝트 구성#

CI/CD 환경 변수를 사용하여 프로젝트를 구성합니다.

필수 구성:

  1. 왼쪽 사이드바에서 설정 > CI/CD를 선택합니다.
  2. 변수를 펼칩니다.
  3. AWS_ACCESS_KEY_ID 변수를 AWS 액세스 키 ID로 설정합니다.
  4. AWS_SECRET_ACCESS_KEY 변수를 AWS 시크릿 액세스 키로 설정합니다.
  5. TF_VAR_agent_token 변수를 이전 작업에서 표시된 에이전트 토큰으로 설정합니다.
  6. TF_VAR_kas_address 변수를 이전 작업에서 표시된 에이전트 서버 주소로 설정합니다.

선택적 구성:

variables.tf 파일에는 필요에 따라 재정의할 수 있는 다른 변수가 포함되어 있습니다:

  • TF_VAR_region: 클러스터의 리전을 설정합니다.
  • TF_VAR_cluster_name: 클러스터의 이름을 설정합니다.
  • TF_VAR_cluster_version: Kubernetes 버전을 설정합니다.
  • TF_VAR_instance_type: Kubernetes 노드의 인스턴스 유형을 설정합니다.
  • TF_VAR_instance_count: Kubernetes 노드 수를 설정합니다.
  • TF_VAR_agent_namespace: GitLab Kubernetes 에이전트의 Kubernetes 네임스페이스를 설정합니다.

추가 리소스 옵션은 AWS Terraform 공급자Kubernetes Terraform 공급자 문서를 참조하세요.

클러스터 프로비저닝#

프로젝트를 구성한 후 클러스터 프로비저닝을 수동으로 트리거합니다. GitLab에서:

  1. 왼쪽 사이드바에서 빌드 > 파이프라인으로 이동합니다.
  2. Play([play]) 옆에서 드롭다운 목록 아이콘([chevron-lg-down])을 선택합니다.
  3. Deploy를 선택하여 배포 잡을 수동으로 트리거합니다.

파이프라인이 성공적으로 완료되면 새 클러스터를 볼 수 있습니다:

  • AWS에서: EKS 콘솔에서 Amazon EKS > 클러스터를 선택합니다.
  • GitLab에서: 왼쪽 사이드바에서 운영 > Kubernetes 클러스터를 선택합니다.

클러스터 사용#

클러스터를 프로비저닝하면 GitLab에 연결되어 배포할 준비가 됩니다. 연결을 확인하려면:

  1. 왼쪽 사이드바에서 운영 > Kubernetes 클러스터를 선택합니다.
  2. 목록에서 연결 상태 열을 확인합니다.

연결 기능에 대한 자세한 내용은 GitLab Kubernetes 에이전트 문서를 참조하세요.

클러스터 제거#

기본적으로 파이프라인에 정리 잡이 포함되어 있지 않습니다. 만들어진 모든 리소스를 제거하려면 정리 잡을 실행하기 전에 GitLab CI/CD 템플릿을 수정해야 합니다.

모든 리소스를 제거하려면:

  1. .gitlab-ci.yml 파일에 다음을 추가합니다:

    stages:
      - init
      - validate
      - test
      - build
      - deploy
      - cleanup
    
    destroy:
      extends: .terraform:destroy
      needs: []
    
  2. 왼쪽 사이드바에서 빌드 > 파이프라인을 선택하고 가장 최근 파이프라인을 선택합니다.

  3. destroy 잡에서 Play([play])를 선택합니다.

Amazon EKS 클러스터 생성

원문 보기
요약

IaC(Infrastructure as Code)를 통해 Amazon Elastic Kubernetes Service(EKS)에 클러스터를 생성할 수 있습니다. GitLab에서 IaC를 사용하여 클러스터를 만들려면 클러스터를 관리할 프로젝트를 만들어야 합니다.

IaC(Infrastructure as Code)를 통해 Amazon Elastic Kubernetes Service(EKS)에 클러스터를 생성할 수 있습니다. 이 프로세스는 AWS와 Kubernetes Terraform 공급자를 사용하여 EKS 클러스터를 생성합니다. GitLab Kubernetes 에이전트를 사용하여 클러스터를 GitLab에 연결합니다.

시작하기 전에:

  • 보안 자격 증명이 구성된 Amazon Web Services(AWS) 계정.
  • GitLab CI/CD 파이프라인을 실행하는 데 사용할 수 있는 러너.

단계:

  1. 예제 프로젝트 임포트.
  2. Kubernetes 에이전트 등록.
  3. 프로젝트 구성.
  4. 클러스터 프로비저닝.

예제 프로젝트 임포트#

GitLab에서 IaC를 사용하여 클러스터를 만들려면 클러스터를 관리할 프로젝트를 만들어야 합니다. 이 튜토리얼에서는 샘플 프로젝트로 시작하여 필요에 맞게 수정합니다.

먼저 URL로 예제 프로젝트를 임포트합니다.

프로젝트를 임포트하려면:

  1. GitLab의 상단 표시줄에서 검색 또는 이동을 선택합니다.
  2. 내 모든 프로젝트 보기를 선택합니다.
  3. 페이지 오른쪽에서 새 프로젝트를 선택합니다.
  4. 프로젝트 임포트를 선택합니다.
  5. URL로 리포지터리를 선택합니다.
  6. Git 리포지터리 URLhttps://gitlab.com/gitlab-org/configure/examples/gitlab-terraform-eks.git을 입력합니다.
  7. 필드를 완성하고 프로젝트 만들기를 선택합니다.

이 프로젝트는 다음을 제공합니다:

에이전트 등록#

히스토리
  • GitLab 14.9에서 변경됨. certificate_based_clusters라는 이름의 플래그작업 메뉴를 인증서보다 에이전트에 초점을 맞추도록 변경함. 기본값으로 비활성화됨.

Kubernetes용 GitLab 에이전트를 만들려면:

  1. 왼쪽 사이드바에서 운영 > Kubernetes 클러스터를 선택합니다.
  2. **클러스터 연결(에이전트)**을 선택합니다.
  3. 에이전트 선택 드롭다운 목록에서 eks-agent를 선택하고 에이전트 등록을 선택합니다.
  4. GitLab이 에이전트의 등록 토큰을 생성합니다. 나중에 필요하므로 이 비밀 토큰을 안전하게 저장합니다.
  5. GitLab이 에이전트 서버(KAS) 주소를 제공합니다. 이것도 나중에 필요합니다.

AWS 자격 증명 설정#

GitLab으로 AWS를 인증할 때 AWS 자격 증명을 설정합니다.

  1. IAM 사용자 또는 IAM 역할을 만듭니다.

  2. IAM 사용자 또는 역할이 프로젝트에 적합한 권한을 가지고 있는지 확인합니다. 이 예제 프로젝트의 경우 다음 JSON 블록에 나열된 권한이 있어야 합니다. 자체 프로젝트를 설정할 때 이 권한을 확장할 수 있습니다.

    // IAM custom Policy definition
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "VisualEditor0",
          "Effect": "Allow",
          "Action": [
            "ec2:*",
            "eks:*",
            "elasticloadbalancing:*",
            "autoscaling:*",
            "cloudwatch:*",
            "logs:*",
            "kms:DescribeKey",
            "kms:TagResource",
            "kms:UntagResource",
            "kms:ListResourceTags",
            "kms:CreateKey",
            "kms:CreateAlias",
            "kms:ListAliases",
            "kms:DeleteAlias",
            "iam:AddRoleToInstanceProfile",
            "iam:AttachRolePolicy",
            "iam:CreateInstanceProfile",
            "iam:CreateRole",
            "iam:CreateServiceLinkedRole",
            "iam:GetRole",
            "iam:ListAttachedRolePolicies",
            "iam:ListRolePolicies",
            "iam:ListRoles",
            "iam:PassRole",
            "iam:DetachRolePolicy",
            "iam:ListInstanceProfilesForRole",
            "iam:DeleteRole",
            "iam:CreateOpenIDConnectProvider",
            "iam:CreatePolicy",
            "iam:TagOpenIDConnectProvider",
            "iam:GetPolicy",
            "iam:GetPolicyVersion",
            "iam:GetOpenIDConnectProvider",
            "iam:DeleteOpenIDConnectProvider",
            "iam:ListPolicyVersions",
            "iam:DeletePolicy"
          ],
          "Resource": "*"
        }
      ]
    }
    
  3. 사용자 또는 역할에 대한 액세스 키를 만듭니다.

  4. 액세스 키와 시크릿을 저장합니다. AWS를 GitLab으로 인증하는 데 필요합니다.

프로젝트 구성#

CI/CD 환경 변수를 사용하여 프로젝트를 구성합니다.

필수 구성:

  1. 왼쪽 사이드바에서 설정 > CI/CD를 선택합니다.
  2. 변수를 펼칩니다.
  3. AWS_ACCESS_KEY_ID 변수를 AWS 액세스 키 ID로 설정합니다.
  4. AWS_SECRET_ACCESS_KEY 변수를 AWS 시크릿 액세스 키로 설정합니다.
  5. TF_VAR_agent_token 변수를 이전 작업에서 표시된 에이전트 토큰으로 설정합니다.
  6. TF_VAR_kas_address 변수를 이전 작업에서 표시된 에이전트 서버 주소로 설정합니다.

선택적 구성:

variables.tf 파일에는 필요에 따라 재정의할 수 있는 다른 변수가 포함되어 있습니다:

  • TF_VAR_region: 클러스터의 리전을 설정합니다.
  • TF_VAR_cluster_name: 클러스터의 이름을 설정합니다.
  • TF_VAR_cluster_version: Kubernetes 버전을 설정합니다.
  • TF_VAR_instance_type: Kubernetes 노드의 인스턴스 유형을 설정합니다.
  • TF_VAR_instance_count: Kubernetes 노드 수를 설정합니다.
  • TF_VAR_agent_namespace: GitLab Kubernetes 에이전트의 Kubernetes 네임스페이스를 설정합니다.

추가 리소스 옵션은 AWS Terraform 공급자Kubernetes Terraform 공급자 문서를 참조하세요.

클러스터 프로비저닝#

프로젝트를 구성한 후 클러스터 프로비저닝을 수동으로 트리거합니다. GitLab에서:

  1. 왼쪽 사이드바에서 빌드 > 파이프라인으로 이동합니다.
  2. Play([play]) 옆에서 드롭다운 목록 아이콘([chevron-lg-down])을 선택합니다.
  3. Deploy를 선택하여 배포 잡을 수동으로 트리거합니다.

파이프라인이 성공적으로 완료되면 새 클러스터를 볼 수 있습니다:

  • AWS에서: EKS 콘솔에서 Amazon EKS > 클러스터를 선택합니다.
  • GitLab에서: 왼쪽 사이드바에서 운영 > Kubernetes 클러스터를 선택합니다.

클러스터 사용#

클러스터를 프로비저닝하면 GitLab에 연결되어 배포할 준비가 됩니다. 연결을 확인하려면:

  1. 왼쪽 사이드바에서 운영 > Kubernetes 클러스터를 선택합니다.
  2. 목록에서 연결 상태 열을 확인합니다.

연결 기능에 대한 자세한 내용은 GitLab Kubernetes 에이전트 문서를 참조하세요.

클러스터 제거#

기본적으로 파이프라인에 정리 잡이 포함되어 있지 않습니다. 만들어진 모든 리소스를 제거하려면 정리 잡을 실행하기 전에 GitLab CI/CD 템플릿을 수정해야 합니다.

모든 리소스를 제거하려면:

  1. .gitlab-ci.yml 파일에 다음을 추가합니다:

    stages:
      - init
      - validate
      - test
      - build
      - deploy
      - cleanup
    
    destroy:
      extends: .terraform:destroy
      needs: []
    
  2. 왼쪽 사이드바에서 빌드 > 파이프라인을 선택하고 가장 최근 파이프라인을 선택합니다.

  3. destroy 잡에서 Play([play])를 선택합니다.