아래 과정을 겪으면서 nginx와 한참 싸우던 어느날, k8s 클러스터 위에 배포한 앱들에 https가 적용되지 않는 현상을 발견했다.
https://kyumcoding.tistory.com/119
처음에는 너무 어이가 없었다. 분명 옛날 코드 그대로 해서 ingress를 만들었는데? certificate로 잘 만들었는데...? 심지어 certificate 조회했을 때 true로 상태도 좋은데...?
오랜시간 디버깅을 해보면서 결국 원인을 발견했다. 뭐가 잘못되었는지 알겠나요..? ㅎㅎ
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-bows
spec:
acme:
email: email@email.com
privateKeySecretRef:
name: letsencrypt-bows
server: https://acme-staging-v02.api.letsencrypt.org/directory
solvers:
- http01:
ingress:
class: traefik
네, server에 acme-staging 즉 staging url을 적어둔 것이 문제였다. 예전에 뭐 잘되는지 테스트 좀 해보겠다고 staging url로 적어놓은 것을 까맣게 잊고 있었던 것이다.
이때 확실하게 느꼈다. 인프라도 형상 관리해야 하는구나... 그리고 그것을 자동화할 필요가 있구나...
그래서 미루고 미루던 argocd 적용을 시작했다(근데 확실히 필요성을 느끼고 사용하기 시작하니까 좋다)
이전에 argocd를 잠깐 다룬적이 있다. 설치와 https로 웹브라우저 접속하는 방법은 아래 글을 참고하면 된다.
https://kyumcoding.tistory.com/110
1. GitHub에 관리하고자 하는 인프라 형상을 올려둔다
ArgoCD는 helm이나 json 등에 대해서도 관리를 해주지만, 나의 경우 manifest 특히 프로젝트와 관련있는 manifest들을 관리하기 위해 사용했다. GitHub에 mainifest 폴더와 나를 괴롭혔던 cluster issuer에 대한 manifest를 업로드 한다.
2. ArgoCD에 내 GitHub Repository를 등록한다
사진처럼 Settings의 Repositories에서 어느 GitHub Repoistory를 참고해야 할지를 등록한다.
이때 Project는 default로 설정했는데, 만약 하나의 프로젝트를 생성해서 argocd의 배포와 역할 등을 세밀하게 제어하고 싶다면 settings의 Projects를 클릭하여 생성, 등록해주면 된다. 이 블로그 포스트에 자세히 설명되어 있으니 참고하면 좋을 것 같다. 나의 경우 시도하다가 굳이 지금 단계에서는 필요없을 것 같아 default project에 진행했다.
Type에 git을 선택하고 쭉쭉 필요한 정보들을 적는다
등록할 때 Automating Self-Healing, Automatic Pruning 등의 옵션을 선택할 수 있다. 해당 옵션에 대해서는 아래에 잘 설명되어 있다. 나는 인프라의 형상을 GitHub로 관리한다는 목적이 있었기 때문에, GitHub에 업로드 되어 있는대로 인프라가 유지되는 것을 도와주는 두 옵션을 모두 켰다
https://argo-cd.readthedocs.io/en/stable/user-guide/auto_sync/
열심히 설정해주고 CREATE를 누르면 아래와 같이 등록이 된다
3. 등록된 Repository에 있는 Manifest 배포하기
Applications에서 '+ NEW APP' 버튼을 눌러 필요한 정보를 입력한 뒤 GitHub에 업로드 되어 있는 manifest를 애플리케이션으로 배포한다. 어느 브랜치와 어떤 디렉토리를 봐야할지, 어느 클러스터에 배포할지 등을 적어준다(클릭하면 기본값 등이 나오니 그것을 이용하면 편하게 빈칸들을 채울 수 있다)
잘 적어주고 CREATE를 누르면 짠 하고 manifest에 적힌 내용들이 k8s 클러스터에 배포된다
클릭해보면 아래와 같이 조금 더 상세하게 배포 현황을 볼 수 있다
k8s 클러스터에도 확인해보면, 내가 정의한대로 cluster issuer가 잘 배포된 것을 확인할 수 있다.
ArgoCD는 기본적으로 3분마다 Git의 diff를 감지하고 diff가 발생했을 경우 Git에 맞춰 인프라 배포 상황을 동기화한다. 만약 이 시간을 조정하고 싶으면 별도로 sync 옵션을 조작한다.
'프로젝트 일지 > BoWS' 카테고리의 다른 글
PV - PVC를 사용하면서 주의할 점 - 데이터가 남아있는 경우 (2) | 2024.09.05 |
---|---|
Nginx에서 뒷단의 서비스와 Https 통신하려 할 때 겪는 문제들 (0) | 2024.08.30 |
Synology NAS NFS 기반 PV 생성하기 (0) | 2024.08.17 |
자체 제작 KaaS에서 배포된 애플리케이션의 상태 보여주기 (0) | 2024.08.12 |
kubernetes java client를 사용하여 springboot에서 k8s 제어하기 (0) | 2024.08.09 |