인포레터에서 최신 DevOps 트렌드를 격주로 만나보세요!
GitLab CI
이 문서는 GitLab CI 및 Machine ID에 대한 참조 역할을 합니다. GitLab 조인 방법을 사용할 때 사용할 수 있는 구성 옵션에 대한 전체 설명과 함께 심층 가이드에 대한 링크를 찾을 수 있습니다.
가이드
Machine ID 및 GitLab CI 사용에 대한 단계별 가이드를 읽을 수 있습니다:
- GitLab에서 Machine ID 사용: GitLab CI에서 Teleport 노드에 SSH로 접속하기 위해 Machine ID를 사용하는 방법.
GitLab 조인 토큰
GitLab 조인 토큰에는 해당 토큰을 사용하여 Teleport 클러스터에 조인할 수 있는 파이프라인을 설명하는 허용 규칙이 포함되어 있습니다. 규칙은 여러 필드를 포함할 수 있으며, 단일 규칙 내의 모든 필드와 일치하는 파이프라인은 액세스 권한이 부여됩니다.
kind: token
version: v2
metadata:
# name은 토큰을 식별합니다. 봇이나 노드를 이 토큰을 사용하여 조인하도록 구성할 때,
# 이 이름을 지정해야 합니다.
name: gitlab-demo
spec:
# Bot 역할은 이 토큰이 봇 사용자에게 액세스 권한을 부여함을 나타내며,
# 노드가 조인할 수 있도록 허용하지 않습니다.
roles: [Bot]
# GitLab 조인 방법은 항상 "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` 과 결합하여 특정 브랜치 또는 태그에 의해 트리거된
# 허용 규칙을 생성할 수 있습니다.
#
# 이 필드는 glob 스타일 매칭을 지원합니다:
# - '*'를 사용하여 0개 이상의 문자를 일치시킵니다.
# - '?'를 사용하여 단일 문자를 일치시킵니다.
ref: main
# sub는 project_path, ref_type 및 ref를 연결한 단일 문자열입니다.
# 이는 단일 문자열을 사용하여 조인을 제한할 수 있으며,
# 특정 프로젝트 및 git 참조를 설명할 수 있습니다.
#
# 개별 필드를 사용하는 것이 좋습니다. 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로 배포하는 작업으로 조인을 제한합니다.
deployment_tier: production
# project_visibility는 특정 가시성 구성에 대해 실행되는 작업으로 조인을 제한합니다.
project_visibility: public