Esta
é a documentação da Apigee e da Apigee híbrida.
Não há documentação equivalente do
Apigee Edge para esse tópico.
Sintoma
Um ApigeeIssue
com Reason
AIS_INGRESS_MTLS_CA_CERT_INVALID
é exibido ao visualizar recursos no namespace apigee
.
Mensagens de erro
Depois de executar kubectl -n apigee get apigeeissues
, um erro como este é exibido:
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 possíveis
Causa | Descrição |
---|---|
O certificado de CA do mTLS da entrada não é codificado em PEM | O certificado de CA de mTLS de entrada configurado não é codificado em PEM. |
O certificado de CA da entrada mTLS está incorreto | O certificado de CA de mTLS de entrada configurado está incorreto. |
Causa: o certificado de CA de mTLS de entrada não é codificado em PEM
O certificado de CA de entrada mTLS armazenado no secret do Kubernetes referenciado por ApigeeRouteConfig
não tem os blocos de texto de codificação PEM (ou eles estão corrompidos).
Diagnóstico
Execute este comando:
kubectl -n apigee describe apigeeissue ISSUE_NAME
Em que ISSUE_NAME é o nome do problema. Por exemplo,
ca-cert-invalid-my-org-my-virtualhost
.
A saída será parecida com esta:
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
O conteúdo de Spec.Details
explica o nome do ApigeeRouteConfig
que se refere ao secret do Kubernetes que contém o certificado de CA da mTLS de entrada, que não é codificado em PEM.
Resolução
-
Use
kubectl describe
para exibir o nome daApigeeRouteConfig
que tem o certificado de CA de mTLS de entrada não codificado em PEM:kubectl -n apigee describe apigeeissue ISSUE_NAME
Em que ISSUE_NAME é o nome do problema. Por exemplo,
ca-cert-invalid-my-org-my-virtualhost
.Neste exemplo, o
ApigeeRouteConfig
my-org-my-virtualhost
referencia o secretmy-org-my-virtualhost
. -
Determine o nome do
virtualhost
noApigeeRouteConfig
.O nome do
ApigeeRouteConfig
está no formato:<Apigee organization>-<virtualhost name>
.Neste exemplo,
my-org
é a organização da Apigee, e o nome do virtualhost émy-virtualhost
. -
Encontre o virtualhost correspondente no seu
overrides.yaml
.virtualhosts: ... - name: my-virtualhost selector: app: apigee-ingressgateway caCertPath: ./certs/ca.pem sslCertPath: ./certs/vhost.pem sslKeyPath: ./certs/vhost.key ...
-
Valide o conteúdo do arquivo fornecido pelo caminho declarado em
caCertPath
. Verifique se o conteúdo tem os blocos de certificado inicial e final necessários. Exemplo:-----BEGIN CERTIFICATE----- MIIDYTCCAkmgAwIBAgIUSXeU0pQYRFzYlqZpKhNNJdBLFBIwDQYJKoZIhvcNAQEL ... <contents omitted> ... eWJyaWQuZTJlLmFwaWdlZWtzLm5ldDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC MMM= -----END CERTIFICATE-----
-
Depois que o conteúdo e o formato do arquivo forem corrigidos, aplique a alteração ao virtualhost:
helm upgrade ENV_GROUP_NAME apigee-virtualhost/ \ --namespace apigee \ --set envgroup=ENV_GROUP_NAME \ -f overrides.yaml
Causa: o certificado de CA de entrada mTLS está incorreto
O certificado de CA de entrada mTLS armazenado no secret do Kubernetes referenciado por
ApigeeRouteConfig
está incorreto.
Diagnóstico
Execute este comando:
kubectl -n apigee describe apigeeissue ISSUE_NAME
Em que ISSUE_NAME é o nome do problema. Por exemplo,
ca-cert-invalid-my-org-my-virtualhost
.
A saída será parecida com esta:
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
O conteúdo de Spec.Details
explica o nome do ApigeeRouteConfig
que se refere ao secret do Kubernetes que contém o certificado de CA da mTLS que está incorreto e não foi analisado.
Resolução
-
Use
kubectl describe
para exibir o nome daApigeeRouteConfig
que tem o certificado de CA de entrada mTLS incorreto:kubectl -n apigee describe apigeeissue ISSUE_NAME
Em que ISSUE_NAME é o nome do problema. Por exemplo,
ca-cert-invalid-my-org-my-virtualhost
.Neste exemplo, o
ApigeeRouteConfig
my-org-my-virtualhost
referencia o secretmy-org-my-virtualhost
. -
Determine o nome do
virtualhost
noApigeeRouteConfig
.O nome do
ApigeeRouteConfig
está no formato:<Apigee organization>-<virtualhost name>
.Neste exemplo,
my-org
é a organização da Apigee, e o nome do virtualhost émy-virtualhost
. -
Encontre o virtualhost correspondente no seu
overrides.yaml
.virtualhosts: ... - name: my-virtualhost selector: app: apigee-ingressgateway caCertPath: ./certs/ca.pem sslCertPath: ./certs/vhost.pem sslKeyPath: ./certs/vhost.key ...
-
Valide o conteúdo do arquivo fornecido pelo caminho declarado em
caCertPath
. Verifique se o certificado está inteiro no conteúdo. Exemplo:-----BEGIN CERTIFICATE----- MIIDYTCCAkmgAwIBAgIUSXeU0pQYRFzYlqZpKhNNJdBLFBIwDQYJKoZIhvcNAQEL BQAwQDE+MDwGA1UEAww1bWF4bWlsbGlvbi1oeWJyaWQtc3RhZ2luZy1kZXYuaHli ... <contents omitted> ... 0TPPaik8U9dtFXMGT1DJkjPRPO0Jw5rlU8DKlNA/Kkv52aKJZNwB/cwmvoa/BFji PIPa9wY= -----END CERTIFICATE-----
-
Depois que o conteúdo e o formato do arquivo forem corrigidos, aplique a alteração ao virtualhost:
helm upgrade ENV_GROUP_NAME apigee-virtualhost/ \ --namespace apigee \ --set envgroup=ENV_GROUP_NAME \ -f overrides.yaml
É necessário coletar informações de diagnóstico
Se o problema persistir mesmo depois de seguir as instruções acima, reúna as seguintes informações de diagnóstico e entre em contato com o Atendimento ao cliente do Google Cloud:
- O ID do projeto do Google Cloud.
- O nome da organização da Apigee híbrida.
- O campo
Spec.Details
doApigeeIssue
. -
(Opcional) Arquivo referenciado por
caCertPath
para o virtualhost afetado.