Como o API7 Enterprise Proxy Aplica-se em Clusters Kubernetes?

January 24, 2024

Products

Na era dinâmica das tecnologias nativas da nuvem, o Kubernetes emergiu como a solução preferida para muitas empresas que buscam construir aplicações resilientes e escaláveis. O API7 Enterprise oferece capacidades poderosas em segurança e gerenciamento de tráfego, aliadas a um desempenho excepcional. O API7 Enterprise integra-se ao Kubernetes Service Discovery, atuando como um proxy para aplicações implantadas dentro de um cluster Kubernetes. Vamos explorar o processo de utilização do API7 Enterprise para fazer o proxy de aplicações no seu cluster Kubernetes.

Pré-requisitos

  1. Instale o API7 Enterprise

Nota: Se o API7 Enterprise ainda não estiver implantado dentro de clusters Kubernetes, configure as configurações de rede da máquina que hospeda o API7 EE para garantir a acessibilidade aos pods upstream no ambiente Kubernetes.

  1. Implante Serviços no Kubernetes

Se você já implantou serviços no Kubernetes, pode pular esta etapa. Caso contrário, execute o seguinte comando para criar serviços:

# crie um novo namespace
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. Crie uma Conta de Serviço do Kubernetes
  • O API7 Enterprise depende dessa credencial para acessar a API do Kubernetes e buscar configurações upstream. Consequentemente, precisamos criar um recurso RBAC primeiro. A seguir está a configuração específica do arquivo 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
    
    
  • Crie os recursos RBAC e obtenha este token.

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

Implementação do Kubernetes Service Discovery no API7 Enterprise

Conectando ao Registro de Serviço do Kubernetes

  1. Vá para um grupo de gateway existente e acesse o Service Registry através do menu à esquerda.

  2. Clique no botão Add Service Registry Connection. Selecione Kubernetes como o tipo de descoberta e forneça o endereço de acesso ao serviço da API do Kubernetes e o token.

PA_1

  1. Uma vez que o API7 Enterprise estabeleça uma conexão bem-sucedida com o registro de serviço, você verá um status saudável.

PA_2

Publicando o Serviço para Testes

  1. Navegue até a página de serviços, clique para criar um novo serviço e adicione a rota /anything.

  2. Prossiga para publicar o serviço e escolha o upstream apropriado:

PA_3

  1. Após a publicação, você pode testá-lo usando curl.

Resumo

Em conclusão, discutimos os passos para aproveitar o API7 Enterprise para fazer o proxy de serviços Kubernetes. Para mais informações sobre os recursos do API7 Enterprise, não hesite em entrar em contato conosco.

Tags: