이 주제에서는 Apigee Hybrid를 사용할 수 있도록 비SNI 클라이언트, HTTP 클라이언트, 두 가지 모두를 사용 설정하는 방법을 설명합니다.
SNI 이외의 클라이언트 구성 방법
이 섹션에서는 Apigee Hybrid에서 SNI(서버 이름 표시) 이외의 클라이언트의 지원을 사용 설정하는 방법을 설명합니다. SNI 이외의 클라이언트는 포트 443을 사용하며 하이브리드 런타임 인스턴스를 Google Cloud Load Balancing과 통합하려는 경우나 SNI를 지원하지 않는 클라이언트에 필요합니다.- ApigeeRoute 커스텀 리소스 정의(CRD)를 생성합니다.
enableNonSniClient
가true
로 설정되어 있는지 확인합니다.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: apigee-ingressgateway enableNonSniClient: true
각 항목의 의미는 다음과 같습니다.
- route_name은 커스텀 리소스(CR)에 지정하는 이름입니다.
- credential_name은 virtualhost에 대해 TLS 사용자 인증 정보를 포함하는 클러스터에 배포된 Kubernetes 보안 비밀의 이름입니다. 다음
kubectl
명령어를 사용하여 사용자 인증 정보 이름을 찾을 수 있습니다.kubectl -n apigee get ApigeeRoutes -o=yaml | grep credentialName
hostnames
는 와일드 카드 '*'로 설정해야 합니다.
- 재정의 파일을 열고 다음 단계에 설명된 변경을 수행합니다.
- 각 환경 그룹에 대해 ApigeeRoute 이름을
additionalGateways
속성에 추가합니다. 예를 들면 다음과 같습니다.virtualhosts: - name: default sslCertPath: ./certs/fullchain.pem sslKeyPath: ./certs/privkey.pem additionalGateways: ["route_name"]
- CRD 파일을 저장합니다. 예:
ApigeeRoute.yaml
- CRD를 클러스터에 적용합니다.
kubectl apply -f ApigeeRoute.yaml -n apigee
- 변경사항을
virtualhosts
에 적용합니다.Helm
helm upgrade ENV_GROUP apigee-virtualhost/ \ --namespace apigee \ --atomic \ --set envgroup=ENV_GROUP_NAME \ -f OVERRIDES_FILE.yaml
apigeectl
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE.yaml --settings virtualhosts --env $ENVIRONMENT
사용 참고사항
- 클러스터에 조직이 2개 이상 포함되면 어떻게 되나요?
인그레스가 지정된 포트(443)에 대해 클러스터 수준에 있고, ApigeeRoute CRD에 대해 하나의 키/인증서 쌍만 가능하므로, 모든 조직이 동일한 키/인증서 쌍을 공유해야 합니다.
- 클러스터에 환경 그룹이 2개 이상 포함되면 어떻게 되나요? 가상 호스트가 동일한 키/인증서 쌍을 공유할 경우 작동하나요?
모든 환경 그룹 간의 모든 호스트 이름이 동일한 키/인증서 쌍을 사용해야 합니다.
- 게이트웨이 대신 ApigeeRoute를 만드는 이유가 무엇인가요?
ApigeeRoutes는 Apigee로 검증할 수 있지만 게이트웨이(Istio CRD)는 그렇지 않습니다. 기술적으로 게이트웨이도 작동 가능하지만, 잠재적인 구성 실수를 방지할 수 있습니다(검증 웹훅 사용).
HTTP 클라이언트 사용 설정
이 섹션에서는 Apigee Hybrid와 함께 사용할 수 있는 HTTP 클라이언트 지원을 설명합니다.
- 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
는 와일드 카드 '*'로 설정해야 합니다.
- 재정의 파일을 열고 다음 단계에 설명된 변경을 수행합니다.
- 각 환경 그룹에 대해 ApigeeRoute 이름을
additionalGateways
속성에 추가합니다. 예를 들면 다음과 같습니다.virtualhosts: - name: default sslCertPath: ./certs/fullchain.pem sslKeyPath: ./certs/privkey.pem additionalGateways: ["route_name"]
- CRD 파일을 저장합니다. 예:
ApigeeRoute.yaml
- CRD를 클러스터에 적용합니다.
kubectl apply -f ApigeeRoute.yaml -n apigee
- 변경사항을
virtualhosts
에 적용합니다.Helm
helm upgrade ENV_GROUP apigee-virtualhost/ \ --namespace apigee \ --atomic \ --set envgroup=ENV_GROUP_NAME \ -f OVERRIDES_FILE.yaml
apigeectl
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE.yaml --settings virtualhosts --env $ENVIRONMENT
SNI 이외의 클라이언트와 HTTP 클라이언트 모두 지원 사용 설정
이 섹션에서는 Apigee Hybrid에 사용할 수 있도록 SNI 이외의(포트 443) 클라이언트와 HTTP (포트 80) 클라이언트를 모두 사용 설정하는 방법을 설명합니다.
- 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
- 재정의 파일을 열고 다음 단계에 설명된 변경을 수행합니다.
- 각 환경 그룹에 대해 ApigeeRoute 이름을
additionalGateways
속성에 추가합니다. 예를 들면 다음과 같습니다.virtualhosts: - name: default sslCertPath: ./certs/fullchain.pem sslKeyPath: ./certs/privkey.pem additionalGateways: ["route_name"]
- CRD 파일을 저장합니다. 예:
ApigeeRoute.yaml
- CRD를 클러스터에 적용합니다.
kubectl apply -f ApigeeRoute.yaml -n apigee
- 변경사항을
virtualhosts
에 적용합니다.Helm
helm upgrade ENV_GROUP apigee-virtualhost/ \ --namespace apigee \ --atomic \ --set envgroup=ENV_GROUP_NAME \ -f OVERRIDES_FILE.yaml
apigeectl
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE.yaml --settings virtualhosts --env $ENVIRONMENT