Myo-Kyeong Tech Blog

[Kubernetes] 쿠버네티스에서 Secret을 다른 namespace로 복사하기 본문

DevOps/Kubernetes

[Kubernetes] 쿠버네티스에서 Secret을 다른 namespace로 복사하기

myo-kyeong 2024. 12. 3. 16:33
728x90
반응형

쿠버네티스(Kubernetes)를 사용하다 보면 특정 네임스페이스에 있는 시크릿(Secret)을 다른 네임스페이스로 복사해야 하는 상황이 생기곤 합니다. 예를 들어, 개발 환경에서 사용 중인 시크릿을 테스트 환경이나 프로덕션 환경으로 옮기거나, 동일한 시크릿을 여러 네임스페이스에서 재사용해야 할 때가 그렇습니다. 

이 글에서는 네임스페이스만 바꾸는 간단한 한 줄 명령어와, YAML 파일을 활용해 시크릿을 수정하고 복사하여 네임스페이스를 변경하는 방법에 대해 정리하였습니다. 

 


 

방법 1️⃣ : 네임스페이스만 변경하는 간단한 명령어 

시크릿을 수정할 필요 없이, 네임스페이스만 변경하려는 경우 다음과 같은 한 줄 명령어를 사용하면 됩니다. 

kubectl get secret <SECRET_NAME> -n <SOURCE_NAMESPACE> -o yaml | \
grep -v "namespace:" | \
kubectl apply -n <TARGET_NAMESPACE> -f-

 

방법 2️⃣ : YAML 파일 수정하여 복사하기 

시크릿 데이터를 수정하거나, 라벨 및 어노테이션 등 메타데이터를 변경해야 한다면, YAML 파일을 활용하는 것이 적합합니다.  

1. 시크릿 YAML로 추출

kubectl get secret <SECRET_NAME> -n <SOURCE_NAMESPACE> -o yaml > secret.yaml

 

2. YAML 파일 수정

  • namespace 변경  : metadata.namespace 값을 복사하려는 대상 네임스페이스로 변경합니다.
  • 라벨 또는 어노테이션 수정 

[secret.yaml 파일 수정 후 예시]

apiVersion: v1
data:
  username: dXNlcm5hbWU=  # Base64로 인코딩된 username
  password: cGFzc3dvcmQ=  # Base64로 인코딩된 password
kind: Secret
metadata:
  name: app-secret   # 시크릿 이름
  namespace: <TARGET_NAMESPACE>  # 복사하려는 대상 namespace
  labels:
    environment: production
    app: my-application
  annotations:
    description: "This secret contains credentials for the production database."
type: Opaque

 

3. 대상 네임스페이스로 시크릿 생성

kubectl apply -f secret.yaml

 

마지막으로, 복사된 시크릿이 대상 네임스페이스에 존재하는지 확인합니다.

kubectl get secret -n <TARGET_NAMESPACE>
728x90
반응형