1. 개요
“knufesta2019.freshtuna.me” 와 “floweryroad-api.freshtuna.me” 로 접근할수 있는 두개의 웹서비스들을 k8s 오브젝트 ingress 를 통해 가상호스팅 하는 예제를 다루어보고자 한다.
2. 인증에 필요한 tls 전용 secret 오브젝트 생성
secret을 생성하기 전에 미리 letsencrypt등을 통해 ssl 를 위한 키를 발급 받아야한다!
kubectl create secret tls freshtuna-me \ --cert cert.pem --key privkey.pem
3. ingress.yaml 작성
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: freshtuna-ingress annotations: ingress.kubernetes.io/rewrite-target: / kubernetes.io/ingress.class: "nginx" spec: tls: - hosts: - "knufesta2019.freshtuna.me" secretName: "freshtuna-me" - hosts: - "floweryroad-api.freshtuna.me" secretName: "freshtuna-me" rules: - host: "knufesta2019.freshtuna.me" http: paths: - path: / backend: serviceName: "knufesta2019" servicePort: 80 - host: "floweryroad-api.freshtuna.me" http: paths: - path: / backend: serviceName: "floweryroad" servicePort: 80
4. 다른 네임스페이스의 서비스 접근을 위한 services.yaml 작성
apiVersion: v1 kind: Service metadata: name: knufesta2019 spec: type: ExternalName externalName: production-was.knufesta2019.svc.cluster.local --- apiVersion: v1 kind: Service metadata: name: floweryroad spec: type: ExternalName externalName: production-was.floweryroad.svc.cluster.local
5. ingress controller 설치 및 작성한 yaml 파일들을 적용
# ingress controller 설치 (url이 달라질수 있으니 확인하고 적용하기!) sudo kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.35.0/deploy/static/provider/baremetal/deploy.yaml # 서비스 생성 sudo kubectl apply -f services.yaml # ingress 적용 sudo kubectl apply -f ingress.yaml