GitOps 워크플로우에서 Kubernetes 비밀을 관리하는 방법(사용 중단됨)

경고: 이 기능은 GitLab 16.2에서 사용이 중단되었습니다. GitOps 워크플로우로 클러스터 리소스를 관리하려면 Flux 통합을 사용해야 합니다.

git 저장소에 Kubernetes 비밀을 암호화되지 않은 형식으로 저장해서는 안됩니다. GitOps 워크플로우를 사용하는 경우 비밀을 안전하게 관리하려면 다음 단계를 따를 수 있습니다.

  1. Sealed Secrets 컨트롤러를 설정하여 비밀을 관리합니다.
  2. 클러스터가 GitLab 컨테이너 레지스트리에서 이미지를 가져올 수 있도록 Docker 자격 증명을 배포합니다.

전제 조건

이 설정에는 다음이 필요합니다.

  • GitOps 워크플로우로 구성된 Kubernetes용 GitLab 에이전트.
  • 설정을 마무리하기 위해 클러스터에 대한 액세스.

Sealed Secrets 컨트롤러 설정

Sealed Secrets 컨트롤러를 사용하여 git 저장소에 암호화된 비밀을 안전하게 저장할 수 있습니다. 컨트롤러는 비밀을 일반적인 Kubernetes Secret 종류 리소스로 해독합니다.

  1. Sealed Secrets 릴리스 페이지로 이동하여 최신 controller.yaml 파일을 다운로드합니다.
  2. GitLab에서 Kubernetes 매니페스트를 포함하는 프로젝트로 이동하고 controller.yaml 파일을 업로드합니다.
  3. 에이전트 구성 파일(config.yaml)을 열고 필요한 경우 paths.glob 패턴을 Sealed Secrets 매니페스트와 일치하도록 업데이트합니다.
  4. 변경 사항을 커밋하고 GitLab에 푸시합니다.
  5. Sealed Secrets 컨트롤러가 성공적으로 설치되었는지 확인합니다:

    kubectl get pods -lname=sealed-secrets-controller -n kube-system
    
  6. Sealed Secrets 지침에 따라 kubeseal 명령줄 유틸리티를 설치합니다.
  7. 클러스터에 직접 액세스하지 않고도 비밀을 암호화하는 데 필요한 공개 키를 가져옵니다:

    kubeseal --fetch-cert > public.pem
    
  8. 공개 키를 저장소에 커밋합니다.

Sealed Secrets 컨트롤러 작동 방식에 대한 자세한 내용은 사용 방법 지침을 참조하십시오.

Docker 자격 증명 배포

GitLab 컨테이너 레지스트리에서 컨테이너를 배포하려면 클러스터를 적절한 Docker 레지스트리 자격 증명으로 구성해야 합니다. 이 작업은 docker-registry 유형 시크릿을 배포하여 수행할 수 있습니다.

  1. 적어도 read-registry 권한을 갖는 GitLab 토큰을 생성합니다. 토큰은 개인 또는 프로젝트 액세스 토큰일 수 있습니다.
  2. Kubernetes 시크릿 매니페스트 YAML 파일을 생성합니다. 필요에 따라 값을 업데이트합니다:

    kubectl create secret docker-registry gitlab-credentials --docker-server=registry.gitlab.example.com --docker-username=<gitlab-username> --docker-password=<gitlab-token> --docker-email=<gitlab-user-email> -n <namespace> --dry-run=client -o yaml > gitlab-credentials.yaml
    
  3. 시크릿을 SealedSecret 매니페스트로 암호화합니다:

    kubeseal --format=yaml --cert=public.pem < gitlab-credentials.yaml > gitlab-credentials.sealed.yaml