티스토리 뷰
jenkins 와 argocd 를 사용하여 CI/CD를 하는 Gitops를 사용하고 있다
argocd의 경우 배포용 레포가 존재하는데 해당 레포에 시크릿 데이터가 올라간다
레포에 보안을 설정하긴 하겠지만 평문(base64인코딩이며 절대 암호화가 아님)으로 저장되는것이 불안하다면 이미 여러가지 솔루션이 있다
나의 경우 간단하게 도입이가능하고 딱 레포에 시크릿을 암호화하고싶다는 니즈만 있었으므로 Sealed secrets을 사용함
https://github.com/bitnami-labs/sealed-secrets/
간단한 설치 매뉴얼은 깃허브를 참고하고
아래는 사용법
sealed-secrets 사용
kubeseal클라이언트 필요(설치법 레포에)
sealed-secret 컨트롤러를 쿠버네티스 내부에 배포하고 해당 컨트롤러에 인증서로 secret파일을 암호화(클라이언트 이용)하여 git에 업로드
argocd에서 해당 git에있는 암호화된 secret을 생성하면 자동으로 sealed-secret컨트롤러가 복호화하여 클러스터 내부에 생성 함
원본 시크릿
apiVersion: v1
data:
DB_USERNAME: YWks
DB_PASSWORD: UlZDbjR0aWVa
kind: Secret
metadata:
name: server-secret
namespace: default
암호화 수행
cat sec.yaml | kubeseal -oyaml > secret.yaml
암호화된 시크릿
kind가 변경됨
apiVersion: bitnami.com/v1alpha1
kind: SealedSecret
metadata:
creationTimestamp: null
name: server-secret
namespace: default
spec:
encryptedData:
DB_PASSWORD: AgBplEJ85a/LChc8IfF0Z5XSzpJ7wUeesMgcqvPfbC3oPT6mrUH5Rl7ictQb1UY7RclNXpCdIOdF4+C6cDSDBB53CAx1W+eGOuCMiryyBb3Wib5S5CDuvtJMwKsH2NPjnHvEyDA9L2t5z3jbGhfL5QQXqQTOb2Xic0uUZ4ZVFF+b11Mb6z/c8S9WbXCVnKUTFsEPk7jNB/CYpY+/UcU5/M3iz2TxRq3WWn1JtdKewqUGBIkcOryHDtY9CQ65Q9hjWYp88ystuhiuF2cji5dWD+XOEqSSN5CeG42LpPSnh/SBTeSLvSG08lgfivpBkx3f06M7sQfOXcNWuXoCv64qFBSf0aKtv4+ftWV4vNSA9hqo9SYBASMOBOVCUzddKGLNOxEanZsUZcKyu9zbOSpzwdWAjJCW/6wQaMy3pIBCv4w0S7WLdVy3+G4JbYQQ5YvvkqkaJDEuj6TkEDOi6yNxPxU5JYCRAP3OsExD750Q2nC7qbnb3gPwMtg1jQvEMM+DahTBH+bjrSKwnjiZO1Ls46R8zshPY2C2Z/xDFv4W8OC/jZfRWPpJY/4Gh1YAr+qb75mQFe4Xk6NwjDrMzjaAIB1y2GfiXhDN7txuzzTsERTwifjcBGpyjjgq44l6P6iKxNM3bRT4aSYkmALGjKivWwAeB8h+bF7J20OLwrs7MxdH4QoRsQZFwV8ojM9jRrNQFIQSOIa5R/Jb/7CaDYys5+c/vVBqkA==
DB_USERNAME: AgCe1Px5PxeF2QO58kqDYOa3jAK6mY/zvTcN+76SexlKc52unHrTf4+C2z49186U2LaN6K62xNwSjUleo1bd/vNLgoDX/ty7GKMP9XUV93fvzApNOKu1YnCuoyux12f7jTHt12B0K9StRTuZ719lneuwjPe6UzxI6DsxUAzHNfJQMvKei+k9anuGB6sjc1y5O+SyRhIjTyDsgVDcn2dpVsX6yoc16fQFq25XKsBF4oBREF6EAzTRkE4wwq2OXV38C5u41ER7T9X8CBi9sdG60ehOsAYeZ79NimaDRTTJCUnhbJuOuHU3Y5NSwvo+cNf2WbAA6hOT7Th/xS0KhpEDJ1vnpz8q+rBQviMi8JTNpzsByB3ggzks/iAduuhjbO7cYjqXSdhsajvxHAIquKEL2wX/azEWBTckI6pW05ci5FCXVjslabFdo1qC/vZcoBufhCvtD5Ogj8eZVfEBN0oKSmAgFDF805QfGcFUkd7OU8XApSCUHqm7+HzJNCTb+rzaAEWRfKwk9u5Kxto+RoMrmgLckp9UFd4Arluz8bEyoamDMnl+QWp2/W3HbJT4dnbKx7S+axyv4tL+4qFQF6n40l+ItC81xzLrAaubU7lQWFJqNCxyKAZZG3AquCApkOA+pQTDpHYe+ww8MHGbt7VqGxcgFTTUjOTB9fzV5stVEfz+jJPX+S2QLOIl4HGZbsvDKcNJDBxIog==
template:
data: null
metadata:
creationTimestamp: null
name: server-secret
namespace: default
위와같이 암호화 해서 레포에 올린다면 안전하다
이외에도 볼트나 여러가지 옵션이 있는데 아래 페이지에서 확인가능
https://argo-cd.readthedocs.io/en/stable/operator-manual/secret-management/
'클라우드 > 쿠버네티스' 카테고리의 다른 글
ingress-alb 사용시 한개의 alb로 여러 네임스페이스 적용 (0) | 2022.05.24 |
---|---|
alb ingress redirect관련 manifest 변경 (0) | 2022.05.24 |
EKS 기본 SC는 CSI가 아님 (0) | 2022.05.24 |
Pod Disruption Budgets (0) | 2022.05.24 |
NLB LoadBalancer에 ip제한 하는법 (0) | 2022.05.24 |