Ingress Controller를 사용하여 어플리케이션을 인터넷에 공개하고 AWS 로드 밸런서에서 1000달러 절감

인터넷을 위한 응용 프로그램이 많고 부하 밸런서의 비용을 걱정하십니까?응, 이 문서는 응용 프로그램을 인터넷에 공개하는 부하 균형기를 사용해서 수백 달러를 절약할 수 있도록 도와줄 것이다.

무엇이 입구입니까?


우선 입구가 무엇인지 알아보자.포털은 클러스터 내 서비스에 대한 외부 액세스를 관리하고 로드 밸런싱, SSL 종료 및 이름 기반 가상 호스트를 제공하는 API 객체입니다.

자료 출처: kubernetes.io
제가 예시를 통해 본문을 소개할 때, 부하 균형, SSL 종료, 이름 기반 가상 호스트가 어떻게 작동하는지 보실 수 있습니다.

무엇이 입구 컨트롤러입니까?


트래픽 라우팅 규칙은 포털에 의해 정의되지만 이러한 규칙은 포털 컨트롤러에 의해 실행됩니다.
그룹에 입구 컨트롤러가 실행되지 않으면 다음 명령을 사용하여 입구 컨트롤러를 실행할 수 있습니다.
helm repo add nginx-stable https://helm.nginx.com/stable
helm repo update
helm install --name ingress nginx-stable/nginx-ingress
여기에 나열된 설치 포털 컨트롤러 중 하나를 선택할 수도 있습니다https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/.

예제 - 날씨 애플리케이션


나는 날씨 응용 프로그램을 사용하여 상술한 내용을 보여 주겠다.이 프로그램은 선택한 도시의 날씨 정보를 제공합니다.이것은 끼워 넣는 데이터베이스와 간단한 페이지를 가진 소형 응용 프로그램으로 사용자에게 서비스를 제공할 수 있다.
다음은 응용 프로그램을 배포하는 YAML입니다.
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: weather
  name: weather
spec:
  replicas: 1
  selector:
    matchLabels:
      app: weather
  template:
    metadata:
      labels:
        app: weather
    spec:
      containers:
      - image: brainupgrade/weather:monolith
        name: weather
        ports:
        - containerPort: 8080
프로그램이 Kubernetes 그룹에 배치되어 실행되면, 프로그램에 대한 요청을 프로그램pod에 프록시할 수 있는 서비스를 만들 수 있습니다.
apiVersion: v1
kind: Service
metadata:
  name: weather-service
spec:
  type: ClusterIP
  ports:
    - name: app
      port: 80
      targetPort: 8080
  selector:
    app: weather
이제 입구 정의 연결 프로그램을 사용할 때가 되었다.다음 글 참조:
apiVersion: networking.k8s.io/v1beta1 
kind: Ingress
metadata:
  name: weather.brainupgrade.in
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-prod
    nginx.ingress.kubernetes.io/rewrite-target: /$1
    nginx.ingress.kubernetes.io/use-regex: "true"
    kubernetes.io/tls-acme: "true"
    nginx.ingress.kubernetes.io/enable-cors: "true"
    kong.ingress.kubernetes.io/force-ssl-redirect: "true"
    kubernetes.io/ingress.class: "nginx"
spec:
  tls:
  - hosts:
    - weather.brainupgrade.in
    secretName: weather.brainupgrade.in
  rules:
    - host: weather.brainupgrade.in
      http:
        paths:
          - path: /
            backend:
              serviceName: weather-service
              servicePort: 80
상기 입구 정의를 배치할 때, 집단 중의 입구 컨트롤러는 당신이 지정한 규칙을 실현할 것입니다. 보십시오!당신의 응용 프로그램은 현재 인터넷 응용 프로그램입니다!

부하 균형


모든 응용 프로그램의 작업 부하, 즉 서비스와 관련된pod는 입구의 백엔드를 충당한다.Ingress는 인터넷 요청을 서비스에 대리합니다. 이 서비스는 기본적인 순환 알고리즘을 사용하여 요청 루트를 모든 POD에 전달하여 부하 균형을 이룹니다.

SSL 종료


대부분의 인터넷 응용 프로그램은 SSL(HTTPS URL)을 지원합니다.요청이 클러스터에 도달하면 클러스터 내에서 요청한 추가 라우팅에 SSL이 필요하지 않을 수 있으며, 더 높은 성능을 얻기 위해 SSL이 포털 수준에서 종료됩니다.

이름 기반 가상 호스트


이 기술은 이미 많은 웹 서버(apache,nginx 등)에서 사용되고 있으며, 그 중에서 여러 개의 영역에 대한 요청은 같은 서버로 연결된다.
Kubernetes 세계에서 입구 정의를 사용하면 이 개념은 여러 개의 영역의 요청 루트를 보통 많은 서버/노드에서 실행되는 관련 응용 프로그램 구성 요소로 확장됩니다.
다음 예제를 참조하십시오.

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: name-based-vhosts
spec:
  rules:
  - host: weather-v1.brainupgrade.in
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: weather-v1
            port:
              number: 80
  - host: weather-v2.brainupgrade.in
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: weather-v2
            port:
              number: 80
  - http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: weather
            port:
              number: 80
위의 예시에서 호스트 weather-v1을 요청합니다.뇌가 업그레이드되다.에서 호스트 weather-v2 요청인 weather-v1 서비스로 라우팅됩니다.뇌가 업그레이드되다.의 요청은 weather-v2 서비스로 연결되며 호스트 헤더가 없는 상황에서 부하 평형기에 도착하는 요청은 weather 서비스로 연결됩니다.

결론


본고에서 우리는 Ingress가 어떻게 Ingress Controller와 함께 작업하는지, 그리고 부하 균형, SSL 종료와 이름 기반 가상 호스트 등 그 장점을 상세하게 연구했다.

태그: #ingress#devops#ingresscontroller#kubernetes#vhost


작성자 정보


Brain Upgrade Academy의 수석 프로그래머인 저자가 AWS 아마존의 Kubernetes 클러스터에서 작동하는 사물인터넷 기반의 차량 관리 플랫폼을 설계했다.그는 Kubernetes 인증 관리자이자 TOGAF 인증 기업 프로그래머이기도 하다.
라제시는 500대 금융 과학 기술 회사의 각종 디지털 전환 계획을 이끌었다.지난 20여 년 동안, 그는 줄곧 많은 성공한 과학 기술 초창기 회사의 일원이었다.

대뇌 업그레이드 학원


Brain Upgrade에서 우리는 고객에게 Kubernetes 상담 서비스를 제공합니다. 이는 고객 팀의 기능(교육)을 향상시키고 Kubernetes 플랫폼의 효율적인 이용을 추진합니다.쿠베르네트스에 대한 자세한 정보는 www.brainupgrade.in/blog를 방문하여 등록www.brainupgrade.in/enroll하여 쿠베르네트스의 기술을 습득하세요.

왜 뇌를 업그레이드해야 돼요?


Brain Upgrade에서 고객과 협력하여 다음과 같은 서비스를 제공하여 비즈니스를 디지털화하고 있습니다.
제품 개발, 사물인터넷, DevOps, 클라우드 컴퓨팅, 컨테이너화, 빅데이터 분석 분야의 기술 자문은 기원 기술에 중점을 두었다. 
Kubernetes, Docker, AI, ML 등 IT 직원들의 최신 클라우드 기술 교육
곧 있을 교육을 https://brainupgrade.in/enroll에 등록해야 할 수도 있습니다.

좋은 웹페이지 즐겨찾기