본문 바로가기

개발하자

kubernetes에서 네임스페이스 간에 configMap을 공유할 수 있는 방법이 있나요?

반응형

kubernetes에서 네임스페이스 간에 configMap을 공유할 수 있는 방법이 있나요?

우리는 개발 환경과 스테이징 환경에 하나의 네임스페이스를 사용하고 있습니다. 이 네임스페이스 각각의 내부에는 몇 가지 configMap과 비밀이 있지만 두 환경 간에 많은 공유 변수가 있기 때문에 이들을 위한 공통 파일을 갖고 싶습니다.

기본 configMap을 기본 네임스페이스에 매핑하고 다음과 같은 것을 사용하여 참조할 수 있는 방법이 있습니까:

- envFrom:
    - configMapRef:
        name: default.base-config-map

만약 이것이 불가능하다면, 네임스페이스를 통해 변수를 복제하는 것 외에 다른 방법이 없을까요?




쿠베르네테스 1.13 이전 버전

네임스페이스 외부의 포드에서 액세스할 수 없기 때문에 공유할 수 없습니다. 리소스 이름은 네임스페이스 내에서 고유해야 하지만 네임스페이스 간에는 고유하지 않아야 합니다.

이 문제를 해결하려면 복사를 다시 해야 합니다.

네임스페이스 간에 암호 복사
kubectl get secret <secret-name> --namespace=<source-namespace> --export -o yaml \
  | kubectl apply --namespace=<destination-namespace> -f -
네임스페이스 간에 구성 맵 복사
kubectl get configmap <configmap-name>  --namespace=<source-namespace> --export -o yaml \
  | kubectl apply --namespace=<destination-namespace> -f -

쿠베르네테스 1.14+

대신 다음 명령을 사용할 수 있습니다:

kubectl get secret <secret-name> --namespace=<source-namespace>  -o yaml \
  | sed 's/namespace: <from-namespace>/namespace: <to-namespace>/' \
  | kubectl create -f -

만약 누군가가 여전히 국기의 필요성을 느낀다면, 에 의해 쓰여진 것이 있다.




다음 명령을 사용하여 한 네임스페이스에서 다른 네임스페이스로 복사하십시오

kubectl get configmap <configmap-name> -n <source-namespace> -o yaml | sed 's/namespace: <source-namespace>/namespace: <dest-namespace>/' | kubectl create -f -

kubectl get secret <secret-name> -n <source-namespace> -o yaml | sed 's/namespace: <source-namespace>/namespace: <dest-namespace>/' | kubectl create -f -




승인된 답변 외에도 리소스(예: 및 )

  • 그리고.
  • s 사이에,

수동 활동을 줄이기 위해 또는 필요한 경우와 같은 것을 고려할 가치가 있을 수 있다.

Reflector를 사용하려면 다음 세 단계를 수행해야 합니다:

  1. 예를 들어 다음을 통한 리플렉터 배포

  2. 예를 들어 프로덕션에서 주석이 달린 소스 리소스를 생성합니다.


apiVersion: v1
kind: ConfigMap
metadata:
  name: source-resource
  namespace: production
  annotations:
    reflector.v1.k8s.emberstack.com/reflection-allowed: "true"
    reflector.v1.k8s.emberstack.com/reflection-allowed-namespaces: "testing"
data:
  ...
  1. 예를 들어, 테스트에서 데이터 없이 주석이 달린 미러링된 리소스를 생성합니다.

apiVersion: v1
kind: ConfigMap
metadata:
  name: mirrored-resource
  namespace: testing
  annotations:
    reflector.v1.k8s.emberstack.com/reflects: "production/source-resource"
data:
  ...



를 사용하여 이 작업을 수행할 수 있습니다.


반응형