Kubernetes 인그레스(Ingress), 로드밸런서 LoadBalancer, metallb

2024. 2. 2. 10:12·Cloud & Architecture/Kubernetes
728x90

 

Ingress, Ingress Controller

    • 인그레스를 사용하면 L7의 웹 요청을 해석해서 단일 IP, 단일 포트로 다수의 도메인과 서비스로 연결할 수 있음
    • 쿠버네티스에서 기본적으로 지원하는 인그레스 오브젝트는 클라우드 환경이 아니면 사용할 수 없음
    • 클라우드에서 인그레스를 생성하면 외부에 게이트웨이를 생성하고 각 기능에 맞게 서비스에 연결
    • 쿠버네티스에서 Ingress를 사용하기 위해서는 두 가지가 필요
      1. 첫 번째는 YAML 파일에서 kind: Ingress 로 정의되는 Ingress 오브젝트
      2. 두 번째는 Ingress 규칙이 적용될 Ingress Controller
YAML 파일로부터 Ingress를 생성해도 아무 일도 일어나지 않음
Ingress는 단지 Ingress 규칙을 정의하는 선언적인 오브젝트일 뿐,외부 요청을 받아들이는 실제 서버가 아니기 때문
  • Ingress는 Ingress Controller라고 하는 특수한 서버 컨테이너에 적용되어야만 Ingress에 적용된 규칙이 활성화됨
  • Ingress Controller가 외부로부터 네트워크 요청을 수신했을 때, Ingress 규칙에 기반해 이 요청을 어떻게 처리할지를 결정

 

1. 인그레스 생성

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: service-ingress
  annotations:
    kubernetes.io/ingress.class: "nginx"
    ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/enable-cors: "true"
    nginx.ingress.kubernetes.io/proxy-read-timeout: "300"
    nginx.ingress.kubernetes.io/proxy-send-timeout: "300"
    nginx.ingress.kubernetes.io/proxy-connect-timeout: "300"
    nginx.ingress.kubernetes.io/proxy-body-size: "100m"
spec:
  rules:
    - http:
        paths:

          - path: /auth
            pathType: Prefix
            backend:
              service:
                name: auth-service
                port:
                  number: 80
          - path: /sending
            pathType: Prefix
            backend:
              service:
                name: sendmanager-service
                port:
                  number: 80

https://github.com/Guts-Gun/KITe_ArgoCD/blob/main/service/ingress-setting.yaml

 

2. 인그레스 컨트롤러 설치: Nginx Ingress Controller 생성

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

controller pod가 실행됨

kubectl get ingress # service-ingress
kubectl get service -n ingress-nginx #ingress-nginx-controller

https://github.com/Guts-Gun/KITe_ArgoCD/blob/main/ingress/ingress-nginx.yaml

 

3. metalLB 설치

kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.9.5/manifests/namespace.yaml

https://github.com/Guts-Gun/KITe_ArgoCD/tree/main/metallb

 

4. External IP Pool을 담을 configmap을 생성

apiVersion: v1
kind: ConfigMap
metadata:
  namespace: metallb-system
  name: config
data:
  config: |
    address-pools:
    - name: default
      protocol: layer2
      addresses:
      - 10.95.90.50-10.95.90.70

 

5. 배포 확인

kubectl get all -n metallb-system

 

6. nginx-ingress에서 External IP 할당 받기

kubectl edit svc -n ingress-nginx ingress-nginx-controller
 selector:
    app.kubernetes.io/component: controller
    app.kubernetes.io/instance: ingress-nginx
    app.kubernetes.io/name: ingress-nginx
  sessionAffinity: None
  type: LoadBalancer

 

 

 

728x90
'Cloud & Architecture/Kubernetes' 카테고리의 다른 글
  • GCP GKE Kubernetes 인그레스(Ingress), 노드포트(Nodeport) 접속
  • 쿠버네티스(Kubernetes) 배포 업데이트, 롤백
  • GCP Kubernetes GKE Pod 레플리카셋, Deployment
  • GCP Kubernetes GKE Pod 생성, 배포, 접속
Karla Ko
Karla Ko
𝘾𝙤𝙣𝙩𝙞𝙣𝙪𝙤𝙪𝙨𝙡𝙮 𝙄𝙢𝙥𝙧𝙤𝙫𝙞𝙣𝙜, 𝘾𝙤𝙣𝙨𝙩𝙖𝙣𝙩𝙡𝙮 𝘿𝙚𝙫𝙚𝙡𝙤𝙥𝙞𝙣𝙜 𝙔𝙚𝙨!
    250x250
  • Karla Ko
    karlaLog
    Karla Ko
  • 전체
    오늘
    어제
    • Total (467)
      • Spring (19)
      • JPA (4)
      • Cloud & Architecture (15)
        • Kubernetes (5)
        • Docker (3)
        • MSA (2)
        • GCP (1)
        • AWS (4)
      • Devops (1)
      • Message Queue (4)
        • Kafka (2)
        • RabbitMQ (2)
      • Git (4)
      • DB (4)
      • Java (9)
      • Python (4)
      • CS (11)
        • OS (8)
        • Network (2)
        • Algorithm (1)
      • Coding Test (392)
        • programmers (156)
        • Graph (43)
        • DP (37)
        • Search (31)
        • Tree (13)
        • Data Structure (26)
        • Combination (12)
        • Implement (18)
        • Geedy (23)
        • Sort (7)
        • Math (21)
        • geometry (2)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    큐
    최대공약수
    DP
    구현
    재귀
    Algorithm
    최소신장트리
    BFS
    덱
    조합
    월간코드챌린지
    프로그래머스
    알고리즘
    그리디
    구간합
    동적계획법
    최단거리
    DFS
    이분탐색
    백준
    스택
    플로이드워셜
    트리
    파이썬
    힙
    LIS
    그래프
    자료구조
    정렬
    다익스트라
  • hELLO· Designed By정상우.v4.10.3
Karla Ko
Kubernetes 인그레스(Ingress), 로드밸런서 LoadBalancer, metallb
상단으로

티스토리툴바