Ingress

2023. 10. 24. 15:01k8s

Ingress

Kubernetes에서 "Ingress"는 HTTP 및 HTTPS 트래픽을 클러스터 내의 서비스로 라우팅하기 위한 리소스를 정의하는 API 오브젝트다. Ingress는 클러스터 외부에서 애플리케이션에 접근할 때 유용한 방법을 제공하며, 서비스 디스커버리 및 로드 밸런싱 기능을 포함하고 있다. Ingress 리소스는 HTTP 및 HTTPS 라우팅 규칙을 정의하고 이를 클러스터 내의 서비스로 연결한다.

 

 

Ingress 주요 기능
  • HTTP 및 HTTPS 경로 기반 라우팅 : Ingress 리소스를 사용하여 특정 URL 경로(예: /app)를 특정 서비스(예: 웹 애플리케이션)로 연결할 수 있다. 이는 여러 서비스를 동일한 도메인에서 호스팅하거나 다른 경로로 분기하는 데 유용하다.
  • 가상 호스트 기반 라우팅 : Ingress 리소스를 사용하여 서로 다른 도메인(가상 호스트)에 대해 다른 서비스로 라우팅할 수 있다. 이를 통해 여러 도메인을 동일한 클러스터에서 호스팅할 수 있다.
  • TLS(Transport Layer Security) 암호화 : Ingress 리소스를 사용하여 HTTPS 트래픽을 처리하고 TLS 암호화를 설정할 수 있다. 이것은 보안 및 개인 정보 보호를 위해 중요하다.
  • 로드 밸런싱 : Ingress 컨트롤러는 여러 Pod 인스턴스 사이에서 트래픽을 분산시키는 로드 밸런서 역할을 수행한다. 이로써 애플리케이션의 가용성과 확장성을 향상시킬 수 있다.

 

 

실습 파일

3-6-1.txt
0.00MB
3-6-2.txt
0.00MB

 

 

실습

ingress 확인

 

ubuntu@ubuntu:~/test$ minikube addons enable ingress

 

pod 확인

 

 

  • echo-v1.yml 내용

3-6-1.txt

 

 

  • echo-v2.yml 내용

3-6-2.txt

 

 

kubectl get all 확인

 

 

kubectl get ing 확인

 

 

  • replica:3 확인

v1.echo.192.168.49.2.sslip.io 접속

 

 

v2.echo.192.168.49.2.sslip.io 접속

 

 

문제

작업 명세 [다음을 만족하는 ingress를 만드시오]

 

Deployment 이름      nginx

Deployment Lable    app:nginx

Deployment 복제수  3

container 이름          nginx

container 이미지      nginx:latest

Igress 도메인           nginx.192.168.49.2.sslip.io

 

 

  • nginx.yml 파일 내용
더보기

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx
spec:
  rules:
    - host: nginx.192.168.49.2.sslip.io
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: nginx
                port:
                  number: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:latest
          livenessProbe:
            httpGet:
              path: /
              port: 80

---
apiVersion: v1
kind: Service
metadata:
  name: nginx
spec:
  ports:
    - port: 80
      protocol: TCP
  selector:
    app: nginx

 

 

  • 제거 작업

kubectl delete all --all

kubectl delete ing <name>

 

 

kubectl apply -f nginx.yml 이후 확인

 

 

ing 확인

 

 

라벨 확인

 

 

터미널에서 'kubectl logs -f <NAME>'을 입력하고 nginx 웹페이지를 새로고침하면 각 pod에 접속되는 것을 로그를 통해 확인 가능

'k8s' 카테고리의 다른 글

probe  (0) 2023.10.25
docker와 kubernetes의 차이점  (0) 2023.10.24
vote  (0) 2023.10.24
wordpress  (0) 2023.10.24
기초 명령어  (0) 2023.10.24