Estás consultando la documentación de Apigee y Apigee hybrid.
No hay documentación equivalente de
Apigee Edge sobre este tema.
Síntoma
Se muestra un ApigeeIssue
con Reason
AIS_INGRESS_MTLS_CA_CERT_INVALID
cuando se ven 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
Posibles motivos
Causa | Descripción |
---|---|
El certificado de CA de mTLS de Ingress no está codificado en PEM | El certificado de CA de mTLS de entrada configurado no está codificado en PEM. |
El certificado de CA de mTLS de Ingress tiene un formato incorrecto | El certificado de AC de mTLS de entrada configurado tiene un formato incorrecto. |
Causa: el certificado de CA de mTLS de Ingress no está codificado en PEM
Faltan los bloques de texto con codificación PEM en el certificado de CA de mTLS de entrada almacenado en el secreto de Kubernetes al que hace referencia un ApigeeRouteConfig
(o están mal formados).
Diagnóstico
Ejecuta el siguiente comando:
kubectl -n apigee describe apigeeissue ISSUE_NAME
Donde ISSUE_NAME es el nombre del problema. Por ejemplo, ca-cert-invalid-my-org-my-virtualhost
.
La salida debería ser similar a la 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 secreto de Kubernetes que contiene el certificado de CA de mTLS de entrada, que no está codificado en PEM.
Resolución
-
Usa
kubectl describe
para mostrar el nombre delApigeeRouteConfig
que tiene el certificado de CA de mTLS de entrada que no está codificado en PEM:kubectl -n apigee describe apigeeissue ISSUE_NAME
Donde 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 secretomy-org-my-virtualhost
. -
Determina el nombre de
virtualhost
a partir 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 virtualhost 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 proporcionado a través de la ruta declarada en
caCertPath
. Asegúrate de que el contenido incluya los bloques de inicio y finalización del certificado obligatorios. 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 virtualhost:
helm upgrade ENV_GROUP_NAME apigee-virtualhost/ \ --namespace apigee \ --set envgroup=ENV_GROUP_NAME \ -f overrides.yaml
Causa: el certificado de CA de mTLS de Ingress tiene un formato incorrecto
El certificado de CA de mTLS de entrada almacenado en el secreto de Kubernetes al que hace referencia un
ApigeeRouteConfig
tiene un formato incorrecto.
Diagnóstico
Ejecuta el siguiente comando:
kubectl -n apigee describe apigeeissue ISSUE_NAME
Donde ISSUE_NAME es el nombre del problema. Por ejemplo, ca-cert-invalid-my-org-my-virtualhost
.
La salida debería ser similar a la 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 ApigeeRouteConfig
, que hace referencia al secreto de Kubernetes que contiene el certificado de CA de mTLS de entrada, que está mal formado y no se ha podido analizar.
Resolución
-
Usa
kubectl describe
para mostrar el nombre deApigeeRouteConfig
que tiene el certificado de CA de mTLS de entrada con formato incorrecto:kubectl -n apigee describe apigeeissue ISSUE_NAME
Donde 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 secretomy-org-my-virtualhost
. -
Determina el nombre de
virtualhost
a partir 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 virtualhost 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 proporcionado a través de la ruta 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 virtualhost:
helm upgrade ENV_GROUP_NAME apigee-virtualhost/ \ --namespace apigee \ --set envgroup=ENV_GROUP_NAME \ -f overrides.yaml
Debe recoger información de diagnóstico
Si el problema persiste incluso después de seguir las instrucciones anteriores, reúne la siguiente información de diagnóstico y ponte en contacto con el equipo de Asistencia de Google Cloud:
- El Google Cloud ID del proyecto.
- 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.