본문 바로가기
INFRA/DevOps

Ingress 란? - 1

by BTC_룰루랄라 2022. 6. 27.

반갑습니다!

💙베하💙 누구든 탑승할 수 있는 유임승차 팀의 BTC 룰루랄라 입니다!!💨😉

 

저번 포스팅은 쿠버네티스 기능 중 하나인 Service에 대해서 설명 드렸는데요~

이번 포스팅에서는 Kubernetes의 Ingress에 대해서 추가적인 기능에 대해서 설명해 드리겠습니다.

 

이제 쿠버네티스 기능에 대해서 막바지로 달려가고 있네요~

그럼 시작해 보겠습니다!

룰루랄라~♬

 

 

 

⚡️ 목표

도메인을 이용하여 서로 다른 서비스에 접근하는 방법을 알아봅니다.

하나의 클러스터에서 여러 가지 서비스를 운영한다면 외부 연결을 어떻게 할까요? NodePort를 이용하면 서비스 개수만큼 포트를 오픈하고 사용자에게 어떤 포트인지 알려줘야 합니다. 그럴순 없죠!

위 샘플은 example.com, subicura.com/blog, subicura.com/help 주소로 서로 다른 서비스에 접근하는 모습입니다. 80(http) 또는 443(https) 포트로 여러 개의 서비스를 연결해야 하는데 이럴 때 Ingress를 사용합니다.

 

#Ingress 만들기

echo 웹 애플리케이션을 버전별로 도메인을 다르게 만들어 보겠습니다.

minikube ip로 테스트 클러스터의 노드 IP를 구하고 도메인 주소로 사용합니다. 결과 IP가 192.168.64.5라면 사용할 도메인은 다음과 같습니다.

 

TIP

도메인을 테스트하려면 여러가지 설정이 필요합니다. 여기서는 별도의 설정없이 IP주소를 도메인에 넣어 바로 사용할 수 있는 sslip.io (opens new window)서비스를 이용합니다.

#minikube에 Ingress 활성화하기

Ingress는 Pod, ReplicaSet, Deployment, Service와 달리 별도의 컨트롤러를 설치해야 합니다. 여러 가지 컨트롤러 중에 입맛에 맞게 고를 수 있는데 여기서는 nginx ingress controller를 사용합니다.

Ingress Controller

nginx를 제외한 대표적인 컨트롤러로 haproxy, traefik, alb등이 있습니다.

minikube addons enable ingress

# ingress 컨트롤러 확인
kubectl -n ingress-nginx get pod

실행 결과

NAME                                        READY   STATUS      RESTARTS   AGE
ingress-nginx-admission-create-n2684        0/1     Completed   0          96s
ingress-nginx-admission-patch-thq42         0/1     Completed   1          96s
ingress-nginx-controller-6d5f55986b-jkcfs   1/1     Running     0          96s

잘 설정 되었는지 확인합니다.

curl -I http://192.168.64.5/healthz # minikube ip를 입력

Docker

Docker driver를 사용중이라면 minikube service ingress-nginx-controller -n ingress-nginx --url 명령어를 이용하여 접속 주소를 확인합니다.

🏃  Starting tunnel for service ingress-nginx-controller.
|---------------|--------------------------|-------------|------------------------|
|   NAMESPACE   |           NAME           | TARGET PORT |          URL           |
|---------------|--------------------------|-------------|------------------------|
| ingress-nginx | ingress-nginx-controller |             | http://127.0.0.1:51728 |
|               |                          |             | http://127.0.0.1:51729 |
|---------------|--------------------------|-------------|------------------------|
http://127.0.0.1:51728
http://127.0.0.1:51729

다음과 같이 출력된다면 첫번째 항목을 테스트 주소로 사용합니다. curl -I http://127.0.0.1:51728/healthz

실행 결과

HTTP/1.1 200 OK
Date: Sat, 05 Dec 2020 13:53:37 GMT
Content-Type: text/html
Content-Length: 0
Connection: keep-alive

 

자 지금까지 Ingress의 기본적인 사용법에 대해서 알아보았는데요

다음 시간에는 Ingress에 대해서 좀 더 심층적으로 들어가 보겠습니다.

 

감사합니다!!

'INFRA > DevOps' 카테고리의 다른 글

[Docker] Docker container resource 관리  (0) 2022.07.05
Github의 이해 1  (0) 2022.07.01
[Docker] Container Registry & Container 사용  (0) 2022.06.27
DevOps 엔지니어  (0) 2022.06.23
[Docker] Docker container 생성  (0) 2022.06.21

댓글