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 서비스를 통해)
  • OAuth2를 통한 수신 이메일용 Microsoft Graph (mail_room 서비스를 통해)
  • 서비스 데스크 이메일용 OAuth2를 통한 Microsoft Graph (mail_room 서비스를 통해)
  • 외부 이메일용 OAuth2를 통한 Microsoft Graph
  • S/MIME 인증서
  • 스마트 카드 인증
  • OAuth 통합

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

자동으로 생성된 시크릿을 활용하려면 다음 단계로 이동하세요.

자체 시크릿을 지정하려면 수동 시크릿 생성으로 진행하세요.

수동 시크릿 생성 (선택 사항)

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

레지스트리 인증 인증서

GitLab과 레지스트리 간의 통신은 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>을 릴리스 이름으로 대체하세요.

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 설정에서 참조됩니다.

레지스트리 민감한 알림 헤더

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

시크릿 내용은 항목의 목록이어야 하며, 단일 항목이 포함되어 있더라도 목록으로 변환되어야 합니다. 내용이 문자열인 경우 차트들은 필요한대로 목록으로 변환하지 않습니다.

예를 들어 값이 RandomFooBarregistry-authorization-header 시크릿을 생성하는 예시를 살펴봅니다.

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를 사용하여 라이선스를 구성에 주입합니다.

기본 license 키를 라이선스 시크릿의 라이선스를 가리키도록 하는 global.gitlab.license.key 옵션 또한 사용할 수 있습니다.

초기 루트 암호

초기 루트 암호를 저장하기 위한 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자 알파벳-숫자 암호를 생성합니다. <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)

이 시크릿은 global.redis.auth.secret 설정에서 참조됩니다.

GitLab Shell 시크릿

GitLab Shell을 위한 무작위 64자 알파벳-숫자 시크릿을 생성합니다. <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자 알파벳-숫자 토큰을 생성합니다. <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자 알파벳-숫자 토큰을 생성합니다. <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 설정에서 참조됩니다.

이 시크릿을 회전하는 것은 권장되지 않으며, 데이터베이스 암호화 키가 포함되어 있기 때문입니다. 시크릿을 회전하면 시크릿 파일이 분실된 경우와 유사한 동작이 발생합니다.

참고: encrypted_settings_key_base는 GitLab 13.7에서 추가되었으며, GitLab 14.0에서 필요합니다.

GitLab Workhorse secret

워크호스 시크릿을 생성하십시오. 이 값은 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 secret

<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 secret

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 secret

차트에게 이 시크릿을 자동으로 생성하도록 남겨둘 수 있거나, 이 시크릿을 수동으로 생성할 수 있습니다 (<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 Suggested Reviewers secret

참고: 제안된 리뷰어 시크릿은 GitLab SaaS에서 자동으로 생성되며 사용됩니다. 이 시크릿은 Self-managed 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 secret

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 password

무작위 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 pod로 이동하여 데이터베이스의 비밀번호를 업데이트합니다:

     # PostgreSQL pod로 이동
     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. gitlab-exporter, postgresql, toolbox, sidekiqwebservice pods를 kubectl delete pod 명령어를 사용하여 삭제하여 새로운 시크릿을로드한 새 pods를 생성하고 데이터베이스에 연결할 수 있도록 허용합니다.

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 속성을 구성할 때 _실제 패스워드_가 아닌 시크릿 이름을 사용하세요.

SMTP 패스워드

인증이 필요한 SMTP 서버를 사용하는 경우, 패스워드를 Kubernetes 시크릿에 저장하세요.

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

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

참고: Helm 속성을 구성할 때 _실제 패스워드_가 아닌 시크릿 이름을 사용하세요.

수신 이메일을 위한 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를 사용하세요. 문서에 지정된대로.

참고: Helm 속성을 구성할 때 _실제 패스워드_가 아닌 시크릿 이름을 사용하세요.

서비스 데스크 이메일을 위한 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를 사용하세요. 문서에 지정된대로.

참고: Helm 속성을 구성할 때 _실제 패스워드_가 아닌 시크릿 이름을 사용하세요.

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=여기에 비밀 입력

그런 다음 다른 필수 설정과 함께 Helm 명령어에서 --set global.appConfig.incomingEmail.clientSecret.secret=incoming-email-client-secret를 사용하십시오. 참고: Helm 속성을 구성할 때 실제 비밀이 아닌 비밀 이름을 사용하십시오.

서비스 데스크 이메일을 위한 Microsoft Graph 클라이언트 비밀

GitLab이 서비스 데스크 이메일에 액세스하도록 하려면 IMAP 계정의 비밀을 Kubernetes 비밀에 저장하십시오:

kubectl create secret generic service-desk-email-client-secret --from-literal=secret=여기에 비밀 입력

그런 다음 다른 필수 설정과 함께 Helm 명령어에서 --set global.appConfig.serviceDeskEmail.clientSecret.secret=service-desk-email-client-secret를 사용하십시오. 참고: Helm 속성을 구성할 때 실제 비밀이 아닌 비밀 이름을 사용하십시오.

발신 이메일을 위한 Microsoft Graph 클라이언트 비밀

비밀을 Kubernetes 비밀에 저장하십시오:

kubectl create secret generic microsoft-graph-mailer-client-secret --from-literal=secret=여기에 비밀 입력

그런 다음 Helm 명령어에서 --set global.appConfig.microsoft_graph_mailer.client_secret.secret=microsoft-graph-mailer-client-secret를 사용하십시오. 참고: Helm 속성을 구성할 때 실제 비밀이 아닌 비밀 이름을 사용하십시오.

S/MIME 인증서

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

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 팟을 위해 주입되어야 합니다. 이는 k8s 비밀로 제공됩니다.

kubectl create secret generic <secret name> --from-file=ca.crt=<CA 인증서 경로>

비밀에 저장된 인증서의 키 이름은 ca.crt여야 합니다.

OAuth 통합

여러 서비스의 OAuth 통합을 구성하는 경우, OAuth 자격 증명을 포함하는 시크릿이 필요합니다. 시크릿은 기본적으로 앱 ID(기본적으로 appid 키 하위에 저장됨)와 앱 비밀(기본적으로 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 차트 릴리스를 업그레이드합니다.
  5. 만일 PostgreSQL 시크릿을 로테이션하는 경우, 로테이션을 완료하기 위한 추가 단계가 있습니다.
  6. GitLab이 예상대로 작동하는지 확인합니다. 그렇다면, 이전 시크릿을 삭제해도 안전합니다.