Sie lesen gerade die Dokumentation zu Apigee und Apigee Hybrid.
Für dieses Thema gibt es keine entsprechende Apigee Edge-Dokumentation.
Symptom
Ein ApigeeIssue
mit Reason
AIS_INGRESS_MTLS_CA_CERT_INVALID
wird angezeigt, wenn Ressourcen im Namespace apigee
angezeigt werden.
Fehlermeldungen
Nachdem kubectl -n apigee get apigeeissues
ausgeführt wurde, wird ein Fehler wie der folgende angezeigt:
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
Mögliche Ursachen
Ursache | Beschreibung |
---|---|
Das mTLS-CA-Zertifikat für eingehenden Traffic ist nicht PEM-codiert. | Das konfigurierte mTLS-CA-Zertifikat für eingehenden Traffic ist nicht PEM-codiert. |
mTLS-CA-Zertifikat für eingehenden Traffic ist fehlerhaft | Das konfigurierte mTLS-CA-Zertifikat für eingehenden Traffic ist fehlerhaft. |
Ursache: Ingress-mTLS-CA-Zertifikat ist nicht PEM-codiert
Im mTLS-CA-Zertifikat für eingehenden Traffic, das im Kubernetes-Secret gespeichert ist, auf das ein ApigeeRouteConfig
verweist, fehlen die Textblöcke mit der PEM-Codierung (oder sind fehlerhaft).
Diagnose
Führen Sie dazu diesen Befehl aus:
kubectl -n apigee describe apigeeissue ISSUE_NAME
Dabei ist ISSUE_NAME der Name des Problems. Beispiel: ca-cert-invalid-my-org-my-virtualhost
Die Ausgabe sollte in etwa so aussehen:
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
Der Inhalt von Spec.Details
erläutert den Namen der ApigeeRouteConfig
, die auf das Kubernetes-Secret mit dem nicht PEM-codierten Ingress-mTLS-CA-Zertifikat verweist.
Lösung
-
Verwenden Sie
kubectl describe
, um den Namen derApigeeRouteConfig
anzuzeigen, die das mTLS-CA-Zertifikat für eingehenden Traffic enthält, das nicht PEM-codiert ist:kubectl -n apigee describe apigeeissue ISSUE_NAME
Dabei ist ISSUE_NAME der Name des Problems. Beispiel:
ca-cert-invalid-my-org-my-virtualhost
.In diesem Beispiel verweist
ApigeeRouteConfig
my-org-my-virtualhost
auf das Secretmy-org-my-virtualhost
. -
Ermitteln Sie den
virtualhost
-Namen aus demApigeeRouteConfig
.Der Name des
ApigeeRouteConfig
hat das Format<Apigee organization>-<virtualhost name>
.In diesem Beispiel ist
my-org
die Apigee-Organisation und der Name des virtuellen Hostsmy-virtualhost
. -
Suchen Sie den entsprechenden virtuellen Host in Ihrem
overrides.yaml
.virtualhosts: ... - name: my-virtualhost selector: app: apigee-ingressgateway caCertPath: ./certs/ca.pem sslCertPath: ./certs/vhost.pem sslKeyPath: ./certs/vhost.key ...
-
Validieren Sie den Inhalt der Datei, die über den in
caCertPath
angegebenen Pfad bereitgestellt wird. Der Inhalt muss die erforderlichen Start- und Endzertifikatblöcke enthalten. Beispiel:-----BEGIN CERTIFICATE----- MIIDYTCCAkmgAwIBAgIUSXeU0pQYRFzYlqZpKhNNJdBLFBIwDQYJKoZIhvcNAQEL ... <contents omitted> ... eWJyaWQuZTJlLmFwaWdlZWtzLm5ldDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC MMM= -----END CERTIFICATE-----
-
Sobald der Inhalt und das Format der Datei korrigiert wurden, wenden Sie die Änderung auf den virtuellen Host an:
helm upgrade ENV_GROUP_NAME apigee-virtualhost/ \ --namespace apigee \ --set envgroup=ENV_GROUP_NAME \ -f overrides.yaml
Ursache: Ingress-mTLS-CA-Zertifikat ist fehlerhaft
Das eingehende mTLS-CA-Zertifikat für eingehenden Traffic, das im Kubernetes-Secret gespeichert ist, auf das ein ApigeeRouteConfig
verweist, ist fehlerhaft.
Diagnose
Führen Sie dazu diesen Befehl aus:
kubectl -n apigee describe apigeeissue ISSUE_NAME
Dabei ist ISSUE_NAME der Name des Problems. Beispiel: ca-cert-invalid-my-org-my-virtualhost
Die Ausgabe sollte in etwa so aussehen:
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
Der Inhalt von Spec.Details
erläutert den Namen der ApigeeRouteConfig
, die auf das Kubernetes-Secret verweist, das das Ingress-mTLS-CA-Zertifikat für eingehenden Traffic enthält, das fehlerhaft ist und nicht geparst werden konnte.
Lösung
-
Verwenden Sie
kubectl describe
, um den Namen derApigeeRouteConfig
anzuzeigen, die das fehlerhafte mTLS-CA-Zertifikat für eingehenden Traffic enthält:kubectl -n apigee describe apigeeissue ISSUE_NAME
Dabei ist ISSUE_NAME der Name des Problems. Beispiel:
ca-cert-invalid-my-org-my-virtualhost
.In diesem Beispiel verweist
ApigeeRouteConfig
my-org-my-virtualhost
auf das Secretmy-org-my-virtualhost
. -
Ermitteln Sie den
virtualhost
-Namen aus demApigeeRouteConfig
.Der Name des
ApigeeRouteConfig
hat das Format<Apigee organization>-<virtualhost name>
.In diesem Beispiel ist
my-org
die Apigee-Organisation und der Name des virtuellen Hostsmy-virtualhost
. -
Suchen Sie den entsprechenden virtuellen Host in Ihrem
overrides.yaml
.virtualhosts: ... - name: my-virtualhost selector: app: apigee-ingressgateway caCertPath: ./certs/ca.pem sslCertPath: ./certs/vhost.pem sslKeyPath: ./certs/vhost.key ...
-
Validieren Sie den Inhalt der Datei, die über den in
caCertPath
angegebenen Pfad bereitgestellt wird. Achten Sie darauf, dass der Inhalt das gesamte Zertifikat enthält. Beispiel:-----BEGIN CERTIFICATE----- MIIDYTCCAkmgAwIBAgIUSXeU0pQYRFzYlqZpKhNNJdBLFBIwDQYJKoZIhvcNAQEL BQAwQDE+MDwGA1UEAww1bWF4bWlsbGlvbi1oeWJyaWQtc3RhZ2luZy1kZXYuaHli ... <contents omitted> ... 0TPPaik8U9dtFXMGT1DJkjPRPO0Jw5rlU8DKlNA/Kkv52aKJZNwB/cwmvoa/BFji PIPa9wY= -----END CERTIFICATE-----
-
Sobald der Inhalt und das Format der Datei korrigiert wurden, wenden Sie die Änderung auf den virtuellen Host an:
helm upgrade ENV_GROUP_NAME apigee-virtualhost/ \ --namespace apigee \ --set envgroup=ENV_GROUP_NAME \ -f overrides.yaml
Erfassen von Diagnoseinformationen erforderlich
Wenn das Problem auch nach Befolgen der obigen Anweisungen weiterhin besteht, sammeln Sie die folgenden Diagnoseinformationen und wenden Sie sich dann an Google Cloud Customer Care:
- Die Google Cloud-Projekt-ID.
- Der Name der Apigee Hybrid-Organisation.
- Das Feld
Spec.Details
vonApigeeIssue
. -
(Optional) Datei, auf die von
caCertPath
für den betroffenen virtuellen Host verwiesen wird.