잡스-> 단계->; 파이프
배관은 실제로 구성 작업에 해당하며 종속성 설치, 테스트 실행, 컴파일, 테스트 서버 배포, 프로덕션 서버 배포 등 많은 프로세스를 포함할 수 있습니다. Mergerrequest 의 제출 또는 병합은 다음 그림과 같이 파이프 빌드를 트리거합니다.
Stages 는 위에서 언급한 빌드 단계를 나타냅니다. 파이프에서 다음과 같은 특징을 가진 여러 단계를 정의할 수 있습니다.
공정과 파이프 간의 관계는 다음과 같습니다.
Jobs 는 건축 작업을 대표합니다. 즉, 한 단계에서 완료된 작업을 의미합니다. 단계별로 여러 작업을 정의할 수 있습니다. 이러한 작업에는 다음과 같은 특성이 있습니다.
작업과 단계 간의 관계는 다음과 같습니다.
만약 우리가 위의 기본 개념을 이해한다면, 우리는 문제를 발견할 수 있을 것이다. 우리의 건설 임무는 어디에 있는가? 과거에는 Jenkins 가 마스터 노드와 슬레이브 노드에서 빌드 작업을 실행하는 데 사용되었으며, Gitlab Runner 가 Gitlab CI 빌드 작업을 수행했습니다.
우리는 대부분의 경우 구축 작업이 많은 시스템 자원을 차지한다는 것을 알고 있습니다. Gitlab 가 직접 구축 작업을 수행한다면 Gitlab 의 성능은 크게 떨어질 것입니다. GitLab CI 의 가장 큰 역할은 각 프로젝트의 시공 상태를 관리하는 것이다. 그래서 구조 임무 등 자원 낭비를 독립 Gitlab 주자에게 맡기는 것이 훨씬 좋을 것 같다. 더 중요한 것은, Gitlab Runner 는 Gitlab 자체에 전혀 영향을 주지 않고 서로 다른 시스템에 설치할 수 있다는 것입니다.
Gitlab Runner 를 쉽게 설치할 수 있습니다. 공식 문서 /runner/install/ 을 설치할 수 있습니다. 예를 들어, 우리는 binary, Docker 등을 직접 사용할 수 있습니다. 마찬가지로, 우리는 또한 Kubernetes 클러스터에 Gitlab Runner 를 설치하여 우리 클러스터가 Gitlab 관련 서비스를 통합적으로 관리할 수 있도록 합니다.
1. Kubernetes 클러스터 확인
다음 명령을 실행하여 Kubernetes 클러스터를 확인합니다.
Cluster-info 명령은 현재 링크의 클러스터 상태와 사용 가능한 클러스터 서비스 목록을 표시합니다.
2. Gitlab CI 등록 토큰 얻기
Gitlab 은 이전 섹션에서 성공적으로 설치되었습니다. 브라우저에서 hwzxgit.sinoing.net 페이지를 열고 관리 페이지 /admin 에 로그인한 다음 탐색 모음에서 Runner 를 클릭합니다. 이 페이지에는 URL 과 Register Token 이라는 두 가지 공통 매개 변수가 있습니다. 다음 단계에서는 두 매개변수 값이 모두 필요합니다.
그림 1,
마찬가지로 Runner 와 관련된 모든 자원 객체는 이름 공간 kube-ops 아래에 설치됩니다. 첫째, 환경 변수 (Runner-cm). Yaml) ConfigMap 자원을 통해 전달:
CI_SERVER_URL 에 해당하는 값은 Gitlab 인스턴스 (외부 네트워크 주소 또는 Kubernetes 클러스터 내 서비스 DNS 주소일 수 있음, Runner 도 Kubernetes 클러스터에서 실행되기 때문) 를 가리키는 URL 과/; 또한 컨테이너 구축 작업에 대한 몇 가지 자원 제한이 추가되어 필요에 따라 변경할 수 있습니다.
위에서 설명한 일부 환경 변수와 관련된 구성 외에도 Gitlab CI Runner 를 등록, 실행 및 로그오프할 수 있는 작은 발이 필요합니다. 바퀴 등록 해제는 Pod 가 Kubernetes(TERM 신호) 에 의해 정상적으로 종료된 경우에만 트리거됩니다. Pod(SIGKILL 신호) 가 강제로 종료되면 주자는 스스로 로그아웃하지 않습니다. 너는 이 살해된 주자를 수동으로 청소해야 한다. 구성 목록 파일은 (runner-scripts-cm.yaml) 입니다
GITLAB_CI_TOKEN 이 필요한 것을 보고 다음 그림에서 Gitlab CI runner token 을 복사하여 Kubernetes secret 오브젝트를 만들 수 있습니다. Base64 인코딩 태그:
그런 다음 Statefulset 을 사용하여 실제 실행 중인 Runner 에 대한 제어기 오브젝트를 작성할 수 있습니다. 첫째, 실행 초기에 같은 이름을 가진 모든 Runner 를 로그아웃하려고 합니다. 이는 노드가 누락된 경우 (예: NodeLost 이벤트) 특히 유용합니다. 그리고 스스로 다시 등록하고 달리기를 시작해 보세요. Pod 가 정상적으로 중지되면 Runner 는 unregister 명령을 실행하여 자신을 취소하려고 하므로 Gitlab 은 더 이상 이 Runner 를 사용할 수 없습니다. 이는 Kubernetes Pod 의 수명 주기 동안 갈고리를 통해 수행됩니다.
또한 envFrom 을 사용하여 Secrets 및 ConfigMaps 를 환경 변수로 지정하면 해당 자원 목록 파일은 (runner-statefulset.yaml) 입니다.
Gitlab-ci 라는 serviceAccount 를 사용하여 새 RBAC 리소스 목록 파일 (runner-rbac.yaml) 을 만든 것을 볼 수 있습니다.
4. Runner 자원 객체를 만듭니다
자원 목록 파일이 준비되면 바로 위의 자원 객체를 만듭니다.
만들기가 완료되면 Pod 상태를 보고 주자가 성공적으로 달리는지 여부를 확인할 수 있습니다.
StatefulSet 목록에 있는 복제본 수에 따라 Runner 의 인스턴스 두 개가 성공적으로 실행된 후 Gitlab 관리 페이지 아래의 Runner 페이지로 전환되었음을 알 수 있습니다.
이제 kubernetes 에서 Gitlab CI Runner 설치가 끝났습니다. 물론, 루너의 일부 구성은 필요에 따라 변경할 수 있습니다 (예: 태그 태그 추가).