Expiration du certificat CA mTLS d'entrée

Vous consultez la documentation d'Apigee et d'Apigee hybrid.
Il n'existe pas de documentation Apigee Edge équivalente pour ce sujet.

Symptôme

Un ApigeeIssue avec Reason AIS_INGRESS_MTLS_CA_CERT_EXPIREY s'affiche lorsque vous consultez les ressources de l'espace de noms apigee.

Messages d'erreur

Une fois kubectl -n apigee get apigeeissues exécuté, une erreur semblable à celle-ci s'affiche :

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

Causes possibles

Cause Description
Le certificat CA d'entrée mTLS arrive bientôt à expiration Le certificat CA d'entrée mTLS configuré expire dans 14 jours.
Le certificat CA d'entrée mTLS a expiré Le certificat CA d'entrée mTLS configuré a expiré.

Cause : Le certificat CA d'entrée mTLS arrive bientôt à expiration

Le certificat CA d'entrée mTLS stocké dans le secret Kubernetes référencé par un ApigeeRouteConfig expire dans les 14 prochains jours.

Diagnostic

Exécutez la commande suivante :

kubectl -n apigee describe apigeeissue ISSUE_NAME

ISSUE_NAME est le nom du problème. Par exemple, ca-cert-expiring-soon-my-org-my-virtualhost.

Le résultat doit ressembler à ce qui suit :

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

Le contenu de Spec.Details explique le nom du ApigeeRouteConfig qui fait référence au secret Kubernetes contenant le certificat CA d'entrée mTLS qui expire bientôt.

Solution

  1. Utilisez kubectl describe pour afficher le nom du ApigeeRouteConfig contenant le certificat CA d'entrée mTLS qui expire bientôt :

    kubectl -n apigee describe apigeeissue ISSUE_NAME

    ISSUE_NAME est le nom du problème. Par exemple, ca-cert-expiring-soon-my-org-my-virtualhost.

    Dans cet exemple, ApigeeRouteConfig my-org-my-virtualhost fait référence au secret my-org-my-virtualhost.

  2. Déterminez le nom virtualhost à partir de ApigeeRouteConfig.

    Le nom de la fonction ApigeeRouteConfig est au format suivant : <Apigee organization>-<virtualhost name>.

    Dans cet exemple, my-org est l'organisation Apigee et le nom de l'hôte virtuel est my-virtualhost.

  3. Recherchez l'hôte virtuel correspondant dans votre overrides.yaml.

    virtualhosts:
    ...
    - name: my-virtualhost
      selector:
        app: apigee-ingressgateway
      caCertPath: ./certs/ca.pem
      sslCertPath: ./certs/vhost.pem
      sslKeyPath: ./certs/vhost.key
    ...
  4. Mettez à jour le certificat CA répertorié dans le fichier caCertPath.

  5. Appliquez la modification à l'hôte virtuel :

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

Cause : Le certificat CA Ingress mTLS a expiré

Le certificat CA d'entrée mTLS stocké dans le secret Kubernetes référencé par un ApigeeRouteConfig a expiré.

Diagnostic

Exécutez la commande suivante :

kubectl -n apigee describe apigeeissue ISSUE_NAME

ISSUE_NAME est le nom du problème. Par exemple, ca-cert-expired-my-org-my-virtualhost.

Le résultat doit ressembler à ce qui suit :

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

Le contenu de Spec.Details explique le nom du ApigeeRouteConfig qui fait référence au secret Kubernetes contenant le certificat CA d'entrée mTLS qui a expiré.

Solution

  1. Utilisez kubectl describe pour afficher le nom de ApigeeRouteConfig qui contient le certificat CA d'entrée mTLS arrivé à expiration :

    kubectl -n apigee describe apigeeissue ISSUE_NAME

    ISSUE_NAME est le nom du problème. Par exemple, ca-cert-expired-my-org-my-virtualhost.

    Dans cet exemple, ApigeeRouteConfig my-org-my-virtualhost fait référence au secret my-org-my-virtualhost.

  2. Déterminez le nom virtualhost à partir de ApigeeRouteConfig.

    Le nom de la fonction ApigeeRouteConfig est au format suivant : <Apigee organization>-<virtualhost name>.

    Dans cet exemple, my-org est l'organisation Apigee et le nom de l'hôte virtuel est my-virtualhost.

  3. Recherchez l'hôte virtuel correspondant dans votre overrides.yaml.

    virtualhosts:
    ...
    - name: my-virtualhost
      selector:
        app: apigee-ingressgateway
      caCertPath: ./certs/ca.pem
      sslCertPath: ./certs/vhost.pem
      sslKeyPath: ./certs/vhost.key
    ...
  4. Mettez à jour le certificat CA répertorié dans le fichier caCertPath.

  5. Appliquez la modification à l'hôte virtuel :

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

Vous devez collecter des informations de diagnostic

Si le problème persiste, même après avoir suivi les instructions ci-dessus, rassemblez les informations de diagnostic suivantes, puis contactez l'assistance Apigee :

  1. ID de projet Google Cloud
  2. Nom de l'organisation Apigee Hybrid
  3. Champ Spec.Details de ApigeeIssue
  4. (Facultatif) Fichier référencé par caCertPath pour l'hôte virtuel concerné.