Contrôleur d'entrée Citrix ADC

Déployer API Gateway avec GitOps

Les définitions de ressources personnalisées (CRD) constituent le principal moyen de configurer les stratégies de passerelle d’API dans les déploiements cloud natifs. Les équipes opérationnelles créent les stratégies de configuration (routage, authentification, réécriture, Web Application Firewall (WAF), etc.) et les appliquent sous forme de CRD. Dans un contexte API Gateway, ces stratégies sont appliquées aux API spécifiques et à l’hébergement en amont de ces API.

Les développeurs d’API documentent les détails de l’API dans un format de spécification Open API pour les développeurs de logiciels clients et les équipes de mise en œuvre du service homologue pour utiliser les détails de l’API. Les documents d’API contiennent des informations telles que le chemin de base, le chemin, la méthode, l’authentification et l’autorisation.

Les équipes opérationnelles peuvent utiliser les informations d’un document de spécification d’API pour configurer API Gateway. Git, une solution de contrôle de code source, est largement utilisée par les développeurs et les équipes opérationnelles. La solution GitOps facilite la collaboration et la communication entre les équipes de développement et d’exploitation. GitOps permet de créer une livraison plus rapide, plus rationalisée et continue pour Kubernetes sans perte de stabilité.

Le déploiement d’API Gateway avec la solution GitOps permet aux équipes opérationnelles d’utiliser le document de spécification d’API créé par les développeurs de logiciels dans la configuration de la passerelle API. Cette solution automatise les tâches et l’échange d’informations entre les équipes de développement et d’exploitation des API.

À propos de la solution GitOps pour API Gateway

La solution GitOps est principalement constituée de trois entités :

  • Document de spécification de l’API ouverte
  • CRD de modèle de stratégie
  • CRD de déploiement d’API Gateway

Document de spécification de l’API ouverte

Créé par des développeurs d’API ou des concepteurs d’API, le document fournit des informations sur l’API. La solution GitOps utilise les détails suivants d’un document de spécification de l’API ouverte :

  • Chemin de base
  • Chemin
  • Méthode
  • Balises
  • Authentification
  • Authorization

Voici un exemple de fichier de spécification de l’API ouverte avec les détails (en rouge) qui sont utilisés pour créer automatiquement des stratégies.

Spécification de l'API ouverte

CRD de modèle de stratégie

Les CRD constituent le principal moyen de configurer une instance d’API Gateway. L’équipe des opérations crée et gère les implémentations CRD. Dans le flux de travail traditionnel, dans le cadre de la création des politiques, l’équipe des opérations remplit manuellement les détails de la cible, tels que le chemin en amont et le chemin d’accès de l’API dans les instances CRD. Dans la solution GitOps, le chemin d’accès de l’API et les détails en amont sont dérivés automatiquement. L’équipe des opérations crée les CRD sans aucun détail sur la cible et la solution fait référence à ces instances CRD en tant que modèles de stratégie.

La solution GitOps prend en charge les modèles de stratégie suivants :

  • Politique de réécriture
  • Politique de limite de taux
  • Stratégie d’authentification
  • WAF

Voici un exemple de modèle de stratégie de réécriture :

Remarque : Pour plus d’informations sur la façon de créer une instance CRD, consultez les CRD individuels.

Modèle de stratégie

CRD de déploiement d’API Gateway

Le CRD de déploiement d’API Gateway lie le document de spécification d’API aux modèles de stratégie. Ce CRD permet de mapper les ressources d’API avec les services en amont et les politiques de passerelle d’API liées au routage et à la sécurité. Le CRD de déploiement d’API Gateway est géré par l’équipe des opérations avec les données reçues de l’équipe de développement.

Le CRD de déploiement d’API Gateway configure les éléments suivants :

  • Détails du dépôt Git
  • Écouteur Endpoint
  • Mappage API vers l’amont
  • Mappage API vers stratégie
  • Références de stratégie d’authentification Open API au mappage du modèle de stratégie d’authentification

Alternativement, le CRD d’API Gateway prend en charge les sources non Git pour récupérer les documents OpenAPI Specification (OAS). Actuellement, les sources d’URL HTTP et HTTPS sont prises en charge. Ces URL peuvent être protégées par un mot de passe et l’authentification HTTP de base est prise en charge. Les informations d’identification peuvent être configurées à l’aide des mêmes champs que ceux des sources de fichiers OAS basées sur Git.

L’image suivante montre le CRD de déploiement d’API Gateway liant la spécification d’API aux modèles de stratégie à l’aide des sélecteurs d’API et des mappages de stratégie.

Spécification de l'API ouverte

Les API qui commencent par l’expression régulière /pet sont sélectionnées avec le modèle d’expression rationnelle du chemin et les API avec /play sont sélectionnées avec la balise play . Les définitions de sécurité du document de spécification de l’API sont mappées avec les configurations d’authentification, d’autorisation et d’audit disponibles dans le modèle CRD d’authentification.

Configurer le CRD d’API Gateway

Le CRD API Gateway lie les ressources d’API définies dans la spécification Swagger aux politiques définies dans les autres CRD.

Conditions préalables

Appliquez les définitions CRD pour les objets CRD suivants :

Définition de l’API

Il fournit des informations sur le dépôt Git dans lequel l’observateur Git surveille les fichiers de spécification de l’API ouverte.

Défense de l’API : détails d’accès au dépôt Git

Champ Description
Repository Spécifie l’URL du dépôt Git.
Branch Spécifie le nom de la branche Git (par défaut, master).
oas_secret_ref Spécifie la référence secrète d’accès Git en tant que nom d’objet secret Kubernetes. Remarque : Lors de la création d’un secret, conservez username et password comme noms de champ secrets pour les informations d’identification d’accès Git.
Files Les informations d’identification de ces URL OAS sont accessibles à partir du champ oas_secret_ref ou des combinaisons de champs nom_utilisateur et mot de passe.

Proxy d’API

Il fournit des informations sur la configuration du point de terminaison (VIP) utilisée pour exposer les API sur le frontal API Gateway.

api_proxy : détails VIP

Champ Description
ip_address Spécifie l’adresse IP du point final (VIP).
port Spécifie le port du point final.
protocol Spécifie le protocole (HTTP/HTTPS).
secret Spécifie le secret du certificat SSL pour la configuration du point de terminaison.

Mappages de stratégies

Il mappe les ressources de l’API avec les services en amont et les modèles de stratégie. Certaines informations de cette section sont collectées auprès des développeurs lorsque l’équipe des opérations crée le CRD.

Rubrique Sous-section Champ Sous-champ Description
Stratégies       Spécifie la stratégie et le mappage en amont.
    Name   Spécifie le nom de la stratégie. Il est unique dans une instance CRD.
  Sélecteur     Liste de filtres permettant de sélectionner les ressources de l’API.
    API   Spécifie le modèle d’expression régulière pour la sélection de l’API. Toutes les API qui correspondent à ce modèle sont sélectionnées pour appliquer les stratégies de ce bloc.
    method   Une liste de verbes HTTP, si le verbe de ressource d’API correspond à ANY dans la liste, il est sélectionné.
    Balises   Liste des balises à associer à une API. Ces balises sont mises en correspondance avec les balises du document de spécification de l’API. Vous pouvez utiliser des modèles de chemin d’accès basés sur des expressions ragexp ou des balises pour correspondre à une stratégie.
  En amont.     Spécifie l’amont pour la stratégie sélectionnée.
    Service   Spécifie le nom du service principal.
    Port   Spécifie le port de service principal.
  Politique contraignante     Spécifie la liste des stratégies à appliquer sur l’API sélectionnée.
      Type du modèle de stratégie Spécifie le type exact de stratégie. Les types pris en charge sont WAF, stratégie de réécriture et limite de débit.
      Name Spécifie le nom du modèle de stratégie.

Mappages AAA

Il mappe les références d’authentification du document de spécification de l’API avec les sections de définition de stratégie disponibles dans le modèle CRD d’authentification.

Rubrique Sous-section Champ Sous-champ Description
aaa       Mappages des sections de stratégie d’authentification, d’autorisation et d’audit.
    Nom_CRD   Spécifie le nom du modèle CRD d’authentification.
  Mappages     Mappage des références de stratégie de sécurité des spécifications d’API avec les sections appropriées du modèle CRD d’authentification. Remarque : Si la spécification de l’API fait référence à des correspondances de chaîne avec le nom de la section de stratégie dans le modèle CRD, un mappage explicite n’est pas requis.

Effectuez les étapes suivantes pour déployer le CRD d’API Gateway :

  1. Téléchargez le CRD API Gateway.

  2. Déployez le CRD d’API Gateway à l’aide de la commande suivante :

        kubectl create -f apigateway-crd.yaml`
    

    Voici un exemple de configuration CRD d’API Gateway :

    apiVersion: citrix.com/v1beta1
    kind: apigatewaypolicy
    metadata:
      name: apigatewaypolicyinstance
    spec:
        api_definition:
            repository: "https://code.citrite.net/scm/cnn/cic-gitops.git"
            branch: "modify-test-branch"
            oas_secret_ref: "mysecret"
            files:
                - "test_gitwatcher/petstore.yaml"
                - "test_gitwatcher/playstore.yaml"
        api_proxy:
            ipaddress: "10.106.172.83"
            port:  80
            protocol: "http"
            secret: "listner-secret"
        policies:
          - name: "p1"
            selector:
                - api: "/pet.\*"
                  method: ["GET", "POST"]
            upstream:
                service: "pet-service"
                port: 80
            policy_bindings:
                ratelimit:
                    name: "ratelimit-gitops-slow"
          - name: "p2"
            selector:
                - api: "/user.\*"
                  method: ["GET", "POST"]
            upstream:
                service: "user-service"
                port: 80
            policy_bindings:
                ratelimit:
                    name: "ratelimit-gitops-slow"
          - name: "p3"
            selector:
                - tags: ["play"]
            upstream:
                service: "play-service"
                port: 80
            policy_bindings:
                ratelimit:
                    name: "ratelimit-gitops"
                rewritepolicy:
                    name: "prefixurl"
                waf:
                    name: "buffoverflow"
        aaa:
          - crd_name: authgitops
            mappings:
              - petstore_auth: jwt-auth-provider
              - api_key: introspect-auth-provider
    <!--NeedCopy-->
    

Prise en charge des analyses basées sur les informations Web

L’analyse basée sur les informations Web est désormais prise en charge par le CRD d’API Gateway. Lorsque vous utilisez GitOps, les paramètres Web Insight suivants sont activés par défaut :

  • httpurl
  • httpuseragent
  • httphost
  • httpmethod
  • httpcontenttype
Déployer API Gateway avec GitOps