Ablauf des mTLS-CA-Zertifikats für eingehenden Traffic

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_EXPIREY 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-expired-my-org-my-virtualhost   ERROR      AIS_INGRESS_MTLS_CA_CERT_EXPIREY   https://cloud.google.com/apigee/docs/hybrid/troubleshooting/AIS_INGRESS_MTLS_CA_CERT_EXPIREY   5h18m

Mögliche Ursachen

Ursache Beschreibung
Ingress-mTLS-CA-Zertifikat läuft bald ab Das konfigurierte mTLS-CA-Zertifikat für eingehenden Traffic läuft innerhalb von 14 Tagen ab.
Das eingehende mTLS-CA-Zertifikat ist abgelaufen Das konfigurierte mTLS-CA-Zertifikat für eingehenden Traffic ist abgelaufen.

Ursache: Ingress-mTLS-CA-Zertifikat läuft bald ab

Das eingehende mTLS-CA-Zertifikat für eingehenden Traffic, das im Kubernetes-Secret gespeichert ist, auf das von einem ApigeeRouteConfig verwiesen wird, läuft innerhalb der nächsten 14 Tage ab.

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-expiring-soon-my-org-my-virtualhost

Die Ausgabe sollte in etwa so aussehen:

Name:         ca-cert-expiring-soon-my-org-my-virtualhost
Namespace:    apigee
Labels:       ais-reason=AIS_INGRESS_MTLS_CA_CERT_EXPIREY
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 expiring in 5.409373245s at 2024-03-11 19:04:12 +0000 UTC
  Documentation:  https://cloud.google.com/apigee/docs/hybrid/troubleshooting/AIS_INGRESS_MTLS_CA_CERT_EXPIREY
  Reason:         AIS_INGRESS_MTLS_CA_CERT_EXPIREY
  Severity:       WARNING
Events:           <none>
Spec:
  Details:        CA certificate in secret "my-org-my-virtualhost" for ApigeeRouteConfig "my-org-my-virtualhost" is expiring in 5.409373245s at 2024-03-11 19:04:12 +0000 UTC

Der Inhalt von Spec.Details erläutert den Namen der ApigeeRouteConfig, der sich auf das Kubernetes-Secret mit dem Ingress-mTLS-CA-Zertifikat für eingehenden Traffic bezieht, das bald abläuft.

Lösung

  1. Verwenden Sie kubectl describe, um den Namen des ApigeeRouteConfig anzuzeigen, der das mTLS-CA-Zertifikat für eingehenden Traffic enthält, das bald abläuft:

    kubectl -n apigee describe apigeeissue ISSUE_NAME

    Dabei ist ISSUE_NAME der Name des Problems. Beispiel: ca-cert-expiring-soon-my-org-my-virtualhost.

    In diesem Beispiel verweist ApigeeRouteConfig my-org-my-virtualhost auf das Secret my-org-my-virtualhost.

  2. Ermitteln Sie den virtualhost-Namen aus dem ApigeeRouteConfig.

    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 Hosts my-virtualhost.

  3. 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
    ...
  4. Aktualisieren Sie das CA-Zertifikat, das in der Datei caCertPath aufgeführt ist.

  5. Wenden Sie die Änderung auf den Virtualhost an:

    helm upgrade ENV_GROUP_NAME apigee-virtualhost/ \
      --namespace apigee \
      --set envgroup=ENV_GROUP_NAME \
      -f overrides.yaml

Ursache: Ingress-mTLS-CA-Zertifikat für eingehenden Traffic ist abgelaufen

Das eingehende mTLS-CA-Zertifikat für eingehenden Traffic, das im Kubernetes-Secret gespeichert ist, auf das ein ApigeeRouteConfig verweist, ist abgelaufen.

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-expired-my-org-my-virtualhost

Die Ausgabe sollte in etwa so aussehen:

Name:         ca-cert-expired-my-org-my-virtualhost
Namespace:    apigee
Labels:       ais-reason=AIS_INGRESS_MTLS_CA_CERT_EXPIREY
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" expired at: 2024-03-11 19:12:10 +0000 UTC
  Documentation:  https://cloud.google.com/apigee/docs/hybrid/troubleshooting/AIS_INGRESS_MTLS_CA_CERT_EXPIREY
  Reason:         AIS_INGRESS_MTLS_CA_CERT_EXPIREY
  Severity:       ERROR
Events:           <none>
Spec:
  Details:        CA certificate in secret "my-org-my-virtualhost" for ApigeeRouteConfig "my-org-my-virtualhost" expired at: 2024-03-11 19:12:10 +0000 UTC

Der Inhalt von Spec.Details erläutert den Namen des ApigeeRouteConfig, der auf das Kubernetes-Secret mit dem abgelaufenen mTLS-CA-Zertifikat für eingehenden Traffic verweist.

Lösung

  1. Verwenden Sie kubectl describe, um den Namen des ApigeeRouteConfig anzuzeigen, der das abgelaufene 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-expired-my-org-my-virtualhost.

    In diesem Beispiel verweist ApigeeRouteConfig my-org-my-virtualhost auf das Secret my-org-my-virtualhost.

  2. Ermitteln Sie den virtualhost-Namen aus dem ApigeeRouteConfig.

    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 Hosts my-virtualhost.

  3. 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
    ...
  4. Aktualisieren Sie das CA-Zertifikat, das in der Datei caCertPath aufgeführt ist.

  5. Wenden Sie die Änderung auf den Virtualhost 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 den Apigee-Support:

  1. Die Google Cloud-Projekt-ID.
  2. Der Name der Apigee Hybrid-Organisation.
  3. Das Feld Spec.Details von ApigeeIssue.
  4. (Optional) Datei, auf die von caCertPath für den betroffenen virtuellen Host verwiesen wird.