상현에 하루하루
All 개발자의 하루

traefik ingress cert-manger 조합에서 traefik만 사용하는 방법으로 변경

( 업데이트: )
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: echo-server-ingressroute
spec:
  entryPoints:
    - web
    - websecure
  routes:
    - match: Host(`[YOUR_DOMAIN]`)  # 호스트 이름을 여기에 입력하세요
      kind: Rule
      services:
        - name: echo-server
          port: 80

echo-server-ingress.yaml 파일을 traefik의 리소스인 ingressRoute로 변경한다.

cert-manager traefik에서 관리하도록 변경

tls-issuer.yaml tls-cert.yaml

두가지에서 만든 issuer랑 Certificate 리소스는 제거해주면된다.

Certificate 리소스는 특별히 TLS 인증서를 관리하는데 사용되지만 ingressRoute에서 발급자를 구성하는데는 필요하지 않다.

IngressRoute의 tls 섹션에서 참조하는 발급자는 TLS 인증서를 얻고 관리하는 방법을 지정하는데 사용됩니다. 별도로 정의한 발급자 또는 ClusterIssuer 리소스를 참조할 수 있습니다.

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: echo-server-ingressroute
spec:
  entryPoints:
    - web
  routes:
    - match: Host(`YOUR_HOSTNAME`)
      kind: Rule
      services:
        - name: echo-server
          port: 80
  tls:
    certResolver: letsencrypt-prod

아니었다. cert-manager는 필요없다

docker-compose의 traefik을 사용할때도 가능했던것이 kubernetes로 옮겨간다고 안되는 것이 이상했다.

traefik 자체도 ACME 프로토콜을 지원한다. let’s encrypt나 기타 ACME 호환 인증기관에서 직업 TLS 인증서를 요청하고 검증할 수 있습니다. 이 경우, Traefik의 certResolvers 설정에서 ACME에 필요한 정보를 제공하면 됩니다.

따라서, Traefik를 사용하면서 인증서를 직접 관리하면, cert-manager는 필수적이지 않습니다. 하지만 cer-manager를 사용하면 인증서 수명주기를 관리하는데 있어 좀더 많은 유연성을 제공하고, 더 많은 인증기관과 호환성을 보장할 수 있습니다.

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: echo-server-ingressroute
spec:
  entryPoints:
    - web
  routes:
    - match: Host(`YOUR_HOSTNAME`)
      kind: Rule
      services:
        - name: echo-server
          port: 80
  tls:
    certResolver: letsencrypt-prod << 여기서 certResolver는 kubernetes 리소스에서 관리하는 것이 아닌 traefik에서 관리하는 리소스이고 여기에 등록된 certReolsver는 traefik 내부 설정의 certResolver였다.