Apigee 및 Apigee Hybrid 문서입니다.
이 주제에 해당하는 Apigee Edge 문서가 없습니다.
증상
apigee
네임스페이스의 리소스를 보면 Reason
이 AIS_INGRESS_CERT_MISMATCH
인 ApigeeIssue
가 표시됩니다.
오류 메시지
kubectl -n apigee get apigeeissues
를 실행하면 다음 오류가 표시됩니다.
NAME SEVERITY REASON DOCUMENTATION AGE ingress-cert-mismatch-my-org-my-virtualhost ERROR AIS_INGRESS_CERT_MISMATCH https://cloud.google.com/apigee/docs/hybrid/troubleshooting/AIS_INGRESS_CERT_MISMATCH 5h18m
원인: 인그레스 인증서 불일치
ApigeeRouteConfig
에서 참조하는 Kubernetes 보안 비밀에 저장된 비공개 키와 인증서가 일치하지 않습니다.
진단
다음 명령어를 실행합니다.
kubectl -n apigee describe apigeeissue ISSUE_NAME
여기서 ISSUE_NAME은 마이그레이션의 이름입니다. 예를 들면 ingress-cert-mismatch-my-org-my-virtualhost
입니다.
다음과 비슷한 결과가 반환됩니다.
Name: ingress-cert-mismatch-my-org-my-virtualhost Namespace: apigee Labels: ais-reason=AIS_INGRESS_CERT_MISMATCH Annotations: <none> API Version: apigee.cloud.google.com/v1alpha1 Kind: ApigeeIssue Metadata: Creation Timestamp: 2023-06-12T17:03:43Z Generation: 1 Owner References: API Version: apigee.cloud.google.com/v1alpha2 Kind: ApigeeOrganization Name: my-org UID: 7e83a52c-ce00-4bed-98be-55835ada1817 Resource Version: 3281563 UID: adc775c2-376d-4bf9-9860-500b2b2b8273 Spec: Details: Ingress cert and private key in secret "my-org-my-virtualhost" for ApigeeRouteConfig "my-org-my-virtualhost" do not match Documentation: https://cloud.google.com/apigee/docs/hybrid/troubleshooting/AIS_INGRESS_CERT_MISMATCH Reason: AIS_INGRESS_CERT_MISMATCH Severity: ERROR Events: <none>
Spec: Details: Ingress cert and private key in secret "my-org-my-virtualhost" for ApigeeRouteConfig "my-org-my-virtualhost" do not match
Spec.Details
콘텐츠는 인그레스 인증서와 비공개 키가 포함된 Kubernetes 보안 비밀을 참조하는 ApigeeRouteConfig
의 이름을 설명합니다.
해결 방법
-
kubectl describe
를 사용하여 일치하지 않는 인그레스 인증서와 키가 있는ApigeeRouteConfig
의 이름을 표시합니다.kubectl -n apigee describe apigeeissue ISSUE_NAME
여기서 ISSUE_NAME은 마이그레이션의 이름입니다. 예를 들면
ingress-cert-mismatch-my-org-my-virtualhost
입니다.이 예시에서
ApigeeRouteConfig
my-org-my-virtualhost
는 보안 비밀my-org-my-virtualhost
를 참조합니다. -
ApigeeRouteConfig
에서virtualhost
이름을 확인합니다.ApigeeRouteConfig
의 이름은<Apigee organization>-<virtualhost name>
형식입니다.이 예시에서
my-org
는 Apigee 조직이고 virtualhost 이름은my-virtualhost
입니다. -
overrides.yaml
에서 해당 virtualhost를 찾습니다.virtualhosts: ... - name: my-virtualhost selector: app: apigee-ingressgateway sslCertPath: ./certs/vhost.pem sslKeyPath: ./certs/vhost.key ...
-
사용 중인 인증서와 키 파일이 일치하는지 확인합니다.
이전 단계의
sslCertPath
및sslKeyPath
를 사용하고openssl
을 사용하여 MD5 합계가 일치하는지 확인합니다.openssl x509 -noout -modulus -in SSL_CERT_PATH | openssl md5
openssl rsa -noout -modulus -in SSL_KEY_PATH | openssl md5
-
여기서 SSL_CERT_PATH는 이전 단계의
sslCertPath
입니다. 예를 들면./certs/vhost.pem
입니다. -
여기서 SSL_KEY_PATH는 이전 단계의
sslKeyPath
입니다. 예를 들면./certs/vhost.key
입니다.
위 두 명령어의 출력은 다음과 일치해야 합니다.
openssl x509 -noout -modulus -in ./certs/vhost.pem | openssl md5 MD5(stdin)= 40ba189dbe9d6fbfbdde1a8ef803d2d4
openssl rsa -noout -modulus -in ./certs/vhost.key | openssl md5 MD5(stdin)= 40ba189dbe9d6fbfbdde1a8ef803d2d4
-
여기서 SSL_CERT_PATH는 이전 단계의
-
이전 명령어의 출력이 일치하지 않으면 다음 방법 중 하나를 사용하여 문제를 해결합니다.
-
올바른 파일 경로를 가리키도록 virtualhost의
sslCertPath
및sslKeyPath
를 업데이트합니다. -
올바르게 일치하는 인증서 및 키 쌍을 포함하도록
sslCertPath
또는sslKeyPath
파일 콘텐츠를 수정합니다.
-
올바른 파일 경로를 가리키도록 virtualhost의
-
virtualhost에 변경사항을 적용합니다.
Helm
helm upgrade ENV_GROUP_NAME apigee-virtualhost/ \ --namespace apigee \ --set envgroup=ENV_GROUP_NAME \ -f overrides.yaml
apigeectl
apigeectl apply -f overrides.yaml --settings virtualhosts
진단 정보 수집 필요
위 안내를 따른 후에도 문제가 지속되면 다음 진단 정보를 수집한 후 Google Cloud Customer Care에 문의하세요.
- Google Cloud 프로젝트 ID
- Apigee Hybrid 조직의 이름
ApigeeIssue
의Spec.Details
필드-
(선택사항) 영향을 받는 virtualhost에 대해
sslCertPath
및sslKeyPath
에서 참조하는 파일