Kubernetes 사용 ingress - nginx

3470 단어
ingress - nginx 로 내부 서 비 스 를 노출 하 는 과정 을 기록 합 니 다.
설치 하 다.
ingress - nginx 는 ingress 의 실현 이다. 현 재 는 kubernetes 프로젝트 아래 에 놓 여 있다. 이 를 통 해 친아들 이 라 고 할 수 있 지만 업데이트 빈도 도 매우 높다. 게다가 예전 에 다른 환경 에서 nginx 를 사용 하 는 장면 도 많아 서 생각 하지 않 고 많이 사용 했다 고 생각한다.
내 가 ingress - nginx 를 설 치 했 을 때 최신 버 전 은 0.16.2 이 었 다.먼저 문서 에 따라 먼저 설치 mandatory.yaml:
kubectl apply -f \
    https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.16.2/deploy/mandatory.yaml

이 단계 에서 다음 과 같은 일 을 했다.
  • 창설 ingress-nginx namespace
  • 기본 백 엔 드 배치
  • 해당 ConfigMap 만 들 기
  • ServiceAccount 를 만 들 고 권한 을 부여 합 니 다
  • nginx - ingress - controller 배치
  • 그룹 외부 에 서비스 노출 만 들 기
    이것 도 신기 한 조작 이다. ingress 야 말로 서 비 스 를 진정 으로 외부 에 노출 시 키 는 자원 이지 만 사실은 오히려 service 서 비 스 를 최종 적 으로 노출 시 키 는 임 무 를 완성 했다.여기 서 우 리 는 여러 가지 선택 을 할 수 있다.
    서 비 스 를 특정한 포트 를 통 해 NodePort 사용 하거나:
    apiVersion: v1
    kind: Service
    metadata:
      name: ingress-nginx
      namespace: ingress-nginx
    spec:
      type: NodePort
      ports:
      - name: http
        port: 80
        targetPort: 80
        protocol: TCP
      - name: https
        port: 443
        targetPort: 443
        protocol: TCP
      selector:
        app: ingress-nginx
    

    또는 externalIPS 를 사용 하여 service 특정한 IP 를 통 해 직접 노출 시 킵 니 다.
    apiVersion: v1
    kind: Service
    metadata:
      name: ingress-nginx
      namespace: ingress-nginx
    spec:
      externalIPs:
      - 
      ports:
      - name: http
        port: 80
        targetPort: 80
        protocol: TCP
      - name: https
        port: 443
        targetPort: 443
        protocol: TCP
      selector:
        app: ingress-nginx
    

    여기 서 제 가 사용 하 는 것 은 두 번 째 입 니 다. 이렇게 드 러 난 서 비 스 는 더욱 깨끗 합 니 다.
    그리고 작업 여 부 를 테스트 해 보 세 요.
    curl http://
    

    404 설명 이 기본 백 엔 드 로 연결 되 었 습 니 다.
    외부 서비스 노출
    그리고 우 리 는 ingress 우리 의 자바 서 비 스 를 경로 /api 에 노출 시 킵 니 다.
    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: openbayes-server-ing
      annotations:
        nginx.ingress.kubernetes.io/ssl-redirect: "false"
    spec:
      rules:
      - http:
          paths:
          - path: /api
            backend:
              serviceName: openbayes-server-svc
              servicePort: 80
    
    kubectl apply -f ingress.yaml
    

    그리고 이 api 를 정상적으로 방문 할 수 있 는 지 다시 시도 해 보 세 요.
    annotation 을 사용 하여 특정 서 비 스 를 설정 합 니 다.
    기본 nginx 설정 은 서비스 에 적합 하지 않 습 니 다. Nginx Configuration 에 방문 하면 ingress - nginx 가 제공 하 는 세 가지 nginx 설정 방식 을 볼 수 있 습 니 다.그 중에서 ConfigMaps 는 nginx 기본 설정 에 대한 수정 을 실현 할 수 있 습 니 다.ingress annotation 은 특정 ingress 를 설정 할 수 있 습 니 다.
    예 를 들 어 우리 curl http:///api 는 파일 을 업로드 하 는 수요 가 있 고 기본 적 인 요청 크기 는 /api 로 파일 업로드 오류 1m 를 초래 할 수 있 습 니 다. 주석 추가 413 를 통 해 요청 크기 제한 을 지정 할 수 있 습 니 다.
    apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      name: openbayes-server-ing
      annotations:
        nginx.ingress.kubernetes.io/proxy-body-size: "1024m"
        nginx.ingress.kubernetes.io/ssl-redirect: "false"
    spec:
      rules:
      - http:
          paths:
          - path: /api
            backend:
              serviceName: openbayes-server-svc
              servicePort: 80
    

    ingress 를 수정 할 때마다 nginx - ingress - controller 는 nginx. conf 를 기본적으로 업데이트 하고 즉시 효력 이 발생 합 니 다.

    좋은 웹페이지 즐겨찾기