
원래 계획은 cert-manager와 Let's Encrypt를 이용해
자동으로 TLS 인증서를 발급받고 관리하는 구조를 만들고 싶었다.
하지만 다음과 같은 클러스터 특성상 제약으로 인해 사용할 수 없었다.
HTTP-01 인증 방식 사용 불가
/.well-known/acme-challenge 경로로 인증 요청을 보내고,cm-acme-http-solver Pod가 특정 노드에만 생성되어야 했음
cpu-node1에만 할당되어 있음.cpu-node1에서 실행되도록,cert-manager 설정 파일에 다음처럼 node affinity 조건을 명시했다.podTemplate:
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- cpu-node1
하지만 cert-manager Helm Chart에서는 이 설정이 잘 먹히지 않거나,
버전에 따라 달라서 완벽하게 제어하기가 어려웠다.
openssl req -x509 -nodes -days 365 \
-newkey rsa:2048 \
-keyout tls.key \
-out tls.crt \
-subj "/CN=api.hufspetition.hufs.ac.kr" \
-addext "subjectAltName=DNS:api.hufspetition.hufs.ac.kr"
kubectl create secret tls hufspetition-selfsigned-tls \
--cert=tls.crt \
--key=tls.key
curl -k https://<노드 IP>:32710 요청이 계속 실패아니 그러니까 let's encrypt로 요청을 보내는 건 되는데 응답이 자꾸 안넘어왔다.
속이 터질 지경에 이르러서 결국 교수님 몰래 일을 저지르고 마는데...

이 문제를 해결하고 돌아오겠습니다..
돌아올 수 있겟지..?