GitLab CI
이 문서는 GitLab CI와 Machine ID에 대한 참고 자료로 작용합니다. GitLab 참여 방법을 사용할 때 사용할 수 있는 구성 옵션에 대한 전체 설명과 심층 가이드를 링크로 찾아볼 수 있습니다.
가이드
Machine ID와 GitLab CI 사용에 대한 단계별 가이드를 읽어보세요:
- GitLab과 함께 Machine ID 사용하기: GitLab CI에서 Machine ID를 사용하여 Teleport 노드에 SSH로 접속하는 방법입니다.
GitLab 참여 토큰
GitLab 참여 토큰은 Teleport 클러스터에 참여할 수 있는 파이프라인을 설명하는 허용 규칙을 포함합니다. 규칙은 여러 필드를 포함할 수 있으며, 단일 규칙 내의 모든 필드와 일치하는 파이프라인은 접근 권한을 부여받습니다.
kind: token
version: v2
metadata:
# 이 토큰을 식별하는 이름입니다. 봇이나 노드가 이 토큰을 사용하여 조인하도록 구성할 때
# 이 이름을 지정해야 합니다.
name: gitlab-demo
spec:
# Bot 역할은 이 토큰이 봇 사용자에 대한 접근을 부여하며,
# 노드가 조인하는 것을 허용하지 않음을 나타냅니다.
roles: [Bot]
# GitLab 조인을 위한 join_method는 항상 "gitlab"입니다.
join_method: gitlab
# bot_name은 이 토큰을 사용할 때 접근을 부여할 봇의 이름을 지정합니다.
bot_name: gitlab-demo
gitlab:
# domain은 GitLab 인스턴스의 도메인이어야 합니다.
# GitLab의 클라우드 호스팅 제공을 사용하는 경우 이 필드를 완전히 생략하세요.
domain: gitlab.example.com
# allow는 GitLab CI 작업이 조인할 수 있는 규칙 구성을 위한 배열입니다.
# 하나의 allow 항목 내에서 구성된 모든 옵션이 만족되어야
# GitLab CI 실행이 조인할 수 있습니다. 여러 allow 항목이 지정된 경우
# 단일 항목 내의 모든 옵션을 만족하는 작업은 조인할 수 있습니다.
#
# allow 항목에는 최소 한 개의 항목이 포함되어야 합니다:
# - project_path
# - namespace_path
# - sub
# 이는 다른 GitLab 사용자의 프로젝트에서 GitLab CI 실행이
# Teleport 클러스터에 접근하지 못하도록 합니다.
allow:
# project_path는 지정된 프로젝트 내에서 시작된 작업만
# 조인하도록 제한합니다.
#
# 이 필드는 glob 스타일의 매칭을 지원합니다:
# - '*'를 사용하여 0개 이상의 문자를 매칭합니다.
# - '?'를 사용하여 단일 문자를 매칭합니다.
- project_path: my-user/my-project
# namespace_path는 지정된 네임스페이스 내에 존재하는
# 프로젝트 내의 모든 실행으로의 조인을 제한합니다.
# 네임스페이스는 사용자 이름 또는 그룹 이름일 수 있습니다.
#
# 이 필드는 glob 스타일의 매칭을 지원합니다:
# - '*'를 사용하여 0개 이상의 문자를 매칭합니다.
# - '?'를 사용하여 단일 문자를 매칭합니다.
namespace_path: my-user
# pipeline_source는 특정 기준에 의해 트리거된 작업만
# 조인하도록 제한합니다, 예를 들어 웹 인터페이스를 통해 트리거된 경우.
pipeline_source: web
# environment는 지정된 환경과 관련된 작업만
# 조인하도록 제한합니다.
environment: production
# ref_type은 특정 유형의 git 참조에 의해 트리거된 작업만
# 조인하도록 제한합니다. 'branch' 또는 'tag' 중 하나입니다.
ref_type: branch
# ref는 특정 git 참조에 의해 트리거된 작업만
# 조인하도록 제한합니다. 이와 `ref_type`을 결합하여 특정
# 브랜치 또는 태그에 의해 트리거될 수 있는 allow 규칙을
# 생성합니다.
#
# 이 필드는 glob 스타일의 매칭을 지원합니다:
# - '*'를 사용하여 0개 이상의 문자를 매칭합니다.
# - '?'를 사용하여 단일 문자를 매칭합니다.
ref: main
# sub는 project_path, ref_type 및 ref를 결합한 단일 문자열입니다.
# 이는 조인을 제한하는 데 사용할 수 있으며,
# 특정 프로젝트 및 git ref를 설명하는 데도 사용됩니다.
#
# 개별 필드를 사용하는 것이 더 좋으며,
# sub 문자열을 잘못 포맷하는 것이 쉽기 때문입니다.
#
# 이 필드는 glob 스타일의 매칭을 지원합니다:
# - '*'를 사용하여 0개 이상의 문자를 매칭합니다.
# - '?'를 사용하여 단일 문자를 매칭합니다.
sub: project_path:my-user/my-project:ref_type:branch:ref:main
# user_login은 특정 사용자 이름에 의해 트리거된 작업만
# 조인하도록 제한합니다.
user_login: octocat
# user_email은 주어진 이메일을 가진 특정 사용자에 의해
# 트리거된 작업만 조인하도록 제한합니다.
user_email: octo.cat@example.com
# ref_protected가 true로 설정되면 보호된 참조에 대해
# 실행되는 작업만 조인하도록 제한합니다.
# 생략할 경우, 호출된 참조의 보호 상태는 점검되지 않습니다.
ref_protected: true
# environment_protected가 true로 설정되면 보호된 참조에 대해
# 실행되는 작업만 조인하도록 제한합니다.
# 생략할 경우, 호출된 참조의 보호 상태는 점검되지 않습니다.
environment_protected: true
# ci_config_sha는 특정 CI 구성의 커밋을 사용하는
# 작업만 조인하도록 제한합니다.
ci_config_sha: ffffffffffffffffffffffffffffffffffffffff
# ci_config_ref_uri는 특정 CI 구성 소스를 사용하는
# 작업만 조인하도록 제한합니다.
ci_config_ref_uri: gitlab.example.com/my-group/my-project//.gitlab-ci.yml@refs/heads/main
# deployment_tier는 특정 배포 계층에 배포하는 작업만
# 조인하도록 제한합니다.
deployment_tier: production
# project_visibility는 특정 가시성 구성과 관련된
# 프로젝트에서 실행되는 작업만 조인하도록 제한합니다.
project_visibility: public