1. ingress란
클러스터 외부에서 내부로 접근하는 요청들을 어떻게 처리할지 정의해둔 규칙들의 모음.
외부에서 접근가능한 url을 사용할 수 있게 하고,
트래픽 로드밸런싱도 해주고,
ssl 인증서 처리,
도메인 기반 가상 호스팅을 제공.
ingress 자체는 이런 규칙들을 정의해둔 자원.
실제 동작하게 해주는게 ingress controller.
클라우드서비스를 사용하는것이 아니라면
ingress와 ingress controller를 직접 연동해주어야함.
이때 가장 많이 사용되는게 kubernetes에서 제공하는 ingress-nginx.
2. ingress-nginx 설치, 사용.
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yaml
kubectl expose deploy nginx-ingress-controller --type=NodePort -n ingress-nginx
kubectl apply -f test.yaml
# 확인
kubectl describe ingress test
kubctl apply -f deployments-nginx.yaml
kubectl expose deploy nginx-deployment --name s1
-
test.yaml 내용
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: test annotations: nginx.ingress.kubernetes.io/rewrite-target: / spec: rules: - host: xxx.xxx.xx paths: - path: /foos1 backend: serviceName: s1 servicePort: 80 - path: /bars2 backend: serviceName: s2 servicePort: 80 - host: xxx.xxx.xx http: paths: - backend: serviceName: s2 servicePort: 80
- deployments-nginx.yaml 내용.
kind: Deployment metadata: name: nginx-deployment labels: app: nginx spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80
3. 접근
kubectl get services --all-namespaces
에서 나온 port와 s1에 설정한 host, path를 이용하여
xxx.xxx.xxx:31536/foos1 로 접근 가능.
'우리는 개발자 > Computer' 카테고리의 다른 글
github에서 ssh key 이용하기 (0) | 2019.09.07 |
---|---|
Mysql8 spring boot hibernate 사용하기. (0) | 2019.09.07 |
spring boot servlet-api.jar runtime error / container failed during start / LifecycleException (0) | 2019.09.07 |
maven build project. goal command 정리. (0) | 2019.09.06 |
[AOP] http request에 끼어들기. proceedjointpoint에 parameter전달하기. (0) | 2019.09.04 |