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
Code language: YAML (yaml)
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
Code language: YAML (yaml)
아니었다. 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였다.
Code language: YAML (yaml)