Configmap & Secret

KingTG·2024년 4월 20일

도커&k8s

목록 보기
10/13

Configmap

https://kubernetes.io/ko/docs/concepts/configuration/configmap/

  • 테스트,운영 환경 등 여러 설정이 필요할 때 사용, configmap에 있는 모든 내용이 컨테이너 내부의 환경변수로 주입 된다.
  • 이미지를 만들 때 실행 명령을 넣어 놓으면 컨테이너 생성 후 동작하면서 환경변수 값들에 매칭이 돼서 들어가게 된다.

Secret

https://kubernetes.io/ko/docs/concepts/configuration/secret/

  • pw,OAuth Token,ssh key등 중요한 정보를 저장하는 용도로 사용(base64로 암호화되어 저장)
  • 인증서와 같은 바이너리 파일의 경우 문자열로 저장이 불가능 하기때문에 base64로 인코딩하여 저장 할 수 있도록 함
  • 추가적인 보안요소가 필요.
  • 파드에 연결된 secret 볼륨이 있다.
  • 프라이빗 도커 레지스트리를 사용할때 시크릿에 정보를 넣어 프라이빗 도커 레지스트리에서 이미지를 받는다.

configmap 확인

  • 쿠버네티스 대시보드 컨피그 맵 확인

  • 터미널에서 확인

kubectl get -n anotherclass-123 configmaps api-tester-1231-properties -o yaml

secret 확인

  • 쿠버네티스 대시보드 시크릿 확인 (base64로 암호화 하여 저장)

실제로는 인코딩 되서 저장 되긴 했지만 대시보드에서 복호화하여 나타냄

  • 터미널에서 확인

kubectl get -n anotherclass-123 secret api-tester-1231-postgresql -o yaml

base64로 암호화 되어 나온다.

kubectl get -n anotherclass-123 secret api-tester-1231-postgresql -o jsonpath='{.data.postgresql-info.yaml}' | base64 -d

복호화 해서 보여준다.

컨테이너에서 확인

파드에 들어가 env 명령어를 쳐보면

컨테이너의 내부 환경변수들이 나온다

jps -v 명령어를 치면 jar파일을 실행할때 넣어야될 환경변수의 명령어를 확인 할 수 있다.

  • 시크릿 파일 확인

ls /usr/src/myapp/datasource

cat /usr/src/myapp/datasource/postgresql-info.yaml

kubectl (터미널에서 확인)

kubectl exec -n -it --

kubectl exec -n anotherclass-123 -it api-tester-1231-75dd57f8cb-2sncz -- env
kubectl exec -n anotherclass-123 -it api-tester-1231-75dd57f8cb-2sncz -- cat /usr/src/myapp/datasource/postgresql-info.yaml
kubectl exec -n anotherclass-123 -it api-tester-1231-75dd57f8cb-2sncz -- jps -v

대시보드의 셸에서 확인했던 값을 터미널에서도 kubectl 명령어로 실행 가능

컨피그맵 변경

대시보드에 들어가 수정을 하거나 or 터미널에서 명령을 통해 컨피그맵 수정

export application_role=GET

수정 후 파드에 들어가 환경변수를 확인해 보면

수정되지 않고 그대로 있게 된다.

환경변수는파드가 생성될 때 한번만 주입되기 때문에 컨피그맵의 값만 수정한다고 바뀌지 않는다.

파드를 삭제 후 다시 조회하면 변경된 값이 조회가 된다.

시크릿 변경

시크릿의 dev → test로 변경

파드에 들어가 확인해보면 값이 바뀐다.

시크릿은 볼륨 마운팅으로 연결해 놓아서 바뀌게 된다.

0개의 댓글