패스트캠퍼스 캐시백 챌린지 64일차

Secret API Resource와 관련된 내용의 클립을 수강하는식으로 챌린지를 진행하였다. 민감한 정보의 데이터를 컨테이너에 주입할 때 사용하는 내용을 알게되었다. 챌린지 종료까지 단 2일남았는데 조금만 더 기운을 내보려고 한다..ㅎㅎ
다음 포스팅으로는 namespace와 관련된 내용을 포스팅할 예정이다.
시크릿(Secret)
- 컨피그맵과 사용법이 비슷
- 시크릿은 사용 목적에 따라 몇 가지 종류로 나누어짐
- 쿠버네티스는 기본적으로 시크릿 값을 저장할 때 Base64 인코딩
⇒ 패스워드, API, SSH Key 등 민감한 정보를 컨테이너에 주입해야 할 때 사용
Secret의 종류
- Opaque (generic) : 일반적인 용도의 시크릿
- dockerconfigjson : 도커 이미지 저장소 인증 정보
- tls - TLS 인증서 정보
- service-account-token - ServiceAccount의 인증 정보
Kubectl Secret 생성 명령어 (generic)
# my-secret 이름의 generic 타입 Secret 생성
$ kubectl create secret generic my-secret
# my-secret 이름의 generic 타입 Secret 생성 - 로컬의 secret.yaml 파일을 secret.yaml 키로 저장
$ kubectl create secret generic my-secret --from-file secret.yaml
# my-secret 이름의 generic 타입 Secret 생성 - 로컬의 secret.yaml 파일을 secret을 키로 저장
$ kubectl create secret generic my-secret --from-file secret=secret.yaml
# my-secret 이름의 generic 타입 Secret YAML 출력 - 로컬의 secret.yaml 파일을 secret을 키로 저장
$ kubectl create secret generic my-secret --from-file secret=secret.yaml --dry-run -o yaml
실습링크는 하단의 링크에 해당한다.
https://github.com/tedilabs/fastcampus-devops/tree/main/3-docker-kubernetes/11-k8s-secret
Secret의 선언적 관리
- Secret은Git과 같은 버전관리시스템에서 관리하기에 기밀 정보가 담겨 있어 부적절
⇒ 2가지의 대안: External Secrets / Sealed Secrets
- External Secrets
⇒ HaschiCorp Valut, AWS Secrets Manager등과 통합 : 다른 스크립트 백엔드와 연결하여 해결
⇒ ExternalSecret 오브젝트를 생성하면 컨트롤러가 프로바이더로부터 기밀 값을 가져와서 Secret 오브젝트 생성
⇒https://github.com/external-secrets/external-secrets
- Sealed Secrets
⇒ 쿠버네티스 클러스터 상에 컨트롤러 실행
⇒ 클러스터 상에 암호화 키 보관
⇒ kubeseal CLI가 컨트롤러와 통신하며 데이터 암호화
⇒ SealedSecret 오브젝트를 생성하면 컨트롤러가 복호화하여 Secret 오브젝트 생성
⇒ https://github.com/bitnami-labs/sealed-secrets
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
* 본 포스팅은 패스트캠퍼스 환급 챌린지를 위해 작성되었습니다.