인그레스 인증서 만료

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

증상

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

오류 메시지

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

NAME                                         SEVERITY   REASON                     DOCUMENTATION                                                                          AGE
ingress-cert-expired-my-org-my-virtualhost   ERROR      AIS_INGRESS_CERT_EXPIREY   https://cloud.google.com/apigee/docs/hybrid/troubleshooting/AIS_INGRESS_CERT_EXPIREY   5h18m

가능한 원인

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

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

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

진단

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

kubectl -n apigee describe apigeeissue ISSUE_NAME

여기서 ISSUE_NAME은 문제의 이름입니다. 예를 들면 ingress-cert-expiring-soon-my-org-my-virtualhost입니다.

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

Name:         ingress-cert-expiring-soon-my-org-my-virtualhost
Namespace:    apigee
Labels:       ais-reason=AIS_INGRESS_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:        Ingress 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_CERT_EXPIREY
  Reason:         AIS_INGRESS_CERT_EXPIREY
  Severity:       WARNING
Events:           <none>
Spec:
  Details:        Ingress 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의 콘텐츠는 곧 만료되는 인그레스 인증서가 포함된 Kubernetes 보안 비밀을 참조하는 ApigeeRouteConfig의 이름을 설명합니다.

해결 방법

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

    kubectl -n apigee describe apigeeissue ISSUE_NAME

    여기서 ISSUE_NAME은 문제의 이름입니다. 예를 들면 ingress-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
      sslCertPath: ./certs/vhost.pem
      sslKeyPath: ./certs/vhost.key
    ...
  4. sslCertPathsslKeyPath 파일에 나열된 인증서와 키를 업데이트합니다.

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

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

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

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

진단

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

kubectl -n apigee describe apigeeissue ISSUE_NAME

여기서 ISSUE_NAME은 문제의 이름입니다. 예를 들면 ingress-cert-expired-my-org-my-virtualhost입니다.

다음과 비슷한 결과가 반환됩니다.

Name:         ingress-cert-expired-my-org-my-virtualhost
Namespace:    apigee
Labels:       ais-reason=AIS_INGRESS_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:        Ingress 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_CERT_EXPIREY
  Reason:         AIS_INGRESS_CERT_EXPIREY
  Severity:       ERROR
Events:           <none>
Spec:
  Details:        Ingress 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의 콘텐츠는 만료된 인그레스 인증서가 포함된 Kubernetes 보안 비밀을 참조하는 ApigeeRouteConfig의 이름을 설명합니다.

해결 방법

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

    kubectl -n apigee describe apigeeissue ISSUE_NAME

    여기서 ISSUE_NAME은 문제의 이름입니다. 예를 들면 ingress-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
      sslCertPath: ./certs/vhost.pem
      sslKeyPath: ./certs/vhost.key
    ...
  4. sslCertPathsslKeyPath 파일에 나열된 인증서와 키를 업데이트합니다.

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

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

진단 정보 수집 필요

위 안내를 따른 후에도 문제가 지속되면 다음 진단 정보를 수집한 후 Google Cloud Customer Care에 문의하세요.

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