Google GKE 클러스터 생성하기
Google Kubernetes Engine(GKE)에서 새로운 클러스터를 생성하는 방법을 배워보세요. 코드로서의 인프라(Infrastructure as Code, IaC)을 통해 이 과정을 진행합니다. 이 과정에서는 Google과 Kubernetes Terraform 프로바이더를 사용하여 GKE 클러스터를 생성합니다. GitLab 에이전트를 통해 클러스터를 GitLab에 연결합니다.
이 링크를 따르세요에서 크레딧을 신청하세요.
전제 조건:
- Google Cloud Platform(GCP) 서비스 계정.
- 러너를 사용하여 GitLab CI/CD 파이프라인을 실행할 수 있어야 합니다.
단계:
예제 프로젝트 가져오기
IaC를 사용하여 GitLab에서 클러스터를 생성하려면 클러스터를 관리할 프로젝트를 생성해야 합니다. 이 튜토리얼에서는 샘플 프로젝트로 시작하여 필요에 따라 수정합니다.
URL로 예제 프로젝트 가져오기로 시작하세요.
프로젝트를 가져오려면:
- GitLab의 왼쪽 사이드바에서 검색 또는 이동을 선택합니다.
- 모든 내 프로젝트 보기를 선택합니다.
- 페이지 오른쪽에서 새 프로젝트를 선택합니다.
- 프로젝트 가져오기를 선택합니다.
- URL로 저장소를 선택합니다.
-
Git 저장소 URL에
https://gitlab.com/gitlab-org/configure/examples/gitlab-terraform-gke.git
를 입력합니다. - 필드를 모두 작성하고 프로젝트 생성을 선택합니다.
이 프로젝트는 여러분에게 다음을 제공합니다:
- 이름, 위치, 노드 수 및 Kubernetes 버전에 대한 기본이 포함된 Google Cloud Platform(GCP) 클러스터.
- 클러스터에 설치된 Kubernetes용 GitLab 에이전트.
에이전트 등록하기
certificate_based_clusters
라는 플래그는 작업 메뉴를 에이전트에 집중하게 변경했습니다. 플래그는 GitLab.com, GitLab Dedicated 및 셀프 관리에서 활성화되어 있습니다.Kubernetes용 GitLab 에이전트를 생성하려면:
- 왼쪽 사이드바에서 운영 > Kubernetes 클러스터를 선택합니다.
- 클러스터 연결(에이전트)를 선택합니다.
- 에이전트를 선택하거나 새로 만들 이름 입력 드롭다운 목록에서 에이전트의 이름을 선택하고 등록을 선택합니다.
- GitLab이 에이전트에 대한 등록 토큰을 생성합니다. 이 비밀 토큰을 안전하게 보관하세요. 나중에 필요합니다.
- 선택 사항. Helm을 사용하는 경우, GitLab은 Helm 명령 예제에 에이전트 서버(KAS)의 주소를 제공합니다. 나중에 필요합니다.
GCP 자격 증명 만들기
GCP와 GitLab API가 통신하도록 프로젝트를 설정하려면:
-
GitLab에서 GCP를 인증하려면 다음 역할이 포함된 GCP 서비스 계정을 만듭니다:
Compute Network Viewer
,Kubernetes Engine Admin
,Service Account User
, 및Service Account Admin
. 사용자 및 관리 서비스 계정 모두 필요합니다. 사용자 역할은 노드 풀을 생성할 때 기본 서비스 계정을 가장합니다. 관리 역할은kube-system
네임스페이스에 서비스 계정을 생성합니다. -
이전 단계에서 생성한 서비스 계정 키가 포함된 JSON 파일을 다운로드합니다.
-
컴퓨터에서 JSON 파일을
base64
로 인코딩합니다(/path/to/sa-key.json
을 키의 경로로 바꾸세요):MacOSbase64 -i /path/to/sa-key.json | tr -d \\n
Linuxbase64 /path/to/sa-key.json | tr -d \\n
-
이 명령의 출력을 다음 단계에서
BASE64_GOOGLE_CREDENTIALS
환경 변수로 사용합니다.
프로젝트 구성
CI/CD 환경 변수를 사용하여 프로젝트를 구성합니다.
필수 구성:
-
왼쪽 사이드바에서 Settings > CI/CD를 선택합니다.
-
Variables를 확장합니다.
-
방금 생성한
base64
인코딩된 JSON 파일을BASE64_GOOGLE_CREDENTIALS
변수에 설정합니다. -
TF_VAR_gcp_project
변수를 GCPproject
ID로 설정합니다. -
TF_VAR_agent_token
변수를 이전 작업에 표시된 에이전트 토큰으로 설정합니다. -
TF_VAR_kas_address
변수를 이전 작업에 표시된 에이전트 서버 주소로 설정합니다.
선택적 구성:
파일 variables.tf
에는 필요에 따라 덮어 쓸 수 있는 다른 변수가 포함되어 있습니다:
-
TF_VAR_gcp_region
: 클러스터의 지역을 설정합니다. -
TF_VAR_cluster_name
: 클러스터의 이름을 설정합니다. -
TF_VAR_cluster_description
: 클러스터에 대한 설명을 설정합니다. 이를$CI_PROJECT_URL
로 설정하여 GCP 클러스터 세부 정보 페이지에서 GitLab 프로젝트를 참조하는 것이 좋습니다. 이 방법으로 GCP 대시보드에서 표시되는 클러스터를 프로비저닝한 프로젝트를 알고 있습니다. -
TF_VAR_machine_type
: Kubernetes 노드에 대한 머신 유형을 설정합니다. -
TF_VAR_node_count
: Kubernetes 노드 수를 설정합니다. -
TF_VAR_agent_namespace
: GitLab 에이전트의 Kubernetes 네임스페이스를 설정합니다.
추가 리소스 옵션에 대한 자세한 내용은 Google Terraform provider 및 Kubernetes Terraform provider 문서를 참조하세요.
Kubernetes Engine API 활성화
Google Cloud 콘솔에서 Kubernetes Engine API를 활성화합니다.
클러스터 프로비저닝
프로젝트를 구성한 후 클러스터 프로비저닝을 수동으로 트리거하세요. GitLab에서:
- 왼쪽 사이드바에서 Build > Pipelines를 선택합니다.
- New pipeline을 선택합니다.
- Play () 옆에 있는 드롭다운 목록 아이콘 ()을 선택합니다.
- 수동으로 배포 작업을 트리거하려면 Deploy를 선택합니다.
파이프라인이 성공적으로 완료되면 새 클러스터를 확인할 수 있습니다:
- GCP: GCP 콘솔의 Kubernetes 목록에서.
- GitLab: 프로젝트 사이드바에서 Operate > Kubernetes clusters를 선택합니다.
클러스터 사용
클러스터를 프로비저닝한 후 GitLab에 연결되며 배포할 준비가 됩니다. 연결 상태를 확인하려면:
- 왼쪽 사이드바에서 Operate > Kubernetes clusters를 선택합니다.
- 목록에서 Connection status 열을 확인합니다.
연결의 기능에 대한 자세한 정보는 GitLab의 Kubernetes 문서를 참조하세요.
클러스터 제거
기본적으로 클린업 작업이 파이프라인에 포함되어 있지 않습니다. 생성된 모든 리소스를 제거하려면 클린업 작업을 실행하기 전에 GitLab CI/CD 템플릿을 수정해야 합니다.
모든 리소스를 제거하려면:
-
.gitlab-ci.yml
파일에 다음을 추가합니다:stages: - init - validate - build - test - deploy - cleanup destroy: extends: .terraform:destroy needs: []
- 왼쪽 사이드바에서 Build > Pipelines를 선택하고 가장 최근의 파이프라인을 선택합니다.
-
destroy
작업에 대해 Play ()를 선택합니다.