Vous consultez la documentation d'Apigee et d'Apigee hybrid.
Il n'existe pas de documentation Apigee Edge équivalente pour ce sujet.
Symptôme
Problèmes de connectivité réseau entre Apigee et un service cible Southbound connecté par Private Service Connect (PSC).
Message d'erreur
Un problème de connexion réseau ou l'expiration d'un délai TCP entre Apigee et le service cible renverrait une erreur 503
et ressemblerait à l'erreur ci-dessous dans une session de débogage.
{"fault":{"faultstring":"The Service is temporarily unavailable","detail":{"errorcode":"messaging.adaptors.http.flow.ServiceUnavailable","reason":"TARGET_CONNECT_TIMEOUT"}}}
Causes possibles :
Cause | Description |
Régions différentes entre le rattachement de service et l'instance Apigee | La région de l'instance Apigee et celle du rattachement de service sont différentes. |
Règle de pare-feu d'entrée manquante pour le sous-réseau PSC dans le projet cible | Dans le projet cible, assurez-vous qu'il existe une règle de pare-feu d'entrée autorisant l'adresse IP et le port de la plage de sous-réseau PSC. |
Configuration incorrecte du rattachement de service dans le projet cible | Vérifiez le rattachement de service dans le projet cible. |
État incorrect du rattachement de point de terminaison dans Apigee | Vérifiez le rattachement de point de terminaison sur Apigee. |
Incohérence au niveau du port configuré entre le TargetEndpoint et l'ILB | Assurez-vous que le TargetEndpoint dans le proxy d'API utilise le même port que celui exposé par l'équilibreur de charge interne (ILB) dans le projet cible. |
Cause : régions différentes entre le rattachement de service et l'instance Apigee
Diagnostic
-
Vérifiez la région de l'instance Apigee à l'aide de l'une des méthodes suivantes :
- Avec l'interface utilisateur classique d'Apigee :
- Connectez-vous à l'interface utilisateur Apigee.
- Cliquez sur Administrateur > Instances.
- Cliquez sur une instance.
- Vérifiez l'emplacement d'hébergement de l'environnement d'exécution dans le volet Détails de l'instance.
- Avec l'interface utilisateur Apigee dans la console Google Cloud :
-
Dans la console Google Cloud, accédez à la page Instances Apigee.
- Cliquez sur une instance.
- Vérifiez l'emplacement d'hébergement de l'environnement d'exécution dans le volet Détails de l'instance.
-
- Avec un appel d'API :
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME/instances"
où ORG_NAME est le nom de l'organisation. Exemple :
example-apigee-support
Un résultat semblable au suivant s'affiche. L'emplacement d'hébergement de l'environnement d'exécution correspond à la valeur indiquée pour
location
ci-dessous. Exemple :asia-northeast1
."instances": [ { "name": "asia-northeast1", "location": "asia-northeast1", "host": "10.117.0.2", "port": "443", "createdAt": "1628150049760", "lastModifiedAt": "1682139265367", "diskEncryptionKeyName": "projects/apigee-x-support-apac-05/locations/asia-northeast1/keyRings/phanim-disk-key-1/cryptoKeys/phanim-disk-key-ring-1", "state": "ACTIVE", "peeringCidrRange": "SLASH_20", "runtimeVersion": "1-9-0-apigee-25", "consumerAcceptList": [ "example-apigee-support", "example-neg-project" ], "serviceAttachment": "projects/xb363132eb41cb643p-tp/regions/asia-northeast1/serviceAttachments/apigee-asia-northeast1-yp9o" }
- Avec l'interface utilisateur classique d'Apigee :
-
Vérifiez la région du rattachement du point de terminaison à l'aide d'un appel d'API :
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME/endpointAttachments/ENDPOINT_ATTACHMENT_NAME"
Où :
- ORG_NAME est le nom de l'organisation.
Exemple :
example-apigee-support
- ENDPOINT_ATTACHMENT_NAME correspond au nom du rattachement de point de terminaison. Exemple :
example-ea
Un résultat semblable au suivant s'affiche. La région du rattachement de point de terminaison correspond à la valeur indiquée pour
location
ci-dessous. Exemple :asia-northeast1
{ "name": "organizations/example-apigee-support/endpointAttachments/example-ea", "location": "asia-northeast1", "host": "7.0.4.2", "state": "ACTIVE", "connectionState": "ACCEPTED", "serviceAttachment": "projects/target-project/regions/asia-northeast1/serviceAttachments/gkebackend" }
- ORG_NAME est le nom de l'organisation.
Exemple :
-
Vérifiez la région du rattachement de service à l'aide de la console Cloud :
-
Dans la console Google Cloud, accédez à la page Private Service Connect.
- Vérifiez l'emplacement dans la colonne Région.
-
Solution
Assurez-vous que les régions de l'instance Apigee, du rattachement de point de terminaison et du rattachement de service sont identiques. Par exemple, asia-northeast1
.
Comme décrit dans la section Limites, l'accès mondial n'est pas pris en charge. Cela signifie que les rattachements de service et de point de terminaison doivent se trouver dans la même région. Par exemple, si votre instance Apigee se trouve dans la région us-west1
, vous ne pouvez pas y connecter des services qui se trouvent dans us-east2
ou dans une autre région.
Si les régions sont différentes, vous rencontrerez des problèmes de connectivité entre Apigee et le service cible.
Cause : règle de pare-feu d'entrée manquante pour le sous-réseau PSC dans le projet cible
Diagnostic
Dans le projet cible, vérifiez qu'il existe une règle de pare-feu qui autorise les adresses IP de la plage du sous-réseau PSC à se connecter au service cible :
-
Dans Google Cloud Console, accédez à la page Pare-feu.
-
Dans le volet Règles de pare-feu VPC, vérifiez qu'il existe une règle semblable à l'exemple suivant :
- Direction : entrée
- Action en cas de correspondance : autoriser
- Filtre source : plages IPv4/IPv6
- Plages d'adresses IP : plage d'adresses IP du sous-réseau PSC (
ipCidrRange
), que vous pouvez obtenir avec la commande gcloud suivante (qui sert à décrire le sous-réseau PSC) :gcloud compute networks subnets describe PSC_SUBNET_NAME --region=REGION
Où :
-
PSC_SUBNET_NAME correspond au nom du sous-réseau PCS.
Par exemple,
pscsub
. -
REGION correspond à l'emplacement. Par exemple,
asia-northeast1
.
Un résultat semblable au suivant s'affiche :
creationTimestamp: '2023-04-19T03:33:29.371-07:00' fingerprint: 1JPKY66teTg= gatewayAddress: 10.10.0.1 id: '5645967773396008342' ipCidrRange: 10.10.0.0/24 kind: compute#subnetwork name: pscsub network: https://www.googleapis.com/compute/v1/projects/target-project/global/networks/default privateIpGoogleAccess: false privateIpv6GoogleAccess: DISABLE_GOOGLE_ACCESS purpose: PRIVATE_SERVICE_CONNECT ....
-
PSC_SUBNET_NAME correspond au nom du sous-réseau PCS.
Par exemple,
- Protocoles et ports : ils doivent être répertoriés en fonction de la configuration de votre service cible.
Exemple :
Solution
Si la règle de pare-feu n'est pas en place, créez un sous-réseau PSC comme décrit dans la section Créer un rattachement de service, étape 2.
Cause : configuration incorrecte du rattachement de service dans le projet cible
Diagnostic
Vérifiez la région du rattachement de service à l'aide de l'une des méthodes suivantes :
- Avec la console Cloud :
-
Dans la console Google Cloud, accédez à la page Private Service Connect.
- Cliquez sur Services publiés.
- Cliquez sur un service.
- Vérifiez l'emplacement dans la ligne Région.
-
- Avec une
gcloud command
:gcloud compute service-attachments describe SERVICE_ATTACHMENT --region=REGION
Où :
-
SERVICE_ATTACHMENT est le nom du rattachement de service.
Par exemple,
gkebackend
. -
REGION correspond à l'emplacement. Exemple :
asia-northeast1
.
Un résultat semblable au suivant s'affiche :
connectedEndpoints: - endpoint: https://www.googleapis.com/compute/v1/projects/xb363132eb41cb643p-tp/regions/asia-northeast1/forwardingRules/example-ea pscConnectionId: '6816512648152066' status: ACCEPTED connectionPreference: ACCEPT_AUTOMATIC creationTimestamp: '2023-04-19T05:09:09.941-07:00' description: '' enableProxyProtocol: false fingerprint: 0BZDAZ3zDCs= id: '4503680255626733322' kind: compute#serviceAttachment name: gkebackend natSubnets: - https://www.googleapis.com/compute/v1/projects/target-project/regions/asia-northeast1/subnetworks/pscsub pscServiceAttachmentId: high: '21570167574103266' low: '4503680255626733322' region: https://www.googleapis.com/compute/v1/projects/target-project/regions/asia-northeast1 selfLink: https://www.googleapis.com/compute/v1/projects/target-project/regions/asia-northeast1/serviceAttachments/gkebackend targetService: https://www.googleapis.com/compute/v1/projects/target-project/regions/asia-northeast1/forwardingRules/k8s2-tcp-b65prv8v-default-ilb-svc-tv2s6klz
-
SERVICE_ATTACHMENT est le nom du rattachement de service.
Par exemple,
Solution
-
Assurez-vous que la valeur
connectedEndpoints.endpoint
fait référence au projet locataire d'Apigee et vérifiez que son état estACCEPTED
. Vous pouvez trouver le projet locataire à l'aide de l'API Apigee Organizations :curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME"
où ORG_NAME est le nom de l'organisation. Exemple :
example-apigee-support
.Un résultat semblable au suivant s'affiche. L'ID se trouve dans un champ nommé
apigeeProjectId
. Exemple :xb363132eb41cb643p-tp
.{ "name": "example-apigee-support", "createdAt": "1628148440954", "lastModifiedAt": "1650563608527", "environments": [ "dev" ], "properties": { "property": [ { "name": "features.mart.connect.enabled", "value": "true" }, { "name": "features.hybrid.enabled", "value": "true" } ] }, "analyticsRegion": "asia-northeast1", "authorizedNetwork": "default", "runtimeType": "CLOUD", "subscriptionType": "PAID", "caCertificate": "CERTIFICATE_NUMBER", "runtimeDatabaseEncryptionKeyName": "projects/example-apigee-support/locations/asia-northeast1/keyRings/phanim-key-ring-1/cryptoKeys/phanim-app-key-1", "projectId": "example-apigee-support", "state": "ACTIVE", "billingType": "SUBSCRIPTION", "addonsConfig": { "advancedApiOpsConfig": {}, "integrationConfig": {}, "monetizationConfig": {} }, "apigeeProjectId": "xb363132eb41cb643p-tp" }
-
Vérifiez que le rattachement de service possède une connectivité avec le rattachement de point de terminaison comme décrit dans
Modèles de réseau Southbound, Vérifier et gérer la connectivité des rattachements.
Dans l'interface utilisateur de l'étape 1, vérifiez les points suivants :
-
La ligne Sous-réseaux fait référence au sous-réseau PSC. Par exemple,
pscsub
. - La ligne Cible fait référence à l'équilibreur de charge interne approprié pour les backends cibles.
-
La ligne Sous-réseaux fait référence au sous-réseau PSC. Par exemple,
Cause : état incorrect du rattachement de point de terminaison dans Apigee
Diagnostic
Affichez le rattachement de point de terminaison sur Apigee à l'aide d'un appel d'API :
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME/endpointAttachments/ENDPOINT_ATTACHMENT_NAME"
Où :
-
ORG_NAME est le nom de l'organisation. Exemple :
example-apigee-support
. -
ENDPOINT_ATTACHMENT_NAME correspond au nom du rattachement de point de terminaison. Exemple :
example-ea
Un résultat semblable au suivant s'affiche :
{ "name": "organizations/example-apigee-support/endpointAttachments/example-ea", "location": "asia-northeast1", "host": "7.0.4.2", "state": "ACTIVE", "connectionState": "ACCEPTED", "serviceAttachment": "projects/target-project/regions/asia-northeast1/serviceAttachments/gkebackend" }
Solution
Vérifiez les éléments suivants :
state
correspond àACTIVE
.connectionState
correspond àACCEPTED
.-
serviceAttachment
fait référence au projet cible et au nom du rattachement de service appropriés.
Cause : incohérence au niveau du port configuré entre le TargetEndpoint et l'ILB
Diagnostic
- Dans le projet cible, utilisez la console Cloud pour rechercher le port exposé par la règle de transfert :
-
Dans la console Google Cloud, accédez à la page Private Service Connect.
- Cliquez sur Services publiés.
- Cliquez sur un service. Comme le montre l'exemple suivant, c'est le port 80 qui est exposé.
-
Solution
Vérifiez que le port 80 est bien celui figurant dans le TargetEndpoint
du proxy d'API.
Pour vérifier cela, accédez au proxy d'API et vérifiez l'URL TargetEndpoint
:
- Avec l'interface utilisateur classique d'Apigee :
- Connectez-vous à l'interface utilisateur Apigee.
- Cliquez sur Développer > Proxys d'API.
- Cliquez sur un proxy.
- Cliquez sur Développer.
- Consultez le volet XML pour obtenir les éléments suivants :
<HTTPTargetConnection> <URL>http://7.0.4.2:80</URL> </HTTPTargetConnection>
- Avec l'interface utilisateur Apigee dans la console Google Cloud :
-
Dans la console Google Cloud, accédez à la page Apigee.
- Dans la zone Développement de proxys, cliquez sur Proxys d'API.
- Cliquez sur un proxy.
- Cliquez sur Développer.
- Consultez le volet XML pour obtenir les éléments suivants :
<HTTPTargetConnection> <URL>http://7.0.4.2:80</URL> </HTTPTargetConnection>
-
Vous devez collecter des informations de diagnostic
Si le problème persiste, même après avoir suivi les instructions ci-dessus, rassemblez les informations de diagnostic suivantes, puis contactez Google Cloud Customer Care :
- Organisation Apigee
- Environnement et proxy d'API où survient le problème
- Session de débogage téléchargée (fournissant toutes les informations ci-dessus)
- Rattachement de point de terminaison utilisé
- Projet cible et rattachement de service