중요한 데이터는 Git에 저장해서는 안 됩니다. 이것은 GitOps에 있어 딜레마를 제공합니다. Git에 비밀 정보를 저장해야 하지만, 민감한 데이터를 노출하고 싶지는 않기 때문입니다! 이 문제를 해결하기 위해, HashiCorp Vault와 같은 툴에 비밀 정보를 저장한 후, 해당 데이터를 Red Hat OpenShift에 검색하여 주입할 수 있습니다.
이 문서는 Hashicorp Vault 인스턴스에서 비밀 정보를 검색하고 이를 Kubernetes 리소스에 주입하기 위해 Argo CD Vault 플러그인을 사용하여 OpenShift GitOps를 배포하는 방법에 대한 가이드입니다. 이 가이드는 2021년 이전 Red Hat 블로그와 같은 작업을 기반으로 작성되었으며, 보다 현대적인 사용자 정의 플러그인 사이드카 접근 방식을 사용하도록 업데이트되었습니다.
전제 조건
이 문서에서는 해당 클러스터에서 관리 권한으로 OpenShift 4.10 이상을 실행한다고 가정합니다. Red Hat 데모 시스템을 통해 프로비저닝된 Red Hat OpenShift on AWS 4.13 클러스터를 실행 중입니다.
또한 다음 단계를 진행하기 전에 oc
및 helm
바이너리를 사용하여 터미널 환경에서 클러스터에 로그인했는지 확인합니다. 다음 명령을 사용하여 이러한 바이너리를 확인합니다.
먼저 사전 요구 사항을 확인합니다. 그러면 아래와 유사한 출력이 표시되어야 합니다.
$ oc version && helm version Client Version: 4.11.13 Kustomize Version: v4.5.4 Kubernetes Version: v1.27.4 version.BuildInfo{Version:"v3.10.1", GitCommit:"9f88ccb6aee40b9a0535fcc7efea6055e1ef72c9", GitTreeState:"clean", GoVersion:"go1.18.7"}
1. Vault 배포
이 문서에서는 프로덕션에 적합하지 않은 dev
모드에서 Vault를 사용하고 있습니다. Vault 인스턴스가 이미 실행 중인 경우 이 단계를 건너뛸 수 있습니다. Hashicorp Vault:
의 인스턴스를 배포합니다.
$ helm upgrade --install vault vault \ --repo https://helm.releases.hashicorp.com \ --namespace vault \ --create-namespace \ --set "global.openshift=true" \ --set "server.dev.enabled=true" \ --set "injector.enabled=false"
2. Vault 구성
Vault 인스턴스를 배포한 후에는 우수한 vault
CLI를 사용하여 이 데모를 위해 Vault 포드에 대해 쉘 스크립트를 실행하여 신속하게 구성합니다.
구성 스크립트는 Vault에 대해 Kubernetes 인증 방법을 설정하고, kv-v2
시크릿 저장소를 활성화하고, 테스트 시크릿을 생성하고, 해당 시크릿에 대한 액세스 정책을 생성합니다.
소스를 복제합니다.
$ git clone https://github.com/jmhbnz/openshift-gitops-vault-plugin
구성 스크립트를 Vault 포드에 복사합니다.
$ oc --namespace vault cp 1-vault/configure-vault.sh vault-0:/tmp/configure-vault.sh
그런 다음 vault 포드에서 원격으로 스크립트를 실행합니다.
$ oc --namespace vault exec vault-0 -t -- sh -c 'cd /tmp && ./configure-vault.sh'
3. argocd-vault-plugin-auth를 Vault로 구성
Vault를 배포하고 구성한 후에는 곧 배포할 Argo CD Vault Plugin을 활성화하여 쿠버네티스 서비스 계정을 사용하여 Vault에 인증해야 합니다.
ArgoCD의 네임스페이스를 생성합니다.
$ oc new-project vplugindemo
Argo Vault 플러그인 인증을 위한 서비스 계정을 생성합니다.
$ oc create serviceaccount vplugin
Vault에서 역할을 만들어 서비스 계정을 정책에 바인딩합니다.
$ oc --namespace vault exec vault-0 -- vault write auth/kubernetes/role/vplugin \ bound_service_account_names=vplugin \ bound_service_account_namespaces=vplugindemo \ policies=vplugin \ ttl=1h
마지막으로 Vault 연결을 구성할 때 사용할 Argo Vault 플러그인에 대한 시크릿을 생성합니다.
$ oc --namespace vplugindemo create \ -f 2-argocd/secret-vault-configuration.yaml
4. argocd-vault-plugin 처리 구성
인증이 구성되면 이제 Argo CD Vault Plugin 사이드카의 용도를 정의해야 합니다. 이 프로세스는 2단계로 이루어집니다. 먼저 discover 명령을 지정한 다음 generate 명령을 지정해야 합니다. helm
또는 kustomize
기반 애플리케이션에 대한 시나리오를 포함하여 이러한 문서화된 예제를 참조하십시오. 이 예제에서는 주석이 포함된 파일을 검색하는 가장 기본적인 접근 방식을 취한 다음 argocd-vault-plugin generate 를 사용합니다.
를 사용하여 파일을 템플릿화합니다.
$ oc --namespace vplugindemo create \ -f 2-argocd/configmap-plugin.yaml
5. OpenShift GitOps 배포
Vault를 배포 및 구성하고 argocd-vault-plugin을 구성한 상태에서 OpenShift GitOps 운영자를 배포합니다.
$ oc --namespace openshift-operators create -f 2-argocd/subscription-gitops.yaml
연산자가 성공적으로 설치되면 사용자 지정 리소스를 사용하여 Argo CD 인스턴스를 생성합니다.
$ oc --namespace vplugindemo create \ -f 2-argocd/crd-argocd.yaml
6. Argo CD 애플리케이션 생성
Argo CD가 실행 중이면 이 기준 샘플 애플리케이션을 생성합니다. 그러면 기본 자리 표시자 값이 Vault에서 가져온 값으로 교체된 시크릿 리소스가 클러스터에 생성됩니다.
$ oc --namespace vplugindemo create \ -f 2-argocd/application-example.yaml
요약
사이드카로 실행되는 Red Hat OpenShift GitOps 및 Argo CD Vault Plugin과 함께 Hashicorp Vault를 사용하면 Git의 시크릿 내부에 자리 표시자 값을 성공적으로 사용할 수 있습니다. 이는 중요한 데이터를 보호하는 훌륭한 방법입니다.
저자 소개
James Blair is a Specialist Architect at Red Hat. James is a vivid open source advocate and hands-on engineer. He has a deep technical background in automation, DevSecOps and cloud-native platform engineering across several sectors and is passionate about growing cloud-native in Aotearoa, New Zealand.
채널별 검색
오토메이션
기술, 팀, 인프라를 위한 IT 자동화 최신 동향
인공지능
고객이 어디서나 AI 워크로드를 실행할 수 있도록 지원하는 플랫폼 업데이트
오픈 하이브리드 클라우드
하이브리드 클라우드로 더욱 유연한 미래를 구축하는 방법을 알아보세요
보안
환경과 기술 전반에 걸쳐 리스크를 감소하는 방법에 대한 최신 정보
엣지 컴퓨팅
엣지에서의 운영을 단순화하는 플랫폼 업데이트
인프라
세계적으로 인정받은 기업용 Linux 플랫폼에 대한 최신 정보
애플리케이션
복잡한 애플리케이션에 대한 솔루션 더 보기
오리지널 쇼
엔터프라이즈 기술 분야의 제작자와 리더가 전하는 흥미로운 스토리
제품
- Red Hat Enterprise Linux
- Red Hat OpenShift Enterprise
- Red Hat Ansible Automation Platform
- 클라우드 서비스
- 모든 제품 보기
툴
체험, 구매 & 영업
커뮤니케이션
Red Hat 소개
Red Hat은 Linux, 클라우드, 컨테이너, 쿠버네티스 등을 포함한 글로벌 엔터프라이즈 오픈소스 솔루션 공급업체입니다. Red Hat은 코어 데이터센터에서 네트워크 엣지에 이르기까지 다양한 플랫폼과 환경에서 기업의 업무 편의성을 높여 주는 강화된 기능의 솔루션을 제공합니다.