SNI 이외의 클라이언트와 HTTP 클라이언트 사용 설정

이 주제에서는 Apigee Hybrid를 사용할 수 있도록 비SNI 클라이언트, HTTP 클라이언트, 두 가지 모두를 사용 설정하는 방법을 설명합니다.

이 구성은 Apigee 인그레스 게이트웨이와 Anthos Service Mesh 모두에서 작동합니다.

SNI 이외의 클라이언트 구성 방법

이 섹션에서는 Apigee Hybrid에서 SNI(서버 이름 표시) 이외의 클라이언트의 지원을 사용 설정하는 방법을 설명합니다. SNI 이외의 클라이언트는 포트 443을 사용하며 하이브리드 런타임 인스턴스를 Google Cloud Load Balancing과 통합하려는 경우나 SNI를 지원하지 않는 클라이언트에 필요합니다.
  1. ApigeeRoute 커스텀 리소스 정의(CRD)를 생성합니다. enableNonSniClienttrue로 설정되었는지 확인합니다.
    apiVersion: apigee.cloud.google.com/v1alpha1
    kind: ApigeeRoute
    metadata:
      name: ROUTE_NAME
      namespace: apigee
    spec:
      hostnames:
      - "*"
      ports:
      - number: 443
        protocol: HTTPS
        tls:
          credentialName: CREDENTIAL_NAME
          mode: SIMPLE
          #optional
          minProtocolVersion: TLS_AUTO
      selector:
        app: APP_NAME
      enableNonSniClient: true
    

    각 항목의 의미는 다음과 같습니다.

    • ROUTE_NAME은 CRD에 지정하는 이름입니다.
    • CREDENTIAL_NAME은 virtualhost에 대해 TLS 사용자 인증 정보를 포함하는 클러스터에 배포된 Kubernetes 보안 비밀의 이름입니다. 다음 kubectl 명령어를 사용하여 사용자 인증 정보 이름을 찾을 수 있습니다.
      kubectl -n apigee get ApigeeRoutes -o=yaml | grep credentialName
    • APP_NAME: 인그레스 게이트웨이 유형을 식별합니다.
      • Apigee 인그레스 게이트웨이의 경우 apigee-ingressgateway
      • Anthos Service Mesh의 경우 istio-ingressgateway
    • hostnames는 와일드 카드 "*"로 설정해야 합니다.
  2. 재정의 파일을 열고 다음 단계에 설명된 변경을 수행합니다.
  3. 각 환경 그룹에 대해 ApigeeRoute 이름을 additionalGateways 속성에 추가합니다. 예를 들면 다음과 같습니다.
    virtualhosts:
      - name: default
        sslCertPath: ./certs/fullchain.pem
        sslKeyPath: ./certs/privkey.pem
        additionalGateways: ["route_name"]
  4. CRD 파일을 저장합니다. 예를 들면 ApigeeRoute.yaml입니다.
  5. CRD를 클러스터에 적용합니다.
    kubectl apply -f ApigeeRoute.yaml -n apigee
  6. 변경사항을 virtualhosts에 적용합니다.
    $APIGEECTL_HOME/apigeectl apply -f overrides.yaml --settings virtualhosts --env $ENVIRONMENT

사용 참고사항

  • 클러스터에 조직이 2개 이상 포함되면 어떻게 되나요?

    인그레스가 지정된 포트(443)에 대해 클러스터 수준에 있고, ApigeeRoute CRD에 대해 하나의 키/인증서 쌍만 가능하므로, 모든 조직이 동일한 키/인증서 쌍을 공유해야 합니다.

  • 클러스터에 환경 그룹이 2개 이상 포함되면 어떻게 되나요? 가상 호스트가 동일한 키/인증서 쌍을 공유할 경우 작동하나요?

    모든 환경 그룹 간의 모든 호스트 이름이 동일한 키/인증서 쌍을 사용해야 합니다.

  • 게이트웨이 대신 ApigeeRoute를 만드는 이유가 무엇인가요?

    ApigeeRoutes는 Apigee로 검증할 수 있지만 게이트웨이(Istio CRD)는 그렇지 않습니다. 기술적으로 게이트웨이도 작동 가능하지만, 잠재적인 구성 실수를 방지할 수 있습니다(검증 웹훅 사용).

HTTP 클라이언트 사용 설정

이 섹션에서는 Apigee Hybrid와 함께 사용할 수 있는 HTTP 클라이언트 지원을 설명합니다.

  1. ApigeeRoute 커스텀 리소스 정의(CRD)를 생성합니다. 예를 들면 다음과 같습니다.
    apiVersion: apigee.cloud.google.com/v1alpha1
    kind: ApigeeRoute
    metadata:
      name: route_name
      namespace: apigee
    spec:
      hostnames:
      - "*"
      ports:
      - number: 80
        protocol: HTTP
      selector:
        app: istio-ingressgateway
      enableNonSniClient: true

    각 항목의 의미는 다음과 같습니다.

    • route_name은 CRD에 지정하는 이름입니다.
    • hostnames는 와일드 카드 '*'로 설정해야 합니다.
  2. 재정의 파일을 열고 다음 단계에 설명된 변경을 수행합니다.
  3. 각 환경 그룹에 대해 ApigeeRoute 이름을 additionalGateways 속성에 추가합니다. 예를 들면 다음과 같습니다.
    virtualhosts:
      - name: default
        sslCertPath: ./certs/fullchain.pem
        sslKeyPath: ./certs/privkey.pem
        additionalGateways: ["route_name"]
  4. CRD 파일을 저장합니다. 예를 들면 ApigeeRoute.yaml입니다.
  5. CRD를 클러스터에 적용합니다.
    kubectl apply -f ApigeeRoute.yaml -n apigee
  6. 변경사항을 virtualhosts에 적용합니다.
    $APIGEECTL_HOME/apigeectl apply -f overrides.yaml --settings virtualhosts --env $ENVIRONMENT

SNI 이외의 클라이언트와 HTTP 클라이언트 모두 지원 사용 설정

이 섹션에서는 Apigee Hybrid에 사용할 수 있도록 SNI 이외의(포트 443) 클라이언트와 HTTP (포트 80) 클라이언트를 모두 사용 설정하는 방법을 설명합니다.

  1. ApigeeRoute 커스텀 리소스 정의(CRD)를 생성합니다. 예를 들면 다음과 같습니다.
    apiVersion: apigee.cloud.google.com/v1alpha1
    kind: ApigeeRoute
    metadata:
      name: route_name
      namespace: apigee
    spec:
      hostnames:
      - "*"
      ports:
      - number: 443
        protocol: HTTPS
        tls:
          credentialName: credential_name
          mode: SIMPLE
          #optional
          minProtocolVersion: TLS_AUTO
      - number: 80
        protocol: HTTP
      selector:
        app: istio-ingressgateway
      enableNonSniClient: true

    각 항목의 의미는 다음과 같습니다.

    • route_name은 CRD에 지정하는 이름입니다.
    • hostname는 와일드 카드 '*'로 설정해야 합니다.
    • credential_name은 virtualhost에 대해 TLS 사용자 인증 정보를 포함하는 클러스터에 배포된 Kubernetes 보안 비밀의 이름입니다. 다음 kubectl 명령어를 사용하여 사용자 인증 정보 이름을 찾을 수 있습니다.
      kubectl -n apigee get ApigeeRoutes -o=yaml | grep credentialName
  2. 재정의 파일을 열고 다음 단계에 설명된 변경을 수행합니다.
  3. 각 환경 그룹에 대해 ApigeeRoute 이름을 additionalGateways 속성에 추가합니다. 예를 들면 다음과 같습니다.
    virtualhosts:
      - name: default
        sslCertPath: ./certs/fullchain.pem
        sslKeyPath: ./certs/privkey.pem
        additionalGateways: ["route_name"]
  4. CRD 파일을 저장합니다. 예를 들면 ApigeeRoute.yaml입니다.
  5. CRD를 클러스터에 적용합니다.
    kubectl apply -f ApigeeRoute.yaml -n apigee
  6. 변경사항을 virtualhosts에 적용합니다.
    $APIGEECTL_HOME/apigeectl apply -f overrides.yaml --settings virtualhosts --env $ENVIRONMENT