[K8S] ingress 인증서 교체

JANUARY 27, 2022

■ 도메인에 적용되어 있는 인증서 확인 방법 1. openssl로 인증서 확인

$ openssl s_client -showcerts -connect {ip}:443 -servername {domain-name}

2. pem 인증서 디코딩 사이트에서 확인 https://www.sslcert.co.kr/tools/certificate-crt-decoder


■ 인증서 교체

  • 인증서는 secret에 넣어 ingress 리소스 파일에 tls secret name을 매핑하는 방식을 사용했다.

1. 인증서 다운로드 및 key 파일 암호화 풀기

  • 인증서 갱신 또는 재발급 후 인증서/키파일 다운로드
  • 키파일이 암호화가 걸려있을 경우 복호화
$ openssl rsa -in {key파일} -out {output 파일명}
Enter pass phrase for {key파일} : pass phrase 입력
writing RSA key

2. secret 생성

# secret 생성
$ kb create secret tls {secret-name} --key {key파일} --cert {pem파일} -n {namespace}

# yaml 파일 생성
$ kb create secret tls {secret-name} --key {key파일} --cert {pem파일} -n {namespace} --dry-run=client -o yaml > secret.yaml

3. secret 확인

$ kb get secret -n dev

NAME                       TYPE                                  DATA   AGE
secret-name                kubernetes.io/tls                     2      7d20h

4. ingress resource 수정 후 적용

■ ingress resource에서 secretName 수정 후 적용

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
spec:
  tls:
  - hosts:
    - example.foo.com
    secretName: {secret-name}

■ ingress 적용

$ kb apply -f ingress.yaml

■ 인그레스 목록 확인

$ kb get ing -n dev

NAME           CLASS    HOSTS                       ADDRESS         PORTS     AGE
ingress-name   <none>   onepass-app.dev.kakaoi.ai   10.183.xx.xx    80, 443   7d19h

■ ingress 상세 내용 확인

$ kb describe ing {ingress-name} -n {namespace}

Name:             ingress-name
Namespace:        namespace
Address:          10.183.xx.xx
Default backend:  default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
TLS:
  wild-dev-kakaoi-ai terminates onepass-app.dev.kakaoi.ai
Rules:
  Host                       Path  Backends
  ----                       ----  --------
  onepass-app.dev.kakaoi.ai  
                             /   fifi-app:80 (192.168.46.228:8080)
  ...

참고

ingress troubleshooting


작업 기록 블로그