Estás viendo la documentación de Apigee y Apigee hybrid.
No hay documentación de Apigee Edge equivalente para este tema.
Síntoma
Se muestra un ApigeeIssue
con Reason
AIS_INGRESS_MTLS_CA_CERT_INVALID
cuando se visualizan los recursos en el espacio de nombres apigee
.
Mensajes de error
Después de ejecutar kubectl -n apigee get apigeeissues
, se muestra un error como el siguiente:
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
Causas posibles
Causa | Descripción |
---|---|
El certificado de la AC de mTLS de entrada no está codificado con PEM | El certificado de la AC de mTLS de entrada configurado no está codificado con PEM. |
El certificado de la AC de mTLS de entrada tiene un formato incorrecto | El certificado de la AC de mTLS de entrada configurado tiene un formato incorrecto. |
Causa: El certificado de la AC de mTLS de entrada no está codificado con PEM
Al certificado de la AC de mTLS de entrada almacenado en el Secret de Kubernetes al que hace referencia una ApigeeRouteConfig
le faltan los bloques de texto con codificación PEM (o tienen un formato incorrecto).
Diagnóstico
Ejecuta el siguiente comando:
kubectl -n apigee describe apigeeissue ISSUE_NAME
En el que ISSUE_NAME es el nombre del problema. Por ejemplo:ca-cert-invalid-my-org-my-virtualhost
El resultado debería ser similar al siguiente:
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
El contenido de Spec.Details
explica el nombre de ApigeeRouteConfig
que hace referencia al Secret de Kubernetes que contiene el certificado de la AC de mTLS de entrada que no está codificado con PEM.
Solución
-
Usa
kubectl describe
para mostrar el nombre de laApigeeRouteConfig
que tiene el certificado de la AC de mTLS de entrada que no está codificado con PEM:kubectl -n apigee describe apigeeissue ISSUE_NAME
En el que ISSUE_NAME es el nombre del problema. Por ejemplo,
ca-cert-invalid-my-org-my-virtualhost
.En este ejemplo,
ApigeeRouteConfig
my-org-my-virtualhost
hace referencia al Secretmy-org-my-virtualhost
. -
Determina el nombre
virtualhost
deApigeeRouteConfig
.El nombre de
ApigeeRouteConfig
tiene el siguiente formato:<Apigee organization>-<virtualhost name>
.En este ejemplo,
my-org
es la organización de Apigee y el nombre del host virtual esmy-virtualhost
. -
Busca el host virtual correspondiente en tu
overrides.yaml
.virtualhosts: ... - name: my-virtualhost selector: app: apigee-ingressgateway caCertPath: ./certs/ca.pem sslCertPath: ./certs/vhost.pem sslKeyPath: ./certs/vhost.key ...
-
Valida el contenido del archivo que se proporcionó a través de la ruta de acceso declarada en
caCertPath
. Asegúrate de que el contenido tenga los bloques de certificado iniciales y finales necesarios. Por ejemplo:-----BEGIN CERTIFICATE----- MIIDYTCCAkmgAwIBAgIUSXeU0pQYRFzYlqZpKhNNJdBLFBIwDQYJKoZIhvcNAQEL ... <contents omitted> ... eWJyaWQuZTJlLmFwaWdlZWtzLm5ldDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC MMM= -----END CERTIFICATE-----
-
Una vez que se hayan corregido el contenido y el formato del archivo, aplica el cambio al host virtual:
helm upgrade ENV_GROUP_NAME apigee-virtualhost/ \ --namespace apigee \ --set envgroup=ENV_GROUP_NAME \ -f overrides.yaml
Causa: El certificado de la AC de mTLS de entrada tiene un formato incorrecto
El certificado de la AC de mTLS de entrada almacenado en el Secret de Kubernetes al que hace referencia una ApigeeRouteConfig
tiene un formato incorrecto.
Diagnóstico
Ejecuta el siguiente comando:
kubectl -n apigee describe apigeeissue ISSUE_NAME
En el que ISSUE_NAME es el nombre del problema. Por ejemplo:ca-cert-invalid-my-org-my-virtualhost
El resultado debería ser similar al siguiente:
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
El contenido de Spec.Details
explica el nombre de la ApigeeRouteConfig
que hace referencia al Secret de Kubernetes que contiene el certificado de la AC de mTLS de entrada que tiene un formato incorrecto y no se pudo analizar.
Solución
-
Usa
kubectl describe
para mostrar el nombre de laApigeeRouteConfig
que tiene el certificado de la AC de mTLS de entrada que tiene un formato incorrecto:kubectl -n apigee describe apigeeissue ISSUE_NAME
En el que ISSUE_NAME es el nombre del problema. Por ejemplo,
ca-cert-invalid-my-org-my-virtualhost
.En este ejemplo,
ApigeeRouteConfig
my-org-my-virtualhost
hace referencia al Secretmy-org-my-virtualhost
. -
Determina el nombre
virtualhost
deApigeeRouteConfig
.El nombre de
ApigeeRouteConfig
tiene el siguiente formato:<Apigee organization>-<virtualhost name>
.En este ejemplo,
my-org
es la organización de Apigee y el nombre del host virtual esmy-virtualhost
. -
Busca el host virtual correspondiente en tu
overrides.yaml
.virtualhosts: ... - name: my-virtualhost selector: app: apigee-ingressgateway caCertPath: ./certs/ca.pem sslCertPath: ./certs/vhost.pem sslKeyPath: ./certs/vhost.key ...
-
Valida el contenido del archivo que se proporcionó a través de la ruta de acceso declarada en
caCertPath
. Asegúrate de que el contenido incluya todo el certificado. Por ejemplo:-----BEGIN CERTIFICATE----- MIIDYTCCAkmgAwIBAgIUSXeU0pQYRFzYlqZpKhNNJdBLFBIwDQYJKoZIhvcNAQEL BQAwQDE+MDwGA1UEAww1bWF4bWlsbGlvbi1oeWJyaWQtc3RhZ2luZy1kZXYuaHli ... <contents omitted> ... 0TPPaik8U9dtFXMGT1DJkjPRPO0Jw5rlU8DKlNA/Kkv52aKJZNwB/cwmvoa/BFji PIPa9wY= -----END CERTIFICATE-----
-
Una vez que se hayan corregido el contenido y el formato del archivo, aplica el cambio al host virtual:
helm upgrade ENV_GROUP_NAME apigee-virtualhost/ \ --namespace apigee \ --set envgroup=ENV_GROUP_NAME \ -f overrides.yaml
Se debe recopilar información de diagnóstico
Si el problema persiste incluso después de seguir las instrucciones anteriores, recopila la siguiente información de diagnóstico y, luego, comunícate con Atención al cliente de Google Cloud:
- El ID del proyecto de Google Cloud.
- El nombre de la organización de Apigee Hybrid
- El campo
Spec.Details
deApigeeIssue
. -
(Opcional) Archivo al que hace referencia
caCertPath
para el host virtual afectado.