ここに表示されているのは、Apigee と Apigee ハイブリッドのドキュメントです。
このトピックに対応する Apigee Edge のドキュメントはありません。
症状
apigee
名前空間のリソースを表示したときに、ApigeeIssue
(Reason
= AIS_INGRESS_CERT_MISMATCH
)が表示されます。
エラー メッセージ
kubectl -n apigee get apigeeissues
を実行すると、次のエラーが表示されます。
NAME SEVERITY REASON DOCUMENTATION AGE ingress-cert-mismatch-my-org-my-virtualhost ERROR AIS_INGRESS_CERT_MISMATCH https://cloud.google.com/apigee/docs/hybrid/troubleshooting/AIS_INGRESS_CERT_MISMATCH 5h18m
原因: Ingress 証明書の不一致
ApigeeRouteConfig
によって参照される Kubernetes Secret に格納されている秘密鍵と証明書が一致していません。
診断
次のコマンドを実行します。
kubectl -n apigee describe apigeeissue ISSUE_NAME
ここで ISSUE_NAME は問題の名前です。例: ingress-cert-mismatch-my-org-my-virtualhost
。
次のような結果が返されます。
Name: ingress-cert-mismatch-my-org-my-virtualhost Namespace: apigee Labels: ais-reason=AIS_INGRESS_CERT_MISMATCH 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 cert and private key in secret "my-org-my-virtualhost" for ApigeeRouteConfig "my-org-my-virtualhost" do not match Documentation: https://cloud.google.com/apigee/docs/hybrid/troubleshooting/AIS_INGRESS_CERT_MISMATCH Reason: AIS_INGRESS_CERT_MISMATCH Severity: ERROR Events: <none>
Spec: Details: Ingress cert and private key in secret "my-org-my-virtualhost" for ApigeeRouteConfig "my-org-my-virtualhost" do not match
Spec.Details
の内容は、Ingress 証明書と秘密鍵を含む Kubernetes Secret を参照する ApigeeRouteConfig
の名前を示します。
解決策
-
kubectl describe
を使用して、Ingress 証明書と鍵が一致していないApigeeRouteConfig
の名前を表示します。kubectl -n apigee describe apigeeissue ISSUE_NAME
ここで ISSUE_NAME は問題の名前です。例:
ingress-cert-mismatch-my-org-my-virtualhost
。この例では、
ApigeeRouteConfig
my-org-my-virtualhost
が Secretmy-org-my-virtualhost
を参照しています。 -
ApigeeRouteConfig
からvirtualhost
の名前を特定します。ApigeeRouteConfig
の名前は<Apigee organization>-<virtualhost name>
の形式になっています。この例では、Apigee 組織は
my-org
で、仮想ホスト名はmy-virtualhost
です。 -
overrides.yaml
で、対応する仮想ホストを探します。virtualhosts: ... - name: my-virtualhost selector: app: apigee-ingressgateway sslCertPath: ./certs/vhost.pem sslKeyPath: ./certs/vhost.key ...
-
使用されている証明書ファイルと鍵ファイルが一致しているかどうかを確認します。
openssl
コマンドに前のステップのsslCertPath
とsslKeyPath
を指定して、MD5 サムが一致しているかどうかを確認します。openssl x509 -noout -modulus -in SSL_CERT_PATH | openssl md5
openssl rsa -noout -modulus -in SSL_KEY_PATH | openssl md5
-
ここで、SSL_CERT_PATH は前のステップの
sslCertPath
です。例:./certs/vhost.pem
。 -
ここで、SSL_KEY_PATH は前のステップの
sslKeyPath
です。例:./certs/vhost.key
。
上記の 2 つのコマンドの出力が一致している必要があります。
openssl x509 -noout -modulus -in ./certs/vhost.pem | openssl md5 MD5(stdin)= 40ba189dbe9d6fbfbdde1a8ef803d2d4
openssl rsa -noout -modulus -in ./certs/vhost.key | openssl md5 MD5(stdin)= 40ba189dbe9d6fbfbdde1a8ef803d2d4
-
ここで、SSL_CERT_PATH は前のステップの
-
上記のコマンドの出力が一致していない場合は、次のいずれかの方法で問題を解決します。
-
仮想ホストの
sslCertPath
とsslKeyPath
を、正しいファイルパスを指すように修正します。 -
sslCertPath
ファイルまたはsslKeyPath
ファイルの内容を修正して、一致する正しい証明書と鍵のペアを含めます。
-
仮想ホストの
-
変更を仮想ホストに適用します。
Helm
helm upgrade ENV_GROUP_NAME apigee-virtualhost/ \ --namespace apigee \ --set envgroup=ENV_GROUP_NAME \ -f overrides.yaml
apigeectl
apigeectl apply -f overrides.yaml --settings virtualhosts
診断情報の収集が必要な場合
前述の手順を踏んでも問題が解決しない場合は、次の診断情報を収集して Google Cloud カスタマーケアにご連絡ください。
- Google Cloud プロジェクト ID。
- Apigee ハイブリッド組織の名前。
ApigeeIssue
のSpec.Details
フィールド。-
(省略可)問題の仮想ホストの
sslCertPath
とsslKeyPath
によって参照されているファイル。