open:networking-ingress

networking Ingress

  • 인그레스를 사용하기 위해서는 K8s 클러스터상에 인그레스 컨트롤러가 동작하고 있어야 한다
  • 인그레스는 URL의 경로와 애플리케이션을 매핑해 주는 리버시 프록시다
  • 하나의 IP 주소에 여러 개의 도메인 이름을 등록하여, 도메인 이름에 대응하는 애플리케이션을 정의할 수 있다
  • 서버 인증서를 등록하면 SSL/TLS 암호화, 즉 HTTPS를 통한 접속이 가능해진다
  • 인그레스의 세션 어피니티 기능은 로드밸런서에 의존하는 레거시 웹 애플리케이션을 쿠버네티스에서 돌릴 때 유용하게 사용될 수 있다
  • NGINX 인그레스 컨트롤러와 kube-keppalived-vip를 사용하면 VIP를 공유하는 노드로 HA 구성이 가능하다

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: hello-ingress
  annotations:
    kubernetes.io/ingress.class: 'nginx'
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: abc.sample.com
    http:
      paths:
      - path: /
        backend:
          serviceName: helloworld-svc
          servicePort: 8080
      - path: /apl2
        backend:
          serviceName: nginx-svc
          servicePort: 9080
  - host: xyz.sample.com
    http:
      paths:
      - path: /
        backend:
          serviceName: java-svc
          servicePort: 9080

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: hello-ingress
  annotations:
    # kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
    - host: abc.sample.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: helloworld-svc
                port:
                  number: 8080
          - path: /apl2
            pathType: Prefix
            backend:
              service:
                name: nginx-svc
                port:
                  number: 9080
    - host: xyz.sample.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: java-svc
                port:
                  number: 9080

주요 항목 설명
apiVersion networking.k8s.io/v1beta1
kind Ingress 설정
metadata.name 인그레스 오브젝트의 이름
metadata.annotations 인그레스 컨트롤러 설정에 사용
https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/
spec 인그레스 사양
주요 항목 설명
rules DNS명과 백엔드 서비스를 대응시키는 규칙 목록
이 규칙에 맞지 않는 요청은 디폴트 백엔드라는 파드에 전송됨
tls TLS 인증서와 도메인
주요 항목 설명
host FQDN (Fully Qualified Domain Name) 설정
http URL 경로와 백엔드 서비스의 대응 배열
주요 항목 설명
paths URL의 경로와 백엔드 서비스를 대응시키는 목록을 기술
주요 항목 설명
path URL 주소의 경로 부분을 기재
backend 요청이 전달될 서비스와 포트번호 기재
주요 항목 설명
serviceName 서비스 이름
servicePort 서비스의 포트번호
주요 항목 설명
hosts 도메인명 목록
secretName 서버 인증서 시크릿의 이름
시크릿은 네임스페이스 내에 보안이 필요한 데이터를 보존하는 오브젝트로 컨테이너에서 볼륨으로 마운트 가능
  • open/networking-ingress.txt
  • 마지막으로 수정됨: 2021/10/05 08:36
  • 저자 127.0.0.1