Comment API7 Enterprise gère-t-il le proxy des applications dans les clusters Kubernetes ?

January 24, 2024

Products

Dans l'ère dynamique des technologies cloud-native, Kubernetes est devenu la solution de prédilection pour de nombreuses entreprises cherchant à construire des applications résilientes et évolutives. API7 Enterprise offre des capacités puissantes en matière de sécurité et de gestion du trafic, associées à des performances exceptionnelles. API7 Enterprise s'intègre à la découverte de services Kubernetes, servant de proxy pour les applications déployées dans un cluster Kubernetes. Explorons le processus d'utilisation d'API7 Enterprise pour proxifier les applications dans votre cluster Kubernetes.

Prérequis

  1. Installez API7 Enterprise

Remarque : Si API7 Enterprise n'est pas déjà déployé dans les clusters Kubernetes, configurez les paramètres réseau de la machine hébergeant API7 EE pour garantir l'accessibilité aux pods en amont dans l'environnement Kubernetes.

  1. Déployez des services dans Kubernetes

Si vous avez déjà déployé des services dans Kubernetes, vous pouvez ignorer cette étape. Sinon, exécutez la commande suivante pour créer des services :

# créez un nouvel espace de noms
kubectl create namespace api7ee

kubectl create deployment httpbin --image=kennethreitz/httpbin:latest -n api7ee
kubectl create service clusterip httpbin --tcp=80:80 -n api7ee
  1. Créez un compte de service Kubernetes
  • API7 Enterprise s'appuie sur ces informations d'identification pour accéder à l'API Kubernetes et récupérer les configurations en amont. Par conséquent, nous devons d'abord créer une ressource RBAC. Voici la configuration spécifique du fichier YAML :

      # rbac.yaml
      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRole
      metadata:
        name: api7-k8s-sd-watcher
      rules:
        - apiGroups: [""]
          resources: ["endpoints"]
          verbs: ["list", "watch"]
      ---
      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRoleBinding
      metadata:
        name: api7-k8s-sd-watcher-binding
      subjects:
        - kind: ServiceAccount
          name: api7-k8s-sd-sa
          namespace: api7ee
      roleRef:
        kind: ClusterRole
        name: api7-k8s-sd-watcher
        apiGroup: rbac.authorization.k8s.io
      ---
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: api7-k8s-sd-sa
        namespace: api7ee
      ---
      apiVersion: v1
      kind: Secret
      metadata:
        name: api7-k8s-sd-secret
        namespace: api7ee
        annotations:
          kubernetes.io/service-account.name: api7-k8s-sd-sa
      type: kubernetes.io/service-account-token
    
    
  • Créez les ressources RBAC et obtenez ce jeton.

    kubectl apply -f rbac.yaml -n api7ee
    kubectl get secrets api7-k8s-sd-secret -n api7ee -ojsonpath='{.data.token}' | base64 -d
    

Mise en œuvre de la découverte de services Kubernetes dans API7 Enterprise

Connexion au registre de services Kubernetes

  1. Accédez à un groupe de passerelle existant et accédez au Registre de services via le menu de gauche.

  2. Cliquez sur le bouton Ajouter une connexion au registre de services. Sélectionnez Kubernetes comme type de découverte et fournissez l'adresse d'accès au service API Kubernetes ainsi que le jeton.

PA_1

  1. Une fois qu'API7 Enterprise établit une connexion réussie au registre de services, vous verrez un état sain.

PA_2

Publication du service pour les tests

  1. Accédez à la page des services, cliquez pour créer un nouveau service, et ajoutez la route /anything.

  2. Poursuivez la publication du service, et choisissez le bon en amont :

PA_3

  1. Après la publication, vous pouvez le tester en utilisant curl.

Résumé

En conclusion, nous avons abordé les étapes pour exploiter API7 Enterprise afin de proxifier les services Kubernetes. Pour plus d'informations sur les fonctionnalités d'API7 Enterprise, n'hésitez pas à nous contacter.

Tags: