Implantar o Edge Microgateway como um proxy de arquivo secundário

Você está lendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
info

Introdução

Este tópico explica como executar o Edge Microgateway em um cluster do Kubernetes como um proxy sidecar. Há duas opções de implantação de sidecar: injeção manual e automática. Este tópico descreve as duas opções.

Para mais informações, consulte Introdução ao Edge Microgateway no Kubernetes.

Antes de começar

Conclua as etapas descritas em Pré-requisitos.

Implantar um serviço de teste

Implante um serviço "hello" simples e verifique a implantação:

  1. Implante a amostra:

    kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default
  2. Verifique se o serviço está em execução. Talvez seja necessário aguardar alguns instantes até que o pod entre no estado de execução:

    kubectl get pods --namespace=default

    Exemplo de saída:

    NAME                          READY     STATUS    RESTARTS   AGE
    helloworld-569d6565f9-lwrrv   1/1       Running   0          17m
    
  3. Exclua a implantação do serviço de teste. Você vai reinstalar o sidecar depois de ativar a injeção de sidecar:

     kubectl delete -f samples/helloworld/helloworld.yaml --namespace=default

Como usar a injeção manual de sidecar

Das duas opções de injeção de sidecar, a manual é a abordagem mais simples e direta, podendo ser feita com um único comando kubectl.

Configurar o Edge Microgateway

O comando a seguir configura o Edge Microgateway para sua organização do Apigee e implanta o proxy edgemicro-auth.

  1. Execute o seguinte comando:

    edgemicro configure -o [org] -e [env] -u [username]

    Em que:

    • org: o nome da sua organização do Edge. Você precisa ser um administrador da organização.

    • env: um ambiente na sua organização (como teste ou produção).

    • username: o endereço de e-mail associado à sua conta da Apigee.

    Exemplo

    edgemicro configure -o myorg -e test -u jdoe@example.com

    A saída (exemplo abaixo) é salva no arquivo:

    $HOME/.edgemicro/org_name-env_name-config.yaml
    .

    current nodejs version is v6.9.1
    current edgemicro version is 2.5.25
    password:
    file doesn't exist, setting up
    Give me a minute or two... this can take a while...
    App edgemicro-auth deployed.
    checking org for existing KVM
    KVM already exists in your org
    configuring host edgemicroservices.apigee.net for region us-west1
    
    saving configuration information to: /Users/jdoe/.edgemicro/myorg-test-config.yaml
    
    vault info:
     -----BEGIN CERTIFICATE-----
    MIICpDCCAYwCCQCV9eBcO9a5WzANBgkqhkiG9w0BAQsFADAUMRIwEAYDVQQDDAls
    b2NhbGhvc3QwHhcNMagwODA5MDAzMDEzWhcNMTgwODEwMDAzMDEzWjAUMRIwEAYD
    VQQDDBlsb2NhbGhvc3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDh
    nAHT7JHX/WvWHRFb8FLm53SPIDld5LyPOUfINdEyhSIEeXoOUKg4EPweJPVSC9Vm
    Hw4ZMtEqWJM/XsQWvLe8ylRJa5wgmzmFCqAsuzs9+rmc9KvJqjpOh2uRTUf7KKfT
    iXL2UEseprcI5g8zNyqKyEf/ecWIwz3AkkPAZebVTsrdDfIDHvkyhhvlAHZAB9kn
    GtqP3N8kOlv4KQto9Gr7GYUGUIDugt7gM1F611+RBS+fYRi32GUAq/UQDkhYL8cp
    oIJiF7UYkk2+9t9CdOCDuIUCvJioHJQd0xvDpkC9f6LvwjwnCwku+4F2Q63+av5I
    mJoZJQPvW5aP53Qkk+kHAgMBAAEwDKYJKoZIhvcNAQELBQADggEBALyUBolXUFN8
    1bf268nR+gS8MOFDTxO1bUz+bKuT/g3K1PuNUJTueT+0L1H2OiZUzazAqwn2sqzN
    lQuvLg6LjxjlNkqTJGiJvGDcYVq45dv7UyxAZxhqxTxhlQ+Yu5R9pbQnzujezHpH
    6gtCoCkSt/QqiJ3YsmsVu5is+HpIJepMt0CyMh5tK9j87hl46QhHklaVfQ3ycMVm
    /wNPR/pjizg1FDUeq4nj/7DBVbMf9net/BDaZLeSW1HJ1vcsCXIcSZfQd4QymGFn
    8ADrND7ydVjwO/s23soPDTy0g4yLIZvky2tpT8d7YahNqSv2n7sXsLxruzcyCoQ4
    w+e3Z3F7IKI=
    -----END CERTIFICATE-----
    
    The following credentials are required to start edge micro
      key: 1a3b2754c7f20614817b86e09895825ecc252d34df6c4be21ae24356f09e6eb4
      secret: 16ad2431de73f07f57a6d44048f08d93b63f783bf1f2ac4221182aa7289c7cef
    
    edgemicro configuration complete!
    

Injetar o Edge Microgateway como um arquivo secundário

Para injetar manualmente o Edge Microgateway em um pod de serviço como um proxy de arquivo secundário, execute este comando:

kubectl apply -f <(edgemicroctl -org=your_org -env=your_env -key=your_key -sec=your_secret -conf=config_file_path -svc=service_deployment_file)

em que:

  • your_org: a organização da Apigee especificada no comando edgemicro configure.
  • your_env: o ambiente especificado no comando edgemicro configure.
  • your_key: a chave retornada do comando edgemicro configure.
  • your_secret: o secret retornado do comando edgemicro configure.
  • config_file_path: o caminho para o arquivo de configuração do Edge Micro retornado pelo comando edgemicro configure.
  • service_deployment_file: o caminho para o arquivo de implantação do serviço cujo pod vai receber o serviço secundário complementar. Por exemplo, samples/helloworld/helloworld.yaml.

Exemplo:

kubectl apply -f <(edgemicroctl -org=myorg -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/jdoe/.edgemicro/myorg-test-config.yaml -svc=samples/helloworld/helloworld.yaml)

Testar a configuração

  1. Verifique as implantações de serviço:

    kubectl get services -n default

    Exemplo de saída:

    NAME         TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
    helloworld   NodePort    10.15.254.163   <none>        8081:32401/TCP   56s
    kubernetes   ClusterIP   10.15.240.1     <none>        443/TCP          41m
    
  2. Agora você já pode testar a implantação de sidecar do Edge Microgateway. Acesse Testar o proxy para ver as etapas detalhadas.

Usar a injeção automática de sidecar

Nas etapas a seguir, você vai configurar a injeção automática de arquivo secundário para seu cluster do Kubernetes. Essa configuração permite que o Edge Microgateway seja injetado como um proxy sidecar no Kubernetes.

Instalar o injetor sidecar

  1. Instale o ConfigMap que ativa a injeção de sidecar do Edge Microgateway:

    kubectl apply -f install/kubernetes/edgemicro-sidecar-injector-configmap-release.yaml
  2. Execute o script a seguir para instalar o serviço webhook. O serviço de webhook é necessário para injeção automática de sidecar:

    ./install/kubernetes/webhook-create-signed-cert.sh \
        --service edgemicro-sidecar-injector \
        --namespace edgemicro-system \
        --secret sidecar-injector-certs
    
  3. Adicione o pacote de CA ao arquivo de instalação do webhook. O servidor da API Kubernetes usa esse arquivo para invocar o webhook:

    cat install/kubernetes/edgemicro-sidecar-injector.yaml | \
         ./install/kubernetes/webhook-patch-ca-bundle.sh > \
         install/kubernetes/edgemicro-sidecar-injector-with-ca-bundle.yaml
    
  4. Instale o webhook do injetor sidecar do Edge Microgateway:

    kubectl apply -f install/kubernetes/edgemicro-sidecar-injector-with-ca-bundle.yaml
    

    Exemplo de saída:

    service "edgemicro-sidecar-injector" created
    serviceaccount "edgemicro-sidecar-injector-service-account" created
    deployment "edgemicro-sidecar-injector" created
    mutatingwebhookconfiguration "edgemicro-sidecar-injector" created
    
  5. Verifique se o webhook do injetor de sidecar do Edge Microgateway está em execução:

    kubectl -n edgemicro-system get deployment -ledgemicro=sidecar-injector
    

    Exemplo de saída:

    NAME                         DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
    edgemicro-sidecar-injector   1         1         1            1           12m
    
  6. Verifique se o pod de injeção de sidecar está em execução no cluster. O namespace edgemicro-system é onde os serviços do sistema são instalados, incluindo o controlador de entrada, o back-end HTTP padrão e o injetor sidecar:

    kubectl get pods -n edgemicro-system

    Exemplo de saída:

    NAME                                            READY     STATUS    RESTARTS   AGE
    default-http-backend-55c6c69b88-gfnfd           1/1       Running   0          1h
    edgemicro-ingress-controller-64444469bf-jhn8b   1/1       Running   3          1h
    edgemicro-sidecar-injector-7d95698fbf-cq84q     1/1       Running   0          3m
    

Configurar e injetar o Edge Microgateway

Na próxima etapa, você vai executar um script interativo para criar uma configuração do Edge Microgateway associada a um namespace do Kubernetes. Em seguida, você vai injetar a configuração no cluster do Kubernetes.

  1. Execute o script interativo a seguir e forneça os parâmetros solicitados. O comando gera um perfil de configuração que você vai usar na próxima etapa.

    ./install/kubernetes/webhook-edgemicro-patch.sh

    Para informações sobre os parâmetros de entrada, consulte Referência.

    Exemplos de entradas:

    1. Namespace to deploy application [default]:

      Pressione Enter.

    2. Authenticate with OAuth Token ("n","Y") [N/y]

      Insira n.

    3. Apigee username [required]:

      Insira seu nome de usuário do Apigee (endereço de e-mail). Por exemplo, jdoe@google.com.

    4. Apigee password [required]:

      Digite sua senha da Apigee.

    5. Apigee organization [required]:

      Insira o nome da sua organização da Apigee.

    6. Apigee environment [required]:

      Insira um nome de ambiente para sua organização. Por exemplo, "test".

    7. Virtual Host [default]:

      Pressione Enter.

    8. Is this Private Cloud ("n","y") [N/y]:

      Insira n se você estiver na nuvem pública.

    9. Edgemicro Key. Press Enter to generate:

      Pressione Enter.

    10. Edgemicro Secret. Press Enter to generate:

      Pressione Enter.

    11. Edgemicro org-env-config.yaml. Press Enter to generate:

      Pressione Enter.

      Exemplo de saída:

      current nodejs version is v6.9.1
      current edgemicro version is 2.5.25
      config initialized to /Users/jdoe/.edgemicro/default.yaml
      Configure for Cloud
      ******************************************************************************************
      Config file is Generated in /Users/jdoe/Work/GITHUB/microgateway_2.5.25_Darwin_x86_64/config directory.
      
      Please make changes as desired.
      *****************************************************************************************
      
    12. Do you agree to proceed("n","y") [N/y]:

      Digite y.

      Exemplo de saída:

      Configuring Microgateway with
      
      key:daacf75dd660d160b801c9117fb1ec0935896615479e39dbbae88be81a2d84
      secret:a60fd57c1db9f3a06648173fb541cb9c59188d3b6037a76f490ebf7a6584b0
      config:~/.edgemicro/jdoe-test-config.yaml
      
      ********************************************************************************************************
      kubectl apply -f install/kubernetes/edgemicro-config-namespace-bundle.yaml
      ********************************************************************************************************
      
  2. Execute o comando na última linha da saída. Este comando kubectl injetará o perfil de configuração do Edge Microgateway gerado no Kubernetes:

    kubectl apply -f install/kubernetes/edgemicro-config-namespace-bundle.yaml
  3. Confira o status da injeção de webhook. Observação: no momento, ele não está ativado.

    kubectl get namespace -L edgemicro-injection

    Exemplo de saída:

    NAME               STATUS    AGE       EDGEMICRO-INJECTION
    default            Active    1d
    edgemicro-system   Active    1d
    kube-public        Active    1d
    kube-system        Active    1d
    
  4. Execute este comando para ativar a injeção de webhook:

    kubectl label namespace default edgemicro-injection=enabled
  5. Confira o status da injeção de webhook novamente. Agora ele está ativado:

    kubectl get namespace -L edgemicro-injection

    Exemplo de saída:

    NAME               STATUS    AGE       EDGEMICRO-INJECTION
    default            Active    1d        enabled
    edgemicro-system   Active    1d
    kube-public        Active    1d
    kube-system        Active    1d
    

Implantar o serviço de teste

Agora, reimplante o serviço de teste. O Edge Microgateway será injetado automaticamente no pod do serviço.

kubectl apply -f samples/helloworld/helloworld.yaml --namespace=default

Confirme se o Edge Microgateway foi injetado no pod junto com o serviço de teste:

kubectl get pods --namespace=default --watch

Exemplo de saída:

NAME                          READY     STATUS            RESTARTS   AGE
helloworld-6987878fc4-pkw8h   0/2       PodInitializing   0          12s
helloworld-6987878fc4-pkw8h   2/2       Running           0         26s

Quando o status mudar para Running, pressione ctrl-c para sair do comando.

Agora você já pode testar a implantação automática de arquivo secundário do Edge Microgateway. Acesse Testar o proxy para ver as etapas detalhadas.

Testar o proxy

Com a implantação de arquivo secundário, um proxy de API para o serviço é criado automaticamente. Não é necessário criar um proxy "compatível com o Edge Microgateway".

Acessar o endereço IP de entrada

Com o IP externo para o Ingress, é possível chamar o serviço de fora do cluster.

  1. Encontre o endereço IP externo do controlador de entrada:

    kubectl get ing -o wide

    Exemplo de saída:

    NAME      HOSTS     ADDRESS        PORTS     AGE
    gateway   *         35.238.13.54   80        1m
    
  2. Copie o valor EXTERNAL-IP do Ingress e exporte-o para uma variável. Você pode definir a variável manualmente:

    export GATEWAY_IP=external_ip

    Exemplo:

    export GATEWAY_IP=35.238.249.62

    Ou use este comando para definir isso para você:

    export GATEWAY_IP=$(kubectl describe ing gateway --namespace default | grep "Address" | cut -d ':' -f2 | tr -d "[:space:]")
  3. Verifique se a variável foi exportada. Exemplo:

    echo $GATEWAY_IP

    Exemplo de saída:

    35.238.249.62
    
  4. Chame o serviço:

    curl $GATEWAY_IP

    Saída:

    {"error":"missing_authorization","error_description":"Missing Authorization header"}
    

    Em seguida, você vai corrigir o erro de autorização ausente configurando um produto de API e um app de desenvolvedor no Edge para receber uma chave de API válida. Quando você adiciona a chave a um cabeçalho de autorização para a chamada de API, ela é bem-sucedida, e esse erro não aparece.

Criar componentes na Apigee Edge

Em seguida, crie um produto de API e um app de desenvolvedor no Apigee Edge.

Criar um produto de API

  1. Faça login no Apigee Edge.
  2. Selecione Publicar > Produtos da API no menu de navegação lateral.
  3. Clique em + Produto da API. A página do produto vai aparecer.
  4. Preencha a página do produto da seguinte maneira. Para campos que não são mencionados abaixo, você pode usar os valores padrão. Não salve até receber uma instrução para fazer isso.

    Nome hello-world-product
    Nome de exibição Edge Micro hello product
    Ambiente test

  5. Na seção "Caminho", clique em + Recurso personalizado.

  6. Adicione o caminho /.

  7. Clique em + Recurso personalizado novamente e adicione o caminho /**

  8. Na seção "Proxies de API", clique em + Proxy de API e adicione edgemicro-auth.

  9. Salve o produto da API.

Criar um app do desenvolvedor

  1. Selecione Apps no menu de navegação lateral.
  2. Clique em + App. A página de detalhes do app do desenvolvedor vai aparecer.
  3. Preencha a página do app do desenvolvedor da maneira a seguir. Não salve até receber uma instrução para fazer isso.

    Nome hello-world-app
    Nome de exibição Edge Micro hello app
    Desenvolvedor Selecione um desenvolvedor no menu suspenso.
  4. Na seção "Credenciais", clique em + Produto e selecione o hello-world-product que você acabou de criar.

  5. Clique em Salvar.

  6. Você volta à página que lista todos os apps do desenvolvedor.

  7. Selecione o app que você acabou de criar, hello-world-app.

  8. Clique em Mostrar ao lado de Chave do consumidor.

  9. Copie o valor da chave do consumidor. Esse valor é a chave de API que você vai usar para fazer chamadas de API seguras ao serviço helloworld.

  10. Aguarde alguns minutos. As mudanças feitas no Apigee Edge levam alguns minutos para serem sincronizadas com a instância do Edge Microgateway implantada no cluster.

Chamar a API

Depois que as mudanças de configuração forem extraídas para o microrreceptáculo, você poderá realizar os seguintes testes.

  1. Chame a API sem uma chave de API. Você vai receber uma mensagem de erro, como mostrado abaixo:

    curl $GATEWAY_IP

    Saída esperada:

    {"error":"missing_authorization","error_description":"Missing Authorization
    header"}
    

    Para fazer chamadas de API bem-sucedidas, você precisa da chave de API.

  2. Encontre o token do cliente no app de desenvolvedor que você criou. Esse valor é a chave de API necessária para chamar o proxy de teste:

    curl -H 'x-api-key:your-edge-api-key'  $GATEWAY_IP

    Exemplo:

    curl -H "x-api-key:DeX2eEesYAdRJ5Gdbo77nT9uUfJZql19" $GATEWAY_IP

    Saída:

    Hello world
    

    A resposta "Hello world" é retornada pelo serviço helloworld implantado no pod. A chamada para esse serviço passou primeiro pelo Edge Microgateway, onde a autenticação foi realizada. Se você vir a resposta "Hello world", isso significa que o Edge Microgateway foi configurado para funcionar como um proxy secundário no pod de serviço helloworld.

A seguir

Consulte a seção Tarefas para informações sobre como adicionar plug-ins personalizados, escalonar a implantação, fazer mudanças na configuração e outras tarefas que você pode querer realizar.