피드 구독

중요한 데이터는 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 클러스터를 실행 중입니다.

또한 다음 단계를 진행하기 전에 ochelm 바이너리를 사용하여 터미널 환경에서 클러스터에 로그인했는지 확인합니다. 다음 명령을 사용하여 이러한 바이너리를 확인합니다.

먼저 사전 요구 사항을 확인합니다. 그러면 아래와 유사한 출력이 표시되어야 합니다.

$ 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.

Read full bio
UI_Icon-Red_Hat-Close-A-Black-RGB

채널별 검색

automation icon

오토메이션

기술, 팀, 인프라를 위한 IT 자동화 최신 동향

AI icon

인공지능

고객이 어디서나 AI 워크로드를 실행할 수 있도록 지원하는 플랫폼 업데이트

open hybrid cloud icon

오픈 하이브리드 클라우드

하이브리드 클라우드로 더욱 유연한 미래를 구축하는 방법을 알아보세요

security icon

보안

환경과 기술 전반에 걸쳐 리스크를 감소하는 방법에 대한 최신 정보

edge icon

엣지 컴퓨팅

엣지에서의 운영을 단순화하는 플랫폼 업데이트

Infrastructure icon

인프라

세계적으로 인정받은 기업용 Linux 플랫폼에 대한 최신 정보

application development icon

애플리케이션

복잡한 애플리케이션에 대한 솔루션 더 보기

Original series icon

오리지널 쇼

엔터프라이즈 기술 분야의 제작자와 리더가 전하는 흥미로운 스토리