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

Esta é a documentação do Apigee Edge.
Acesse Documentação da Apigee X.
informações

Introdução

Neste tópico, explicamos como executar o Edge Microgateway em um cluster do Kubernetes um proxy secundário Você tem duas opções de implantação de arquivo secundário: manual e automática por injeção. 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 "olá" 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é o pod é ativado para o 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. Ele será reinstalado mais tarde, depois de ativar injeção de arquivo secundário:

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

Como usar a injeção manual de arquivo secundário

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

Configurar o Edge Microgateway

O comando a seguir configura o Edge Microgateway para sua organização da 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 de Edge (você precisa ser um administrador da organização).

    • env: um ambiente na 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 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 que você especificou 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 do comando edgemicro configure.
  • service_deployment_file: o caminho para o arquivo de implantação do serviço que terá o pod obter o serviço de arquivo 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 do 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 está tudo pronto para testar a implantação do arquivo secundário do Edge Microgateway. Acessar Teste o proxy para ver as etapas detalhadas.

Como usar a injeção automática de arquivo secundário

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

Instalar o injetor do sidecar

  1. Instalar o ConfigMap que ativa a injeção de arquivo secundário 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 CAs ao arquivo de instalação do webhook. A biblioteca O api-server 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 do arquivo secundário 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 arquivo secundário 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 arquivo secundário está em execução no cluster. O namespace edgemicro-system é onde os serviços do sistema estão instalados, incluindo o Controlador de entrada, back-end de HTTP padrão e injetor de arquivo secundário:

    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 um Edge Microgateway configuração de rede associada a um namespace do Kubernetes. Em seguida, injetará o no cluster do Kubernetes.

  1. Execute o script interativo a seguir e forneça os parâmetros solicitados. A 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 a Referência.

    Entradas de amostra:

    1. Namespace to deploy application [default]:

      Pressione Enter.

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

      Digite n.

    3. Apigee username [required]:

      Digite seu nome de usuário da 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, "teste".

    7. Virtual Host [default]:

      Pressione Enter.

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

      Digite n se você estiver em uma 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 fornecido na última linha da saída. Este comando kubectl injeta o perfil de configuração gerado do Edge Microgateway no Kubernetes:

    kubectl apply -f install/kubernetes/edgemicro-config-namespace-bundle.yaml
  3. Veja o status da injeção de webhook. Ela não está ativada no momento:

    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 do webhook:

    kubectl label namespace default edgemicro-injection=enabled
  5. Confira o status da injeção de webhook novamente. Observe que 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 ao 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 teste serviço:

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 está tudo pronto para testar a implantação automática de arquivo secundário do Edge Microgateway. Acessar Teste o proxy para ver as etapas detalhadas.

Testar o proxy

Com a implantação do arquivo secundário, um proxy de API para seu serviço é criado automaticamente para você. Você não é necessário criar uma política proxy.

Encontre o endereço IP de entrada

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

  1. Consiga o endereço IP externo do controlador do Ingress:

    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 da Entrada 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 configurá-la 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 resolver o erro de autorização ausente configurando um produto de API e um app de desenvolvedor. no Edge para gerar uma chave de API válida. Quando você adiciona a chave a uma autorização cabeçalho para a chamada de API, a chamada será bem-sucedida e você não verá esse erro.

Criar componentes no Apigee Edge

Em seguida, crie um produto de API e um app para desenvolvedores na Apigee Edge.

Criar um produto da 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 é exibida.
  4. Preencha a página do produto da seguinte forma. Para os campos que não são mencionados abaixo, 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 "API Proxies", clique em + API Proxy 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 + Aplicativo. A página "Detalhes do app do desenvolvedor" vai aparecer.
  3. Preencha a página do app do desenvolvedor da maneira a seguir. Não salve até que seja instruído a faça 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ê está de 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 Show ao lado de Consumer Key.

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

  10. Aguarde alguns minutos. As alterações feitas na Apigee levam alguns minutos Borda para sincronizar com a instância do Edge Microgateway implantada na aglomerado.

Chamar a API

Depois que as alterações de configuração forem enviadas para o microgateway, será possível execute os testes a seguir.

  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, você precisa da chave de API.

  2. Acesse a chave do cliente no app do 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
    

    O "Hello World" resposta é retornada pelo serviço helloworld implantado ao pod. A chamada para esse serviço passou primeiro pelo Edge Microgateway, onde a autenticação foi realizada. Se aparecer a mensagem "Hello world" resposta, você configurou o Edge Microgateway com sucesso para função como um proxy sidecar no pod de serviço helloworld.

A seguir

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