Apigee 및 Apigee Hybrid 문서입니다.
이 주제에 해당하는 Apigee Edge 문서가 없습니다.
증상
apigee
네임스페이스의 리소스를 보면 Reason
이 AIS_INGRESS_MTLS_CA_CERT_INVALID
인 ApigeeIssue
가 표시됩니다.
오류 메시지
kubectl -n apigee get apigeeissues
를 실행하면 다음과 같은 오류가 표시됩니다.
NAME SEVERITY REASON DOCUMENTATION AGE ca-cert-invalid-my-org-my-virtualhost ERROR AIS_INGRESS_MTLS_CA_CERT_INVALID https://cloud.google.com/apigee/docs/hybrid/troubleshooting/AIS_INGRESS_MTLS_CA_CERT_INVALID 5h18m
가능한 원인
원인 | 설명 |
---|---|
인그레스 mTLS CA 인증서가 PEM으로 인코딩되지 않음 | 구성된 인그레스 mTLS CA 인증서는 PEM으로 인코딩되지 않았습니다. |
인그레스 mTLS CA 인증서의 형식이 잘못됨 | 구성된 인그레스 mTLS CA 인증서의 형식이 잘못되었습니다. |
원인: 인그레스 mTLS CA 인증서가 PEM으로 인코딩되지 않음
ApigeeRouteConfig
에서 참조하는 Kubernetes 보안 비밀에 저장된 인그레스 mTLS CA 인증서에 PEM 인코딩 텍스트 블록이 없거나 형식이 잘못되었습니다.
진단
다음 명령어를 실행합니다.
kubectl -n apigee describe apigeeissue ISSUE_NAME
여기서 ISSUE_NAME은 문제의 이름입니다. 예를 들면 ca-cert-invalid-my-org-my-virtualhost
입니다.
출력은 다음과 비슷하게 표시됩니다.
Name: ca-cert-invalid-my-org-my-virtualhost Namespace: apigee Labels: ais-reason=AIS_INGRESS_MTLS_CA_CERT_INVALID 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: CA certificate in secret "my-org-my-virtualhost" for ApigeeRouteConfig "my-org-my-virtualhost" is not PEM encoded Documentation: https://cloud.google.com/apigee/docs/hybrid/troubleshooting/AIS_INGRESS_MTLS_CA_CERT_INVALID Reason: AIS_INGRESS_MTLS_CA_CERT_INVALID Severity: ERROR Events: <none>
Spec: Details: CA certificate in secret "my-org-my-virtualhost" for ApigeeRouteConfig "my-org-my-virtualhost" is not PEM encoded
Spec.Details
의 콘텐츠는 PEM으로 인코딩되지 않은 인그레스 mTLS CA 인증서가 포함된 Kubernetes 보안 비밀을 참조하는 ApigeeRouteConfig
의 이름을 설명합니다.
해결 방법
-
kubectl describe
를 사용하여 PEM으로 인코딩되지 않은 인그레스 mTLS CA 인증서가 있는ApigeeRouteConfig
의 이름을 표시합니다.kubectl -n apigee describe apigeeissue ISSUE_NAME
여기서 ISSUE_NAME은 문제의 이름입니다. 예를 들면
ca-cert-invalid-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 caCertPath: ./certs/ca.pem sslCertPath: ./certs/vhost.pem sslKeyPath: ./certs/vhost.key ...
-
caCertPath
에 선언된 경로를 통해 제공된 파일의 콘텐츠의 유효성을 검사합니다. 콘텐츠에 필요한 시작 및 종료 인증서 블록이 포함되어 있는지 확인합니다. 예를 들면 다음과 같습니다.-----BEGIN CERTIFICATE----- MIIDYTCCAkmgAwIBAgIUSXeU0pQYRFzYlqZpKhNNJdBLFBIwDQYJKoZIhvcNAQEL ... <contents omitted> ... eWJyaWQuZTJlLmFwaWdlZWtzLm5ldDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC MMM= -----END CERTIFICATE-----
-
파일의 콘텐츠와 형식이 수정되면 변경사항을 virtualhost에 적용합니다.
helm upgrade ENV_GROUP_NAME apigee-virtualhost/ \ --namespace apigee \ --set envgroup=ENV_GROUP_NAME \ -f overrides.yaml
원인: 인그레스 mTLS CA 인증서의 형식이 잘못됨
ApigeeRouteConfig
에서 참조하는 Kubernetes 보안 비밀에 저장된 인그레스 mTLS CA 인증서의 형식이 잘못되었습니다.
진단
다음 명령어를 실행합니다.
kubectl -n apigee describe apigeeissue ISSUE_NAME
여기서 ISSUE_NAME은 문제의 이름입니다. 예를 들면 ca-cert-invalid-my-org-my-virtualhost
입니다.
출력은 다음과 비슷하게 표시됩니다.
Name: ca-cert-invalid-my-org-my-virtualhost Namespace: apigee Labels: ais-reason=AIS_INGRESS_MTLS_CA_CERT_INVALID 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: CA certificate in secret "my-org-my-virtualhost" for ApigeeRouteConfig "my-org-my-virtualhost" is invalid Documentation: https://cloud.google.com/apigee/docs/hybrid/troubleshooting/AIS_INGRESS_MTLS_CA_CERT_INVALID Reason: AIS_INGRESS_MTLS_CA_CERT_INVALID Severity: ERROR Events: <none>
Spec: Details: CA certificate in secret "my-org-my-virtualhost" for ApigeeRouteConfig "my-org-my-virtualhost" is invalid
Spec.Details
의 콘텐츠는 형식이 잘못되어 파싱할 수 없는 인그레스 mTLS CA 인증서가 포함된 Kubernetes 보안 비밀을 참조하는 ApigeeRouteConfig
의 이름을 설명합니다.
해결 방법
-
kubectl describe
를 사용하여 잘못된 형식의 인그레스 mTLS CA 인증서가 있는ApigeeRouteConfig
의 이름을 표시합니다.kubectl -n apigee describe apigeeissue ISSUE_NAME
여기서 ISSUE_NAME은 문제의 이름입니다. 예를 들면
ca-cert-invalid-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 caCertPath: ./certs/ca.pem sslCertPath: ./certs/vhost.pem sslKeyPath: ./certs/vhost.key ...
-
caCertPath
에 선언된 경로를 통해 제공된 파일의 콘텐츠의 유효성을 검사합니다. 콘텐츠에 전체 인증서가 포함되어 있는지 확인합니다. 예를 들면 다음과 같습니다.-----BEGIN CERTIFICATE----- MIIDYTCCAkmgAwIBAgIUSXeU0pQYRFzYlqZpKhNNJdBLFBIwDQYJKoZIhvcNAQEL BQAwQDE+MDwGA1UEAww1bWF4bWlsbGlvbi1oeWJyaWQtc3RhZ2luZy1kZXYuaHli ... <contents omitted> ... 0TPPaik8U9dtFXMGT1DJkjPRPO0Jw5rlU8DKlNA/Kkv52aKJZNwB/cwmvoa/BFji PIPa9wY= -----END CERTIFICATE-----
-
파일의 콘텐츠와 형식이 수정되면 변경사항을 virtualhost에 적용합니다.
helm upgrade ENV_GROUP_NAME apigee-virtualhost/ \ --namespace apigee \ --set envgroup=ENV_GROUP_NAME \ -f overrides.yaml
진단 정보 수집 필요
위 안내를 따른 후에도 문제가 지속되면 다음 진단 정보를 수집한 후 Google Cloud Customer Care에 문의하세요.
- Google Cloud 프로젝트 ID
- Apigee Hybrid 조직의 이름
ApigeeIssue
의Spec.Details
필드-
(선택사항) 영향을 받는 virtualhost에 대해
caCertPath
에서 참조하는 파일