k8s ingress 를 활용한 가상 호스팅

1. 개요

“knufesta2019.freshtuna.me” 와 “floweryroad-api.freshtuna.me” 로 접근할수 있는 두개의 웹서비스들을 k8s 오브젝트 ingress 를 통해 가상호스팅 하는 예제를 다루어보고자 한다.Image Alt 텍스트

 

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

 

0 0 votes
Article Rating
Subscribe
Notify of
guest

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Scroll to top
0
Would love your thoughts, please comment.x
()
x