인그레스 mTLS CA 인증서 만료

ApigeeApigee Hybrid 문서입니다.
이 주제에 해당하는 Apigee Edge 문서가 없습니다.

증상

apigee 네임스페이스의 리소스를 보면 ReasonAIS_INGRESS_MTLS_CA_CERT_EXPIREYApigeeIssue가 표시됩니다.

오류 메시지

kubectl -n apigee get apigeeissues를 실행하면 다음과 같은 오류가 표시됩니다.

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

가능한 원인

원인 설명
인그레스 mTLS CA 인증서가 곧 만료됨 구성된 인그레스 mTLS CA 인증서가 14일 이내에 만료됩니다.
인그레스 mTLS CA 인증서가 만료됨 구성된 인그레스 mTLS CA 인증서가 만료되었습니다.

원인: 인그레스 mTLS CA 인증서가 곧 만료됨

ApigeeRouteConfig에서 참조하는 Kubernetes 보안 비밀에 저장된 인그레스 mTLS CA 인증서가 14일 이내에 만료됩니다.

진단

다음 명령어를 실행합니다.

kubectl -n apigee describe apigeeissue ISSUE_NAME

여기서 ISSUE_NAME은 마이그레이션의 이름입니다. 예를 들면 ca-cert-expiring-soon-my-org-my-virtualhost입니다.

출력은 다음과 비슷하게 표시됩니다.

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

Spec.Details의 콘텐츠는 곧 만료되는 인그레스 mTLS CA 인증서가 포함된 Kubernetes 보안 비밀을 참조하는 ApigeeRouteConfig의 이름을 설명합니다.

해결 방법

  1. kubectl describe를 사용하여 곧 만료되는 인그레스 mTLS CA 인증서가 있는 ApigeeRouteConfig의 이름을 표시합니다.

    kubectl -n apigee describe apigeeissue ISSUE_NAME

    여기서 ISSUE_NAME은 마이그레이션의 이름입니다. 예를 들면 ca-cert-expiring-soon-my-org-my-virtualhost입니다.

    이 예시에서 ApigeeRouteConfig my-org-my-virtualhost는 보안 비밀 my-org-my-virtualhost를 참조합니다.

  2. ApigeeRouteConfig에서 virtualhost 이름을 확인합니다.

    ApigeeRouteConfig의 이름은 <Apigee organization>-<virtualhost name> 형식입니다.

    이 예시에서 my-org는 Apigee 조직이고 virtualhost 이름은 my-virtualhost입니다.

  3. overrides.yaml에서 해당 virtualhost를 찾습니다.

    virtualhosts:
    ...
    - name: my-virtualhost
      selector:
        app: apigee-ingressgateway
      caCertPath: ./certs/ca.pem
      sslCertPath: ./certs/vhost.pem
      sslKeyPath: ./certs/vhost.key
    ...
  4. caCertPath 파일에 나열된 CA 인증서를 업데이트합니다.

  5. 변경사항을 virtualhost에 적용합니다.

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

원인: 인그레스 mTLS CA 인증서가 만료됨

ApigeeRouteConfig에서 참조하는 Kubernetes 보안 비밀에 저장된 인그레스 mTLS CA 인증서가 만료되었습니다.

진단

다음 명령어를 실행합니다.

kubectl -n apigee describe apigeeissue ISSUE_NAME

여기서 ISSUE_NAME은 마이그레이션의 이름입니다. 예를 들면 ca-cert-expired-my-org-my-virtualhost입니다.

출력은 다음과 비슷하게 표시됩니다.

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

Spec.Details의 콘텐츠는 만료된 인그레스 mTLS CA 인증서가 포함된 Kubernetes 보안 비밀을 참조하는 ApigeeRouteConfig의 이름을 설명합니다.

해결 방법

  1. kubectl describe를 사용하여 만료된 인그레스 mTLS CA 인증서가 있는 ApigeeRouteConfig의 이름을 표시합니다.

    kubectl -n apigee describe apigeeissue ISSUE_NAME

    여기서 ISSUE_NAME은 마이그레이션의 이름입니다. 예를 들면 ca-cert-expired-my-org-my-virtualhost입니다.

    이 예시에서 ApigeeRouteConfig my-org-my-virtualhost는 보안 비밀 my-org-my-virtualhost를 참조합니다.

  2. ApigeeRouteConfig에서 virtualhost 이름을 확인합니다.

    ApigeeRouteConfig의 이름은 <Apigee organization>-<virtualhost name> 형식입니다.

    이 예시에서 my-org는 Apigee 조직이고 virtualhost 이름은 my-virtualhost입니다.

  3. overrides.yaml에서 해당 virtualhost를 찾습니다.

    virtualhosts:
    ...
    - name: my-virtualhost
      selector:
        app: apigee-ingressgateway
      caCertPath: ./certs/ca.pem
      sslCertPath: ./certs/vhost.pem
      sslKeyPath: ./certs/vhost.key
    ...
  4. caCertPath 파일에 나열된 CA 인증서를 업데이트합니다.

  5. 변경사항을 virtualhost에 적용합니다.

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

진단 정보 수집 필요

위 안내를 따른 후에도 문제가 지속되면 다음 진단 정보를 수집한 후 Apigee 지원팀에 연락합니다.

  1. Google Cloud 프로젝트 ID
  2. Apigee Hybrid 조직의 이름
  3. ApigeeIssueSpec.Details 필드
  4. (선택사항) 영향을 받는 virtualhost에 대해 caCertPath에서 참조하는 파일