반응형
Ingress 란?
외부 클라이언트가 k8s 클러스터 내부의 서비스에 접근할 수 있도록 도와주는 API 객체 입니다.
Ingress의 주요 기능을 알아보면
- URL 및 호스트 기반 라우팅
URL 경로에 따라 다른 서비스로 라우팅을 할 수 있습니다. - TLS(HTTPS) 지원
TLS 인증서를 설정하여 HTTPS 트래픽을 처리할 수 있습니다. - 로드밸런싱
로드 밸런싱을 통해 트래픽을 여러 파드로 분산시킬 수 있습니다. - Ingress는 애플리케이션 계층 (HTTP)에서 작동하여 Service가 할 수 없는 쿠키 기반 세션 어피니티 등과 같은 기능을 제공합니다.
Ingress를 설치하여 실습을 통해 좀 더 자세하게 알아보겠습니다.
우선 Ingress를 사용하려면 Ingress-Controller가 필요합니다.
저는 Helm 차트를 통해 Nginx-Ingress-Controller를 설치하였습니다.
Helm 설치
Helm 공식 홈페이지에 설치 방법이 나와있습니다.
# curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3
# chmod 700 get_helm.sh
# ./get_helm.sh
Nginx-Ingress 설치
Helm 차트를 통해서 설치해보도록 하겠습니다.
# kubectl create namespace nginx-ingress
# helm repo add nginx https://helm.nginx.com/stable
# helm install my-nginx-ingress nginx/nginx-ingress --version 1.4.0 --namespace nginx-ingress
설치가 완료되면 아래 이미지와 같이 설치가 됩니다.
Ingress 테스트
이제 Ingress를 생성하여 테스트 해보겠습니다.
아래 yaml 파일의 내용 대로 Ingress를 생성 해보았습니다.
설명을 덧붙혀보자면,
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: my-ingress spec: ingressClassName: nginx rules: - host: kubia.example.com http: paths: - path: / pathType: Prefix backend: service: name: kubia-manual port: number: 80
- ingressClassName: nginx
=> 앞서 설치한 Ingress-Controller의 이름을 적어주면 됩니다.
- host: kubia.example.com
=> host에 적힌 도메인은 현재 사용하고 있는 DNS 서버에 정의 되어야 합니다.
- 그리고 생성한 서비스 이름과 사용되는 Port를 적어주면 됩니다.
이제 curl 명령어로 확인해봅니다.
# curl http://kubia.example.com
이번엔 TLS 트래픽 처리하도록 Ingress 구성 해보도록 하겠습니다.
먼저 key와 cert파일을 생성해주도록 하겠습니다.
# openssl genrsa -out tls.key 2048
# openssl req -new -x509 -key tls.key -out tls.cert -days 360 -subj "/CN=kubia.example.com"
생성한 key, cert 파일로 Secret을 생성 해줍니다.
# kubectl create secret tls tls-secret --cert tls.cert --key tls.key
secret 생성 확인
# kubectl get secret
이제 Ingress.yaml 파일을 수정 해줍니다.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
ingressClassName: nginx
tls: # tls 부분 설정 추가
- hosts: # tls 설정할 hosts 지정
- kubia.example.com # tls 설정할 hosts 지정
secretName: tls-secret # 앞서 생성한 Secret 지정
rules:
- host: kubia.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: kubia-manual
port:
number: 80
결과 확인
# curl -k -v https://kubia.example.com
이상 입니다.
참고
Kubernetes-In-Action 책에 있는 내용을 참고 하였습니다.
반응형
'쿠버네티스 > 이론' 카테고리의 다른 글
쿠버네티스 퍼시스턴트볼륨(PV) 퍼시스턴트볼륨 클레임(PVC) 이란? (0) | 2024.11.12 |
---|---|
쿠버네티스 Volume 이란? (0) | 2024.11.11 |
쿠버네티스 Service 란? (0) | 2024.11.01 |
쿠버네티스 Job 리소스 란? (0) | 2024.10.31 |
쿠버네티스 라이브니스 프로브, 데몬셋 이란? (0) | 2024.07.18 |