Opérateur APIM: Avant de commencer

Cette page s'applique à Apigee, mais pas à Apigee hybrid.

Consultez la documentation d' Apigee Edge.

Cette page décrit les étapes à suivre avant de pouvoir installer et configurer l'opérateur APIM Apigee pour Kubernetes (version Preview). Pour en savoir plus sur les avantages de l'utilisation de l'opérateur APIM, consultez la page Présentation de l'opérateur APIM Apigee pour Kubernetes.

Rôles requis

Pour obtenir les autorisations nécessaires afin de configurer les ressources requises pour installer et utiliser l'opérateur APIM, demandez à votre administrateur de vous accorder les rôles IAM suivants sur l'organisation:

Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Tâches de configuration requises

Avant d'installer l'opérateur APIM, assurez-vous d'effectuer les tâches suivantes pour configurer les ressources dont vous avez besoin pour utiliser cette fonctionnalité:

  1. Provisionnez une instance Apigee à l'aide de la version 1-14-0-apigee-4 ou ultérieure.

    Vous pouvez consulter les versions d'instance sur la page Détails de l'instance de l'interface utilisateur d'Apigee dans la console Google Cloud.Accédez à la page Instances dans la console Google Cloud pour sélectionner une instance et afficher ses détails:

    Accéder à la page "Instances"

    Vous pouvez utiliser l'opérateur APIM avec une organisation Apigee avec abonnement ou en paiement à l'usage. Pour en savoir plus sur le provisionnement d'instances Apigee payantes, consultez la section Avant de commencer.

  2. Installez la Google Cloud CLI.

    Une fois la Google Cloud CLI installée, exécutez la commande gcloud components update pour obtenir les derniers composants gcloud.

  3. Installez et configurez l'outil de ligne de commande kubectl.
  4. Installez Helm (version 3.14.3 ou ultérieure).
  5. Créez un cluster GKE avec la fédération d'identité de charge de travail pour GKE et la passerelle GKE activées.

    La fédération d'identité de charge de travail pour GKE est activée par défaut lorsque vous utilisez le mode Autopilot pour créer et gérer vos clusters. Pour en savoir plus, consultez la présentation d'Autopilot.

    Pour connaître la procédure à suivre pour créer un cluster avec la fédération d'identité de charge de travail pour GKE et la passerelle GKE activées à l'aide d'Autopilot, consultez Déploiement de passerelles.

  6. Déployez une passerelle GKE sur votre cluster.

    Vous pouvez choisir de configurer et de déployer une passerelle interne ou une passerelle externe à utiliser avec l'opérateur APIM. Si vous choisissez de déployer une passerelle interne, un sous-réseau proxy réservé et un VPC partagé sont requis. Pour les besoins de ce guide, nous vous recommandons de déployer une passerelle externe. Pour en savoir plus, consultez la section Exigences concernant le contrôleur Gateway GKE.

    Pour déployer la passerelle GKE, suivez la procédure décrite dans Déployer une ressource Gateway externe. Lorsque vous créez la passerelle, utilisez la configuration yaml suivante:

    # gateway.yaml
    kind: Gateway
    apiVersion: gateway.networking.k8s.io/v1beta1
    metadata:
      name: global-ext-lb1
      namespace: default
    spec:
      gatewayClassName: gke-l7-global-external-managed
      listeners:
        - name: http
          protocol: HTTP
          allowedRoutes:
            kinds:
              - kind: HTTPRoute
            namespaces:
              from: All
          port: 80

    Appliquez le fichier à votre cluster:

    kubectl apply -f gateway.yaml

  7. Déployez une application backend sur votre cluster.

    Pour déployer l'application backend exposée par la passerelle global-ext-lb1 que vous avez créée et déployée:

    1. Créez un fichier nommé target.yaml :
    2. Copiez le contenu suivant dans le nouveau fichier:
      # target.yaml
      apiVersion: v1
      kind: Namespace
      metadata:
        name: http
      ---
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: httpbin
        namespace: http
      ---
      apiVersion: v1
      kind: Service
      metadata:
        name: httpbin
        namespace: http
        labels:
          app: httpbin
          service: httpbin
      spec:
        type: LoadBalancer
        ports:
          - name: https
            port: 80
            targetPort: 80
        selector:
          app: httpbin
      ---
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: httpbin
        namespace: http
      spec:
        replicas: 1
        selector:
          matchLabels:
            app: httpbin
            version: v1
        template:
          metadata:
            labels:
              app: httpbin
              version: v1
          spec:
            serviceAccountName: httpbin
            containers:
              - image: docker.io/kennethreitz/httpbin
                imagePullPolicy: IfNotPresent
                name: httpbin
                ports:
                  - containerPort: 80
                resources:
                  requests:
                    cpu: 1
                    memory: 1024Mi
                  limits:
                    cpu: 1
                    memory: 1024Mi
    3. Appliquez la configuration à votre cluster comme suit :
      kubectl apply -f target.yaml

    Pour en savoir plus sur le déploiement d'applications backend sur des clusters GKE, consultez la section Déployer les applications de démonstration.

  8. Déployez la ressource HTTPRoute dans votre cluster pour mapper le trafic de la passerelle vers votre service backend.

    Pour en savoir plus sur la ressource HTTPRoute, consultez Déployer HTTPRoute (pour les passerelles internes) ou Créer un HTTPRoute (pour les passerelles externes).

    Pour les besoins de ce guide, nous vous recommandons de déployer une passerelle et un routage HTTP externes en suivant la procédure décrite dans la section Créer un routage HTTP. Lorsque vous créez le HTTPRoute, utilisez la configuration yaml suivante:

    # httproute.yaml
    kind: HTTPRoute
    apiVersion: gateway.networking.k8s.io/v1beta1
    metadata:
      name: http-bin-route
      namespace: http
    spec:
      parentRefs:
        - kind: Gateway
          name: global-ext-lb1
          namespace: default
      hostnames:
        - apigee-apim-operator-test.apigee.net
      rules:
        - matches:
            - path:
                value: /
          backendRefs:
            - name: httpbin
              kind: Service
              port: 80
              namespace: http

    Appliquez le fichier à votre cluster:

    kubectl apply -f httproute.yaml

  9. Vérifiez la configuration de GKE Gateway pour vous assurer qu'elle fonctionne comme prévu.
    1. Obtenez les détails de la passerelle à l'aide de la commande suivante:
      kubectl get gateway global-ext-lb1

      Le résultat doit se présenter comme suit :

      NAME             CLASS                            ADDRESS        PROGRAMMED   AGE
      global-ext-lb1   gke-l7-global-external-managed   34.54.193.72   True         11d
      

      Vérifiez qu'une adresse IP est attribuée à la passerelle et que la valeur de PROGRAMMED est True.

    2. Décrivez la passerelle pour vérifier que la route est associée:
      kubectl describe gateway global-ext-lb1

      Le résultat doit ressembler à ce qui suit :

      ...
        Listeners:
          Attached Routes:  1
          Conditions:
            Last Transition Time:  2024-10-03T03:10:17Z
      ...

      Vérifiez que la valeur de Attached Routes est 1, ce qui indique que l'itinéraire est associé.

    3. Envoyez une requête à la passerelle:
      curl http://GATEWAY_IP_ADDRESS/get \
          -H "Host: HOST_NAME"

      Où :

      • GATEWAY_IP_ADDRESS est l'adresse IP de la passerelle. Vous pouvez récupérer l'adresse IP de la passerelle à l'aide de la commande suivante, où GATEWAY_NAME est le nom de la passerelle:
        kubectl get gateways.gateway.networking.k8s.io GATEWAY_NAME -o=jsonpath="{.status.addresses[0].value}"
      • HOST_NAME est le nom d'hôte défini dans le HTTPRoute de la passerelle. Vous pouvez récupérer le HOST_NAME à l'aide de la commande suivante:
        kubectl get HTTPRoute HTTPROUTE_NAME -n NAMESPACE

      For example:

      curl http://34.54.193.72/get \
      -H "Host: apigee-apim-operator-test.apigee.net"

      La réponse devrait se présenter comme suit:

        {
          "args": {},
          "headers": {
            "Accept": "*/*",
            "Host": "apigee-apim-operator-test.apigee.net",
            "User-Agent": "curl/8.7.1",
            "X-Cloud-Trace-Context": "2bb8a80e29e80662ff9cb89971c447d9/13083106619927322701"
          },
          "origin": "67.164.1.10,34.54.193.72",
          "url": "http://apigee-apim-operator-test.apigee.net/get"
        }

Étape suivante

Découvrez comment installer l'opérateur APIM.