[Kubernetes 시리즈] 제6 편 Ingress controller - nginx 구성 요소 소개

1. 개술
지난 글 에서 우 리 는 helm 을 통 해 traefik 구성 요 소 를 설치 하고 배치 하 는 방법 을 소개 했다. 글 에서 자주 사용 하 는 ingress contrller 는 traefik 뿐만 아니 라 Nginx, HAProxy, Kong 등 도 언급 했다. 이 글 에서 우 리 는 Nginx - ingress 를 설치 하 는 방법 을 소개 했다. 서로 다른 구성 요소 의 사용 경험 을 쌓 은 후에 야 우 리 는 그 우열 을 잘 비교 할 수 있다.최상의 실천 을 이루다.
2. nginx - ingress 구성 요소 의 설치 배치
2.1 helm 을 통 해 nginx - ingress 찾기
# step1:   helm  nginx-ingress
> helm search nginx-ingress
> helm inspect stable/nginx-ingress

2.2 미 러 다운로드 및 업로드
일부 기업 은 서버 에 외부 네트워크 접근 전략 과 방화벽 이 없 기 때문에 외국 Docker 미 러 를 가 져 올 수 없 기 때문에 필요 한 미 러 를 미리 준비 하고 기업 의 개인 미 러 창고 에 업로드 해 야 합 니 다.
# step2:     
> docker pull quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.25.1
> docker tag quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.25.1 registry.hankercloud.com/ingress-controller/nginx-ingress-controller:0.25.1
> docker push registry.hankercloud.com/ingress-controller/nginx-ingress-controller:0.25.1
> 
> docker pull k8s.gcr.io/defaultbackend-amd64:1.5
> docker tag k8s.gcr.io/defaultbackend-amd64:1.5 registry.hankercloud.com/google_containers/defaultbackend-amd64:1.5
> docker push registry.hankercloud.com/google_containers/defaultbackend-amd64:1.5

2.3 구성 요소 배치
지난 블 로그 에서 저 희 는 Deployment 모델 로 배 치 된 traefik 구성 요 소 를 사용 합 니 다. 이번 에는 DaemonSet 모델 로 nginx - ingress 구성 요 소 를 배치 합 니 다.
# step3:      
> helm install stable/nginx-ingress --name nginx-ingress --namespace=kube-system \
    --set fullnameOverride=nginx-ingress \
    --set controller.kind=DaemonSet \
    --set controller.daemonset.useHostPort=true \
    --set controller.metrics.enabled=true \
    --set controller.image.repository=registry.hankercloud.com/ingress-controller/nginx-ingress-controller \
    --set defaultBackend.image.repository=registry.hankercloud.com/google_containers/defaultbackend-amd64
# step4:         
> helm list
> kubectl get all -n kube-system 
> kubectl logs $POD_NAME -n kube-system   

2.4 부하 균형 설정 및 도 메 인 이름 분석 처리
이번에 저 희 는 DaemonSet 을 사용 하여 nginx - ingress 구성 요 소 를 배치 하고 호스트 의 80 과 443 인 터 페 이 스 를 사용 하여 http 와 https 요청 을 각각 받 았 습 니 다. 저 희 는 해당 도 메 인 이름 을 nginx - ingress Pod 가 있 는 호스트 IP 로 분석 한 후에 도 메 인 이름 을 통 해 해당 도 메 인 이름 에 접근 할 수 있 습 니 다.
그러나 상기 설정 방식 은 높 은 사용 이 불가능 합 니 다. nginx - ingress 의 Pod 인 스 턴 스 가 고장 나 거나 호스트 가 고장 이 났 을 때 해당 도 메 인 이름 에 접근 할 수 없 기 때문에 공유 클 라 우 드 에서 부하 균형 장 치 를 구 매 하고 해당 하 는 백 엔 드 서버 목록 을 설정 하여 높 은 사용 가능 한 목적 을 실현 하 는 것 을 권장 합 니 다.
2.5 설치 디 버 깅
앞에서 우 리 는 helm 을 통 해 wordpress 응용 프로그램 을 배 치 했 습 니 다. 본 고 는 이 응용 프로그램 을 통 해 도 메 인 이름 을 방문 하고 이 컴퓨터 콘 솔 에 입력 > curl -i http://10.0.0.182 -H 'Host: blog.hankercloud.com' 합 니 다. 정상 적 인 반환 이 있 는 것 을 보면 배치 가 성공 적 이라는 것 을 설명 합 니 다.
3. 기업 장면 및 해결 방안
3.1 내외 망 의 격 리 를 어떻게 하 는가
  • Step 1: 우 리 는 먼저 두 개의 ingress 구성 요 소 를 배 치 했 습 니 다. 그 중 하 나 는 내부 네트워크 방문 요청 을 받 는 것 이 고 다른 하 나 는 외부 네트워크 방문 요청 을 받 는 것 입 니 다. 해당 설정 은 다음 과 같 습 니 다.
  • #   nginx-ingress    :
    spec:
      template:
        spec:
          containers:
          - args:
            - /nginx-ingress-controller
            - --default-backend-service=kube-system/nginx-ingress-default-backend
            - --election-id=ingress-controller-leader
            - --ingress-class=nginx
            - --configmap=kube-system/nginx-ingress-controller
    #   nginx-ingress    :
    spec:
      template:
        spec:
          containers:
          - args:
            - /nginx-ingress-controller
            - --default-backend-service=kube-system/nginx-ingress-external-default-backend
            - --election-id=ingress-controller-leader
            - --ingress-class=nginx-external
            - --configmap=kube-system/nginx-ingress-external-controller

    이들 의 주요 차이 점 은 매개 변수 --ingress-class 가 설정 한 값 이 다르다 는 것 이다.
  • Step 2: 공공 네트워크 에 노출 되 어야 하 는 도 메 인 이름 에 대해 ingress 의 정 의 를 수정 하고 해당 설정 은 다음 과 같다.
  • metadata:
      name: www
      annotations:
        kubernetes.io/ingress.class: "nginx-external"
  • Step 3: 설정 이 성 공 했 는 지 확인 하고 실행 kubectl exec ${POD_NAME} -n kube-system cat /etc/nginx/nginx.conf 설정 파일 에 외부 도 메 인 이름 이 포함 되 어 있 는 지 확인 하 며 로 컬 에서 테스트 검증
  • 4. 참고 자료
    https://kubernetes.github.io/ingress-nginx/deploy/
    https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/

    좋은 웹페이지 즐겨찾기