본문 바로가기

docker & kubernetes

쿠버네티스 인그레스 설정

참조

 

1

https://kubernetes.io/ko/docs/concepts/services-networking/ingress-controllers/

 

인그레스 컨트롤러

인그레스 리소스가 작동하려면, 클러스터는 실행 중인 인그레스 컨트롤러가 반드시 필요하다. kube-controller-manager 바이너리의 일부로 실행되는 컨트롤러의 다른 타입과 달리 인그레스 컨트롤러

kubernetes.io

https://kubernetes.github.io/ingress-nginx/deploy/

 

Installation Guide - NGINX Ingress Controller

Installation Guide Attention The default configuration watches Ingress object from all namespaces. To change this behavior use the flag --watch-namespace to limit the scope to a particular namespace. Warning If multiple Ingresses define paths for the same

kubernetes.github.io

 

2

https://kubernetes.io/ko/docs/concepts/services-networking/ingress/

 

인그레스(Ingress)

FEATURE STATE: Kubernetes v1.19 [stable] 클러스터 내의 서비스에 대한 외부 접근을 관리하는 API 오브젝트이며, 일반적으로 HTTP를 관리함. 인그레스는 부하 분산, SSL 종료, 명칭 기반의 가상 호스팅을 제공

kubernetes.io

 

https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#custom-nginx-upstream-hashing

 

Annotations - NGINX Ingress Controller

Annotations You can add these Kubernetes annotations to specific Ingress objects to customize their behavior. Tip Annotation keys and values can only be strings. Other types, such as boolean or numeric values must be quoted, i.e. "true", "false", "100". Ca

kubernetes.github.io

 

 

1 컨트롤러 

 

# 인그레스를 사용하기 위해 베어메탈 컨트롤러 추가

# 컨트롤러가 설치되면 서비스가 생성되며 접근시 404 확인

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.46.0/deploy/static/provider/baremetal/deploy.yaml  

 

2 인그레스

 

인그레스 추가하여 로드밸런서 테스트 하기 

 

# 테스트용 웹앱 배포( nginx 공용이미지 ) 

# 컨테이너 구분 하기위해서 인덱스 페이지 수정해야하는데 기존에 테스트 하던 hello-node 경우 js 파일을 수정하고 재시작 해줘야해서 컨테이너가 종료되어 nginx 사용

# 배포 후 edit로 해당 deploy의  replicas = 2 수정하여 파드 추가

kubectl create deploy nginx --image=nginx

 

# 각각 파드 터미널 접속 후 패키지 툴 업데이트 및 vim 설치

# /usr/share/nginx/html/index.html  구분할 수 있게 수정 

kubectl exec < pod name > -it -- bash

apt-get update && apt-get install -y vim

 

# 상단 인그레스 링크에서 예제 참고하여 yaml 작성 후 ingress 리소스 생성

# 하단 이미지 address 경우 GCP 사용중이라 내부 아이피가 할당됨 외부는 34.64.184.42

kubectl apply -f ingress

 

 

# 브라우저에서 새로고침 테스트

 

# 로드밸런서 방식 변경 클라이언트 아이피( ${remote_addr} ) 기준( 기본값 라운드 로빈 ) 여기서 말하는 클라이언트 아이피는 실제 사용자 아이피가 아니고 머신 아이피에 해당한다  

# 2번째 어노테이션 링크 참고

# edit로 해당 인그레스 annotations에 아래 업스트림 추가 

nginx.ingress.kubernetes.io/upstream-hash-by: ${ remote_addr }

노드 아이피에 파드 하나가 할당 되어 진다 (아이피 = 42 마스터 머신 , 56 워커 머신)

 

'docker & kubernetes' 카테고리의 다른 글

kubernetes web/was 구성  (0) 2021.06.29
kubernetes deshboard 외부 접근  (0) 2021.06.11
쿠버네티스 배포와 노출  (0) 2021.05.25
쿠버네티스 설치 및 설정 2부  (0) 2021.05.11
쿠버네티스 설치 및 설정 1부  (0) 2021.05.03