GitLab 차트에 대한 비밀 구성

Tier: Free, Premium, Ultimate Offering: Self-managed

GitLab은 운영을 위해 다양한 비밀을 요구합니다:

GitLab 구성 요소:

  • 레지스트리 인증 인증서
  • GitLab Shell을 위한 SSH 호스트 키 및 인증서
  • 각 GitLab 서비스에 대한 비밀번호
  • GitLab Pages에 대한 TLS 인증서

선택적 외부 서비스:

  • SMTP 서버
  • LDAP
  • OmniAuth
  • 수신 이메일을 위한 IMAP (mail_room 서비스 통해)
  • 서비스 데스크 이메일을 위한 IMAP (mail_room 서비스 통해)
  • 수신 이메일을 위한 Microsoft Graph와 OAuth2 (mail_room 서비스 통해)
  • 서비스 데스크 이메일을 위한 Microsoft Graph와 OAuth2 (mail_room 서비스 통해)
  • 발신 이메일을 위한 Microsoft Graph와 OAuth2
  • S/MIME 인증서
  • 스마트 카드 인증
  • OAuth 통합

수동으로 제공되지 않은 비밀은 무작위 값으로 자동 생성됩니다. HTTPS 인증서의 자동 생성은 Let’s Encrypt에 의해 제공됩니다.

자동 생성된 비밀을 사용하려면 다음 단계로 계속하세요.

자신의 비밀을 지정하려면 수동 비밀 생성으로 진행하세요.

수동 비밀 생성 (선택 사항)

이 문서에서 이전 단계를 따랐다면 릴리스 이름으로 gitlab을 사용하세요.

레지스트리 인증서

GitLab과 Registry 간의 통신은 Ingress 뒤에서 이루어지므로, 대부분의 경우 이 통신에 대해 자체 서명된 인증서를 사용하는 것으로 충분합니다. 이 트래픽이 네트워크를 통해 노출되는 경우, 공식적으로 유효한 인증서를 생성해야 합니다.

아래 예제에서는 자체 서명된 인증서가 필요하다고 가정합니다.

인증서-키 쌍 생성:

mkdir -p certs
openssl req -new -newkey rsa:4096 -subj "/CN=gitlab-issuer" -nodes -x509 -keyout certs/registry-example-com.key -out certs/registry-example-com.crt

이 인증서를 포함하는 비밀을 생성합니다. 우리는 <name>-registry-secret 비밀 안에 registry-auth.keyregistry-auth.crt 키를 생성할 것입니다. <name>을 릴리스의 이름으로 교체하세요.

kubectl create secret generic <name>-registry-secret --from-file=registry-auth.key=certs/registry-example-com.key --from-file=registry-auth.crt=certs/registry-example-com.crt

이 비밀은 global.registry.certificate.secret 설정에 의해 참조됩니다.

레지스트리 민감 알림 헤더

자세한 내용은 레지스트리 알림 설정 구성에 관한 문서를 확인하세요.

비밀 내용은 단일 항목이 포함된 경우에도 항목 목록이어야 합니다.

내용이 단순 문자열인 경우, 차트는 필요한 대로 이를 목록으로 변환하지 않습니다.

registry-authorization-header 비밀이 RandomFooBar 값을 가지고 생성된 예를 고려하세요.

kubectl create secret generic registry-authorization-header --from-literal=value="[RandomFooBar]"

기본적으로 비밀 내에서 사용되는 키는 “value”입니다. 그러나 사용자는 다른 키를 사용할 수 있지만 헤더 맵 항목 아래의 key로 지정되어야 합니다.

SSH 호스트 키

OpenSSH 인증서-키 쌍을 생성합니다:

mkdir -p hostKeys
ssh-keygen -t rsa  -f hostKeys/ssh_host_rsa_key -N ""
ssh-keygen -t dsa  -f hostKeys/ssh_host_dsa_key -N ""
ssh-keygen -t ecdsa  -f hostKeys/ssh_host_ecdsa_key -N ""
ssh-keygen -t ed25519  -f hostKeys/ssh_host_ed25519_key -N ""

이 인증서를 포함하는 비밀을 생성합니다. <name>을 릴리스의 이름으로 교체하세요.

kubectl create secret generic <name>-gitlab-shell-host-keys --from-file hostKeys

이 비밀은 global.shell.hostKeys.secret 설정에 의해 참조됩니다.

이 비밀이 교체되면 모든 SSH 클라이언트가 hostname mismatch 오류를 겪게 됩니다.

초기 엔터프라이즈 라이센스

경고: 이 방법은 설치 시 라이센스를 추가하는 데에만 사용됩니다.

웹 사용자 인터페이스의 관리 영역을 사용하여 라이센스를 갱신하거나 업그레이드하십시오.

GitLab 인스턴스를 위한 엔터프라이즈 라이센스를 저장하기 위해 Kubernetes 비밀을 생성합니다. <name>을 릴리스의 이름으로 교체하세요.

kubectl create secret generic <name>-gitlab-license --from-file=license=/tmp/license.gitlab

그런 다음 --set global.gitlab.license.secret=<name>-gitlab-license를 사용하여 구성에 라이센스를 주입합니다.

또한 global.gitlab.license.key 옵션을 사용하여 라이센스 비밀의 라이센스를 가리키는 기본 license 키를 변경할 수 있습니다.

초기 루트 비밀번호

초기 루트 비밀번호를 저장하기 위해 Kubernetes 비밀을 생성합니다. 비밀번호는 최소 6자 이상이어야 합니다. <name>을 릴리스의 이름으로 교체하세요.

kubectl create secret generic <name>-gitlab-initial-root-password --from-literal=password=$(head -c 512 /dev/urandom | LC_CTYPE=C tr -cd 'a-zA-Z0-9' | head -c 32)

Redis 비밀번호

Redis를 위한 무작위 64자 알파-넘érique 비밀번호를 생성합니다. <name>을 릴리스의 이름으로 교체합니다.

kubectl create secret generic <name>-redis-secret --from-literal=secret=$(head -c 512 /dev/urandom | LC_CTYPE=C tr -cd 'a-zA-Z0-9' | head -c 64)

기존 Redis 클러스터로 배포하는 경우, 무작위로 생성된 비밀번호 대신 base64로 인코딩된 Redis 클러스터에 접근하기 위한 비밀번호를 사용하시기 바랍니다.

이 비밀번호는 global.redis.auth.secret 설정에서 참조됩니다.

GitLab Shell 비밀번호

GitLab Shell을 위한 무작위 64자 알파-넘érique 비밀번호를 생성합니다. <name>을 릴리스의 이름으로 교체합니다.

kubectl create secret generic <name>-gitlab-shell-secret --from-literal=secret=$(head -c 512 /dev/urandom | LC_CTYPE=C tr -cd 'a-zA-Z0-9' | head -c 64)

이 비밀번호는 global.shell.authToken.secret 설정에서 참조됩니다.

Gitaly 비밀번호

Gitaly를 위한 무작위 64자 알파-넘érique 토큰을 생성합니다. <name>을 릴리스의 이름으로 교체합니다.

kubectl create secret generic <name>-gitaly-secret --from-literal=token=$(head -c 512 /dev/urandom | LC_CTYPE=C tr -cd 'a-zA-Z0-9' | head -c 64)

이 비밀번호는 global.gitaly.authToken.secret 설정에서 참조됩니다.

Praefect 비밀번호

Praefect를 위한 무작위 64자 알파-넘érique 토큰을 생성합니다. <name>을 릴리스의 이름으로 교체합니다:

kubectl create secret generic <name>-praefect-secret --from-literal=token=$(head -c 512 /dev/urandom | LC_CTYPE=C tr -cd 'a-zA-Z0-9' | head -c 64)

이 비밀번호는 global.praefect.authToken.secret 설정에서 참조됩니다.

GitLab Rails 비밀번호

<name>을 릴리스의 이름으로 교체합니다.

cat << EOF > secrets.yml
production:
  secret_key_base: $(head -c 512 /dev/urandom | LC_CTYPE=C tr -cd 'a-zA-Z0-9' | head -c 128)
  otp_key_base: $(head -c 512 /dev/urandom | LC_CTYPE=C tr -cd 'a-zA-Z0-9' | head -c 128)
  db_key_base: $(head -c 512 /dev/urandom | LC_CTYPE=C tr -cd 'a-zA-Z0-9' | head -c 128)
  encrypted_settings_key_base: $(head -c 512 /dev/urandom | LC_CTYPE=C tr -cd 'a-zA-Z0-9' | head -c 128)
  openid_connect_signing_key: |
$(openssl genrsa 2048 | awk '{print "    " $0}')
EOF

kubectl create secret generic <name>-rails-secret --from-file=secrets.yml

이 비밀번호는 global.railsSecrets.secret 설정에서 참조됩니다.

이 비밀번호를 회전하는 것은 추천되지 않습니다. 데이터베이스 암호화 키가 포함되어 있기 때문입니다. 비밀번호가 회전되면 비밀번호 파일이 손실되었을 때 나타나는 동일한 행동이 발생합니다.

note
encrypted_settings_key_base는 GitLab 13.7에서 추가되었으며 GitLab 14.0에 필요합니다.

GitLab Workhorse 비밀

작업말쇠 비밀을 생성합니다. 이 비밀은 32자의 길이를 가져야 하며, base64로 인코딩되어 있어야 합니다. <name>을 릴리스 이름으로 대체하세요.

kubectl create secret generic <name>-gitlab-workhorse-secret --from-literal=shared_secret=$(head -c 512 /dev/urandom | LC_CTYPE=C tr -cd 'a-zA-Z0-9' | head -c 32 | base64)

이 비밀은 global.workhorse.secret 설정에서 참조됩니다.

GitLab Runner 비밀

<name>을 릴리스 이름으로 대체하세요.

kubectl create secret generic <name>-gitlab-runner-secret --from-literal=runner-registration-token=$(head -c 512 /dev/urandom | LC_CTYPE=C tr -cd 'a-zA-Z0-9' | head -c 64)

이 비밀은 gitlab-runner.runners.secret 설정에서 참조됩니다.

GitLab KAS 비밀

GitLab Rails에서는 KAS에 대한 비밀이 필요하며, KAS 서브 차트를 설치하지 않고 이 차트를 배포하더라도 필수입니다. 여전히 아래 절차를 따라 이 비밀을 수동으로 생성하거나 차트가 자동으로 비밀을 생성하도록 할 수 있습니다.

<name>을 릴리스 이름으로 대체하세요.

kubectl create secret generic <name>-gitlab-kas-secret --from-literal=kas_shared_secret=$(head -c 512 /dev/urandom | LC_CTYPE=C tr -cd 'a-zA-Z0-9' | head -c 32 | base64)

이 비밀은 global.appConfig.gitlab_kas.key 설정에서 참조됩니다.

GitLab KAS API 비밀

이 비밀은 차트에 의해 자동으로 생성되도록 할 수 있으며, 또는 수동으로 이 비밀을 생성할 수 있습니다( <name>을 릴리스 이름으로 대체하세요):

kubectl create secret generic <name>-kas-private-api --from-literal=kas_private_api_secret=$(head -c 512 /dev/urandom | LC_CTYPE=C tr -cd 'a-zA-Z0-9' | head -c 32 | base64)

이 비밀은 gitlab.kas.privateApi.secret 설정에서 참조됩니다.

GitLab 추천 리뷰어 비밀

참고:

추천 리뷰어 비밀은 자동으로 생성되며, GitLab SaaS에서만 사용됩니다.

이 비밀은 자체 관리 GitLab 인스턴스에서는 필요하지 않습니다.

GitLab Rails에서는 추천 리뷰어에 대한 비밀이 필요합니다. 차트가 자동으로 비밀을 생성하도록 두거나 수동으로 이 비밀을 생성할 수 있습니다(<name>을 릴리스 이름으로 대체하세요):

kubectl create secret generic <name>-gitlab-suggested-reviewers --from-literal=suggested_reviewers_secret=$(head -c 512 /dev/urandom | LC_CTYPE=C tr -cd 'a-zA-Z0-9' | head -c 32 | base64)

이 비밀은 global.appConfig.suggested_reviewers.secret 설정에서 참조됩니다.

MinIO 비밀

MinIO를 위해 무작위로 생성된 20자 및 64자 알파벳 숫자 키 세트를 생성합니다.

<name>을 릴리스 이름으로 대체하세요.

kubectl create secret generic <name>-minio-secret --from-literal=accesskey=$(head -c 512 /dev/urandom | LC_CTYPE=C tr -cd 'a-zA-Z0-9' | head -c 20) --from-literal=secretkey=$(head -c 512 /dev/urandom | LC_CTYPE=C tr -cd 'a-zA-Z0-9' | head -c 64)

이 비밀은 global.minio.credentials.secret 설정에서 참조됩니다.

PostgreSQL 비밀번호

랜덤 64자 알파-넘릭 비밀번호를 생성합니다. <name>을 릴리즈의 이름으로 바꿉니다.

kubectl create secret generic <name>-postgresql-password \
    --from-literal=postgresql-password=$(head -c 512 /dev/urandom | LC_CTYPE=C tr -cd 'a-zA-Z0-9' | head -c 64) \
    --from-literal=postgresql-postgres-password=$(head -c 512 /dev/urandom | LC_CTYPE=C tr -cd 'a-zA-Z0-9' | head -c 64)

이 비밀번호는 global.psql.password.secret 설정에 의해 참조됩니다.

번들 PostgreSQL 서브차트의 PostgreSQL 비밀번호 변경

경고:
기본 Helm 차트 구성은 프로덕션에 적합하지 않으며, 번들 PostgreSQL 서브차트를 포함합니다.

번들 PostgreSQL 서브차트는 데이터베이스가 처음 생성될 때 비밀번호를 비밀에서 설정할 뿐입니다.

기존 데이터베이스의 비밀번호를 변경하려면 추가 조치를 취해야 합니다.

이 작업은 변경되는 동안 사용자에게 중단이 발생할 수 있음을 유의하시기 바랍니다.

PostgreSQL 비밀번호를 회전시키려면:

  1. PostgreSQL 비밀번호에 대한 일반 비밀번호 회전 지침을 완료합니다.

  2. PostgreSQL 포드에 접속하여 데이터베이스에서 비밀번호를 업데이트합니다:

    # PostgreSQL 포드에 접속
    kubectl exec -it <name>-postgresql-0 -- sh
    
    # 포드 안에서 데이터베이스의 비밀번호 업데이트
    sed -i 's/^\(local .*\)md5$/\1trust/' /opt/bitnami/postgresql/conf/pg_hba.conf
    pg_ctl reload ; sleep 1
    echo "ALTER USER postgres WITH PASSWORD '$(echo $POSTGRES_POSTGRES_PASSWORD)' ; ALTER USER gitlab WITH PASSWORD '$(echo POSTGRES_PASSWORD)'" | psql -U postgres -d gitlabhq_production -f -
    sed -i 's/^\(local .*\)trust$/\1md5/' /opt/bitnami/postgresql/conf/pg_hba.conf
    pg_ctl reload
    
  3. 새로운 비밀번호로 로드된 새로운 포드를 허용하기 위해 kubectl delete pod 명령을 사용하여 gitlab-exporter, postgresql, toolbox, sidekiqwebservice 포드를 삭제합니다.

GitLab Pages 비밀

GitLab Pages 비밀을 생성합니다. 길이는 32자이고 base64 인코딩되어야 합니다. <name>을 릴리즈의 이름으로 바꿉니다.

kubectl create secret generic <name>-gitlab-pages-secret --from-literal=shared_secret=$(head -c 512 /dev/urandom | LC_CTYPE=C tr -cd 'a-zA-Z0-9' | head -c 32 | base64)

이 비밀은 global.pages.apiSecret.secret 설정에 의해 참조됩니다.

레지스트리 HTTP 비밀

모든 레지스트리 포드에 공유되는 랜덤 64자 알파-넘릭 키를 생성합니다. <name>을 릴리즈의 이름으로 바꿉니다.

kubectl create secret generic <name>-registry-httpsecret --from-literal=secret=$(head -c 512 /dev/urandom | LC_CTYPE=C tr -cd 'a-zA-Z0-9' | head -c 64 | base64)

이 비밀은 global.registry.httpSecret.secret 설정에 의해 참조됩니다.

레지스트리 알림 비밀

모든 레지스트리 포드와 GitLab 웹 서비스 포드에서 공유되는 랜덤 32자 알파-넘릭 키를 생성합니다. <name>을 릴리즈의 이름으로 바꿉니다.

kubectl create secret generic <name>-registry-notification --from-literal=secret=[\"$(head -c 512 /dev/urandom | LC_CTYPE=C tr -cd 'a-zA-Z0-9' | head -c 32)\"]

이 비밀은 global.registry.notificationSecret.secret 설정에 의해 참조됩니다.

Praefect DB 비밀번호

무작위 64자 알파-넘버 비밀번호를 생성합니다. <name>을 릴리스의 이름으로 교체하세요:

kubectl create secret generic <name>-praefect-dbsecret \
    --from-literal=secret=$(head -c 512 /dev/urandom | LC_CTYPE=C tr -cd 'a-zA-Z0-9' | head -c 64) \

이 비밀은 global.praefect.dbSecret 설정에서 참조됩니다.

외부 서비스

일부 차트에는 자동으로 생성할 수 없는 기능을 활성화하기 위한 추가 비밀이 있습니다.

OmniAuth

배포된 GitLab에서 OmniAuth Providers를 사용하려면 Globals 차트의 지침을 따르세요.

LDAP 비밀번호

LDAP 서버와 연결하기 위한 비밀번호 인증이 필요한 경우, 비밀번호를 Kubernetes 비밀에 저장해야 합니다.

kubectl create secret generic ldap-main-password --from-literal=password=yourpasswordhere

그런 다음 --set global.appConfig.ldap.servers.main.password.secret=ldap-main-password를 사용하여 비밀번호를 구성에 주입합니다.

참고:

Helm 속성을 구성할 때는 _실제 비밀번호_가 아닌 Secret 이름을 사용하세요.

SMTP 비밀번호

인증이 필요한 SMTP 서버를 사용하는 경우, 비밀번호를 Kubernetes 비밀에 저장합니다.

kubectl create secret generic smtp-password --from-literal=password=yourpasswordhere

그런 다음 Helm 명령에서 --set global.smtp.password.secret=smtp-password를 사용하세요.

참고:

Helm 속성을 구성할 때는 _실제 비밀번호_가 아닌 Secret 이름을 사용하세요.

수신 이메일용 IMAP 비밀번호

GitLab은 수신 이메일에 접근하기 위해 앱 비밀번호, 토큰 또는 IMAP 비밀번호와 같은 인증 문자열을 사용합니다.

GitLab 수신 이메일 문서에서 이메일 제공자를 찾으세요

필요한 인증 문자열을 Kubernetes 비밀로 설정하세요.

kubectl create secret generic incoming-email-password --from-literal="password=auth_string_for_your_provider_here"

그런 다음 Helm 명령에서 --set global.appConfig.incomingEmail.password.secret=incoming-email-password를 사용하고, 문서에 명시된 대로 다른 필요한 설정을 함께 구성하세요 docs에서 확인하세요.

참고:

Helm 속성을 구성할 때는 _실제 비밀번호_가 아닌 Secret 이름을 사용하세요.

서비스 데스크 이메일용 IMAP 비밀번호

GitLab은 서비스 데스크 이메일에 접근하기 위해 앱 비밀번호, 토큰 또는 IMAP 비밀번호와 같은 인증 문자열을 사용합니다.

GitLab 수신 이메일 문서에서 이메일 제공자를 찾으세요

필요한 인증 문자열을 Kubernetes 비밀로 설정하세요.

kubectl create secret generic service-desk-email-password --from-literal="password=auth_string_for_your_provider_here"

그런 다음 Helm 명령에서 --set global.appConfig.serviceDeskEmail.password.secret=service-desk-email-password를 사용하고, 문서에 명시된 대로 다른 필요한 설정을 함께 구성하세요 docs에서 확인하세요.

참고:

Helm 속성을 구성할 때는 _실제 비밀번호_가 아닌 Secret 이름을 사용하세요.

GitLab 수신 이메일 인증 토큰

수신 이메일이 웹후크 전송 방법을 사용하도록 구성되면, mail_room 서비스와 웹서비스 간에 공유 비밀이 있어야 합니다. 이 비밀은 32자 길이여야 하며 base64로 인코딩되어야 합니다. <name>을 릴리스의 이름으로 교체하세요.

kubectl create secret generic <name>-incoming-email-auth-token --from-literal=authToken=$(head -c 512 /dev/urandom | LC_CTYPE=C tr -cd 'a-zA-Z0-9' | head -c 32 | base64)

이 비밀은 global.incomingEmail.authToken 설정에서 참조됩니다.

GitLab 서비스 데스크 이메일 인증 토큰

서비스 데스크 이메일이 웹후크 전송 방법을 사용하도록 구성되면, mail_room 서비스와 웹 서비스 간에 공유 비밀이 있어야 합니다. 이 비밀은 32자 길이로 base64 인코딩되어야 합니다. <name>을 릴리스의 이름으로 바꾸세요.

kubectl create secret generic <name>-service-desk-email-auth-token --from-literal=authToken=$(head -c 512 /dev/urandom | LC_CTYPE=C tr -cd 'a-zA-Z0-9' | head -c 32 | base64)

이 비밀은 global.serviceDeskEmail.authToken 설정에서 참조됩니다.

Zoekt 기본 인증 비밀번호

차트에서 비밀을 자동 생성하도록 남겨두거나 이 비밀을 수동으로 생성할 수 있습니다(여기서 <name>을 릴리스의 이름으로 바꾸세요):

password=$(head -c 512 /dev/urandom | LC_CTYPE=C tr -cd 'a-zA-Z0-9' | head -c 32 | base64)
kubectl create secret generic <name>-zoekt-basicauth --from-literal=gitlab_username=gitlab --from-literal=gitlab_password="$password"

이 비밀은 gitlab.zoekt.gateway.basicAuth.secretName 설정에서 참조됩니다.

Microsoft Graph 클라이언트 비밀(수신 이메일용)

GitLab이 수신 이메일에 액세스할 수 있도록 IMAP 계정의 비밀번호를 Kubernetes 비밀에 저장하세요:

kubectl create secret generic incoming-email-client-secret --from-literal=secret=your-secret-here

그런 다음 Helm 명령어에서 --set global.appConfig.incomingEmail.clientSecret.secret=incoming-email-client-secret를 사용하고, 문서에서 지정한 기타 필수 설정과 함께 사용하세요.

note
Helm 속성을 구성할 때는 _실제 비밀번호_가 아닌 Secret 이름을 사용하세요.

Microsoft Graph 클라이언트 비밀(서비스 데스크 이메일용)

GitLab이 서비스_데스크 이메일에 액세스할 수 있도록 IMAP 계정의 비밀번호를 Kubernetes 비밀에 저장하세요:

kubectl create secret generic service-desk-email-client-secret --from-literal=secret=your-secret-here

그런 다음 Helm 명령어에서 --set global.appConfig.serviceDeskEmail.clientSecret.secret=service-desk-email-client-secret를 사용하고, 문서에서 지정한 기타 필수 설정과 함께 사용하세요.

note
Helm 속성을 구성할 때는 _실제 비밀번호_가 아닌 Secret 이름을 사용하세요.

Microsoft Graph 클라이언트 비밀(발신 이메일용)

비밀번호를 Kubernetes 비밀에 저장하세요:

kubectl create secret generic microsoft-graph-mailer-client-secret --from-literal=secret=your-secret-here

그런 다음 Helm 명령어에서 --set global.appConfig.microsoft_graph_mailer.client_secret.secret=microsoft-graph-mailer-client-secret를 사용하세요.

note
Helm 속성을 구성할 때는 _실제 비밀번호_가 아닌 Secret 이름을 사용하세요.

S/MIME 인증서

발신 이메일 메시지는 S/MIME 표준을 사용하여 디지털 서명될 수 있습니다. S/MIME 인증서는 Kubernetes 비밀로 TLS 유형 비밀로 저장되어야 합니다.

kubectl create secret tls smime-certificate --key=file.key --cert file.crt

기존 비밀이 불투명 유형인 경우, global.email.smime.keyNameglobal.email.smime.certName 값을 특정 비밀에 맞게 조정해야 합니다.

S/MIME 설정은 values.yaml 파일이나 명령줄을 통해 설정할 수 있습니다. S/MIME을 활성화하려면 --set global.email.smime.enabled=true를 사용하고, S/MIME 인증서를 포함하는 비밀을 지정하려면 --set global.email.smime.secretName=smime-certificate를 사용하세요.

스마트카드 인증

스마트카드 인증은 클라이언트 인증서를 서명하기 위해 사용자 지정 인증 기관(CA)을 사용합니다. 이 사용자 지정 CA의 인증서는 Webservice pod에 삽입되어 클라이언트 인증서가 유효한지 확인하는 데 필요합니다. 이는 k8s 비밀로 제공됩니다.

kubectl create secret generic <secret name> --from-file=ca.crt=<path to CA certificate>

비밀 내부에 인증서가 저장되는 키 이름은 반드시 ca.crt여야 합니다.

OAuth 통합

GitLab Pages와 같은 다양한 서비스의 OAuth 통합을 구성하려면 OAuth 자격 증명을 포함하는 비밀이 필요합니다. 비밀에는 App ID(기본적으로 appid 키 아래에 저장됨)와 App Secret(기본적으로 appsecret 키 아래에 저장됨)이 포함되어야 하며, 두 값 모두 영숫자 문자열로, 최소 64자 이상이어야 합니다.

kubectl create secret generic oauth-gitlab-pages-secret --from-literal=appid=<app id> --from-literal=appsecret=<app secret>

이 비밀은 global.oauth.<service name>.secret 설정을 사용하여 지정할 수 있습니다. appidappsecret 외의 키를 사용하는 경우, global.oauth.<service name>.appIdKeyglobal.oauth.<service name>.appSecretKey 설정을 사용하여 지정할 수 있습니다.

다음 단계

모든 비밀이 생성되고 저장되면 GitLab 배포하기로 진행할 수 있습니다.

비밀 회전

비밀은 보안상의 이유로 필요할 경우 회전할 수 있습니다.

  1. 현재 비밀 백업하기.
  2. 편의를 위해 -v2로 접미사 붙은 새 비밀을 생성합니다(예: gitlab-shell-host-keys-v2) 각 비밀 회전을 위해 수동 비밀 생성 단계를 따릅니다.
  3. 새 비밀 이름을 가리키도록 values.yaml 파일의 비밀 키를 업데이트합니다. 대부분의 비밀 이름은 수동 비밀 생성 섹션의 각 비밀 아래에 문서화되어 있습니다.
  4. 업데이트된 values.yaml 파일로 GitLab Chart 릴리스를 업그레이드합니다.
  5. PostgreSQL 비밀을 회전하는 경우, 회전을 완료하기 위한 추가 단계가 있습니다.
  6. GitLab이 예상대로 작동하는지 확인합니다. 그렇다면 이전 비밀을 안전하게 삭제할 수 있습니다.