이번 글에서는 쿠버네티스 ingress를 이용해서 nginx서비스를 배포하고 접근하는 방법을 살펴봅니다.
※ pod, deployment, service에 대한 지식 필요
ㅁ 실습환경
- virtualbox로 설치한 쿠버네티스
- master node 1개, worker node 1개
ㅁ 영상: https://youtu.be/ASQ9iuSmnMU
1. 기존 서비스를 이용한 접근
쿠버네티스에서 운영하는 컨테이너에 접근하기 위해서 서비스를 만듭니다. 그리고 "NodeIP:서비스포트"로 컨테이너에 접근하죠. 예를 들어 그림1에서는 NodeIP:32468을 요청하면 서비스에 연동된 nginx컨테이너로 접근합니다.
2. Ingress를 이용한 접근
각 서비스를 생성하고 접근할 때마다 각각 고유한 포트를 입력해줘야 합니다. N개의 서비스에 접근하려면 N개의 포트번호를 관리해야한다는 뜻이죠.
Ingress는 서비스 포트를 적지 않고 경로로 접근(라우팅)하게 해줍니다. 예를 들어 서비스 포트를 입력하는 대신 /Login페이지를 요청하면 서비스1로 연결되고, /Logout페이지를 요청하면 서비스2로 연동을 해주는 역할이 Ingress입니다.
3. Nginx-Ingress Controller 설치
Ingress를 사용하기 위해서는 Ingress-Controller를 설치해야합니다. 간단하게 설치할 수 있는 컨트롤러는 Nginx-controller입니다. 저는 로컬환경에서 쿠버네티스를 운영하기 때문에 문서[1]에서 제공하는 "Bare-metal"설치 방법을 따랐습니다.
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.41.2/deploy/static/provider/baremetal/deploy.yaml
ingress-nginx-controller pod가 running상태이면 설치가 끝난 겁니다.
서비스의 포트를 확인하고 접근이 가능한지 확인합니다. ingress에 서비스가 연동되어 있지 않기 때문에 503에러가 발생한 것이 정상입니다.
4. deployment와 service 생성
nginx이미지를 사용한는 deployment를 생성합니다. 그리고 해당 deployment를 연결시키는 서비스를 생성합니다. 간단한 예제이기 때문에 명령어로 생성했습니다.
kubectl create deploy nginx --image=nginx
kubectl expose deploy nginx --type=NordPort --port=80 --target-port=80
생성한 서비스 포트를 확인하고 접속이 잘 되는지 확인합니다.
5. Ingress 생성
공식문서[2]에서 제공하는 yaml파일을 활용해서 ingress를 생성합니다. host는 별도로 운영체제의 hosts파일을 설정해주셔야 합니다(리눅스: /etc/hosts, 윈도우: c:\Windows\System32\Drivers\etc\hosts).
※아래 ingress설정은 foo.bar.com/abc경로 요청이 오면 nginx서비스 80번 포트로 해당 요청을 넘겨주겠다는 의미입니다.
kind: Ingress
metadata:
name: minimal-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: "foo.bar.com"
http:
paths:
- path: /abc
pathType: Prefix
backend:
service:
name: nginx
port:
number: 80
6. Ingress 접속(연결 요청)
[그림 5]에서 확인한 ingress주소에서 /abc경로를 입력하면 nginx 메인 페이지가 화면에 나옵니다.
7. 참고자료
▶ [1] ingress-controller 설치문서: https://kubernetes.github.io/ingress-nginx/deploy/#bare-metal
▶ [2] ingress공식문서: https://kubernetes.io/ko/docs/concepts/services-networking/ingress/
'전공영역 공부 기록' 카테고리의 다른 글
쿠버네티스 자동 설치 스크립트 (0) | 2020.12.08 |
---|---|
CKA 시험 소개 (0) | 2020.12.04 |
윈도우에서 정지상태인 젠킨스 실행 (0) | 2020.11.18 |
Flask restful API 파일 업로드 구현 (2) | 2020.11.18 |
자바 커스텀예외 생성 (0) | 2020.09.04 |