튜토리얼: Google Kubernetes Engine을 사용하도록 GitLab Runner 구성
이 튜토리얼은 GitLab Runner가 작업을 실행하기 위해 Google Kubernetes Engine (GKE)을 사용하도록 구성하는 방법을 설명합니다. 이 튜토리얼에서는 GitLab Runner가 표준 클러스터 모드에서 작업을 실행하도록 구성합니다.
이 튜토리얼은 GitLab Runner가 작업을 실행하기 위해 Google Kubernetes Engine (GKE)을 사용하도록 구성하는 방법을 설명합니다.
이 튜토리얼에서는 GitLab Runner가 표준 클러스터 모드에서 작업을 실행하도록 구성합니다.
GKE를 사용하도록 GitLab Runner를 구성하려면:
시작하기 전에#
GKE를 사용하도록 GitLab Runner를 구성하려면 다음이 필요합니다:
- 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를 관리하는 도구인 Operator Lifecycle Manager (OLM)를 설치합니다:
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 -
Kubernetes 클러스터에
gitlab-runner-operator.yaml을 적용합니다: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 -
Kubernetes 클러스터에
certificate-issuer-install.yaml을 적용합니다: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에서 작업 로그를 확인합니다:
- 상단 바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- Build > Jobs를 선택하고 작업을 찾습니다.
- 작업 로그를 보려면 작업 상태를 선택합니다.
