튜토리얼: Google Kubernetes Engine 사용을 위한 GitLab Runner 구성
이 튜토리얼에서는 GitLab Runner를 Google Kubernetes Engine (GKE)에 사용하도록 구성하는 방법에 대해 설명합니다.
이 튜토리얼에서는 Standard cluster mode에서 GitLab Runner를 실행하도록 구성합니다.
GitLab Runner를 GKE에 사용하도록 구성하려면:
- 환경 설정을 합니다.
- 클러스터 생성 및 연결을 합니다.
- Kubernetes Operator 설치 및 구성을 합니다.
- 선택 사항. 구성이 성공적으로 이루어졌는지 확인합니다.
시작하기 전에
GitLab Runner를 GKE에 구성하기 전에 다음을 해야 합니다:
- Maintainer 또는 Owner 역할이 있는 프로젝트가 있어야 합니다. 프로젝트가 없는 경우 만들 수 있습니다.
- 프로젝트 러너 등록 토큰을 얻어야 합니다.
- GitLab Runner를 설치해야 합니다.
환경 설정
GKE에서 GitLab Runner를 구성하고 사용하기 위한 도구를 설치합니다.
- Google Cloud CLI 설치 및 구성합니다. Google Cloud CLI를 사용하여 클러스터에 연결합니다.
- kubectl 설치 및 구성합니다. kubectl을 사용하여 로컬 환경에서 원격 클러스터와 통신합니다.
클러스터 생성 및 연결
이 단계에서는 클러스터를 생성하고 연결하는 방법에 대해 설명합니다. 클러스터에 연결한 후 kubectl을 사용하여 상호 작용합니다.
-
Google Cloud Platform에서 표준 클러스터를 만듭니다.
-
kubectl 인증 플러그인을 설치합니다:
gcloud components install gke-gcloud-auth-plugin
-
클러스터에 연결합니다:
gcloud container clusters get-credentials CLUSTER_NAME --zone=CLUSTER_LOCATION
-
클러스터 구성을 확인합니다:
kubectl config view
-
클러스터에 연결되었는지 확인합니다:
kubectl config current-context
Kubernetes Operator 설치 및 구성
이제 클러스터가 준비되었으므로 Kubernetes Operator를 설치하고 구성할 준비가 되었습니다.
-
cert-manager
를 설치합니다. 이미 인증서 관리자를 설치한 경우 이 단계를 건너뜁니다:kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.7.1/cert-manager.yaml
-
Kubernetes Operator Lifecycle Manager (OLM)를 설치합니다. 클러스터에서 실행되는 Kubernetes Operator를 관리하는 도구입니다:
curl --silent --location "https://github.com/operator-framework/operator-lifecycle-manager/releases/download/v0.24.0/install.sh" \ | bash -s v0.24.0
-
Kubernetes Operator를 설치합니다:
kubectl create -f https://operatorhub.io/install/gitlab-runner-operator.yaml
-
Operator Lifecycle Manager v0.25.0 이상의 버전의 경우. 고유한 인증서 관리자를 추가합니다 또는
cert-manager
를 사용합니다.-
고유한 인증서 제공자를 추가하는 경우:
-
gitlab-runner-operator.yaml
에서env
설정에 인증서 네임스페이스와 인증서 이름을 정의합니다:cat > gitlab-runner-operator.yaml << EOF apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: gitlab-runner-operator namespace: gitlab-ns spec: channel: stable name: gitlab-runner-operator source: operatorhubio-catalog ca: webhook-server-cert sourceNamespace: olm config: env: - name: CERTIFICATE_NAMESPACE value: cert_namespace_desired_value - name: CERTIFICATE_NAME value: cert_name_desired_value EOF
-
gitlab-runner-operator.yaml
을 Kubernetes 클러스터에 적용합니다:kubectl apply -f gitlab-runner-operator.yaml
-
-
cert-manager
를 사용하는 경우:-
certificate-issuer-install.yaml
을 사용하여 기본 네임스페이스에Certificate
및Issuer
를 설치합니다. 또한 오퍼레이터 설치와 함께:cat > certificate-issuer-install.yaml << EOF apiVersion: v1 kind: Namespace metadata: labels: app.kubernetes.io/component: controller-manager app.kubernetes.io/managed-by: olm app.kubernetes.io/name: gitlab-runner-operator name: gitlab-runner-system --- apiVersion: cert-manager.io/v1 kind: Certificate metadata: name: gitlab-runner-serving-cert namespace: gitlab-runner-system spec: dnsNames: - gitlab-runner-webhook-service.gitlab-runner-system.svc - gitlab-runner-webhook-service.gitlab-runner-system.svc.cluster.local issuerRef: kind: Issuer name: gitlab-runner-selfsigned-issuer secretName: webhook-server-cert --- apiVersion: cert-manager.io/v1 kind: Issuer metadata: name: gitlab-runner-selfsigned-issuer namespace: gitlab-runner-system spec: selfSigned: {} EOF
-
certificate-issuer-install.yaml
을 Kubernetes 클러스터에 적용합니다:kubectl create -f certificate-issuer-install.yaml
-
-
-
GitLab 프로젝트에서
runner-registration-token
을 포함하는 시크릿을 생성합니다:cat > gitlab-runner-secret.yml << EOF apiVersion: v1 kind: Secret metadata: name: gitlab-runner-secret type: Opaque stringData: runner-token: YOUR_RUNNER_AUTHENTICATION_TOKEN EOF
-
시크릿을 적용합니다:
kubectl apply -f gitlab-runner-secret.yml
-
커스텀 리소스 정의 파일을 생성하고 다음 정보를 포함합니다:
cat > gitlab-runner.yml << EOF apiVersion: apps.gitlab.com/v1beta2 kind: Runner metadata: name: gitlab-runner spec: gitlabUrl: https://gitlab.example.com buildImage: alpine token: gitlab-runner-secret EOF
-
커스텀 리소스 정의 파일을 적용합니다:
kubectl apply -f gitlab-runner.yml
그게 다입니다! GitLab Runner를 GKE에 사용하도록 구성했습니다. 다음 단계에서 구성이 작동하는지 확인할 수 있습니다.
구성 확인
GKE 클러스터에서 실행 중인 러너를 확인하려면 다음 중 하나를 사용할 수 있습니다:
-
다음 명령을 사용합니다:
kubectl get pods
다음 출력이 표시되어야 합니다. 이는 러너가 GKE 클러스터에서 실행 중임을 보여줍니다:
NAME READY STATUS RESTARTS AGE gitlab-runner-hash-short_hash 1/1 Running 0 5m
-
GitLab에서 작업 로그를 확인합니다:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 빌드 > 작업을 선택하고 작업을 찾습니다.
- 작업 로그를 보려면 작업 상태를 선택합니다.