Kubernetes/KoudKloud - CKAD with Tests

Ingress 확인 및 생성

비번변경 2021. 12. 13. 21:58

Ingress란 클러스터 내의 서비스에 대한 외부 접근을 관리하는 개체로, 일반적으로 HTTP를 관리한다.

 

이 글에서는 Ingress 정보를 확인하고 생성하는 명령어에 대해 정리한다.

 

Ingress 목록 확인

get 명령으로 이름, 호스트 등의 정보를 확인할 수 있다.

kubectl get ingresses.networking.k8s.io

kubectl get ingresses.networking.k8s.io

 

Ingress 상세 정보 확인

describe 명령으로 이름, 규칙 등의 상세 정보를 확인할 수 있다.

kubectl describe ingresses.networking.k8s.io --namespace=<NAMESPACE> <NAME>

# 예시
kubectl describe ingresses.networking.k8s.io --namespace=app-space ingress-wear-watch

Ingress 상세 정보 확인

Default backend는 설정되지 않은 경로로 요청이 들어왔을 때의 라우팅 설정이다.

 

Ingress 수정

edit 명령어로 수정할 수 있다.

kubectl edit ingresses.networking.k8s.io --namespace=<NAMESPACE> <NAME>
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-wear-watch
  namespace: app-space
spec:
  rules:
  - http:
      paths:
      - backend:
          service:
            name: wear-service
            port:
              number: 8080
        path: /wear
        pathType: Prefix
      - backend:
          service:
            name: video-service
            port:
              number: 8080
        path: /watch
        pathType: Prefix
      - backend:
          service:
            name: video-service
            port:
              number: 8080
        path: /stream
        pathType: Prefix

 

Ingress 생성

create 명령어 또는 ingress 정의 yaml 파일을 이용해 생성한다. create 명령으로 생성하는 경우에는 --rule 옵션 또는 --default-backend 옵션을 지정해야 한다.

  • 규칙 지정 Ingress 생성
    경로와 라우팅할 서비스와 포트를 지정한다. 설정할 포트는 get service의 실행 결과 중 Port 값에 해당한다.
kubectl create ingress pay-ingress --namespace <NAMESPACE> --rule="</PATH=SERVICE:PORT"

# 예시
kubectl create ingress pay-ingress --namespace critical-space --rule="/pay=pay-service:8282"
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  creationTimestamp: null
  name: pay-ingress
  namespace: critical-space
spec:
  rules:
  - http:
      paths:
      - backend:
          service:
            name: pay-service
            port:
              number: 8282
        path: /pay
        pathType: Exact
status:
  loadBalancer: {}

 

  • default backend 지정 Ingress 생성
kubectl create ingress pay-ingress --namespace <NAMESPACE> --default-backend=<SERVICE:PORT>

# 예시
kubectl create ingress pay-ingress --namespace critical-space --default-backend=pay-service:80
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  creationTimestamp: null
  name: pay-ingress
  namespace: critical-space
spec:
  defaultBackend:
    service:
      name: pay-service
      port:
        number: 80
status:
  loadBalancer: {}