Usando endpoints de serviço com Code Engine

Todos os projetos do IBM Cloud® Code Engine oferecem integração com os pontos de extremidade de serviço do IBM Cloud®. Esse suporte permite que você se conecte da sua infraestrutura clássica às cargas de trabalho do Code Engine e permaneça na rede IBM Cloud.

Você pode controlar a visibilidade das cargas de trabalho do Code Engine e especificar se deseja expor o aplicativo ou a função a endpoints públicos ou privados. Um aplicativo ou função que é configurado para visibility = private é acessado por meio de terminais em serviço. Os aplicativos ou funções acessados por meio de um ponto de extremidade de serviço não saem da rede IBM e permanecem na rede IBM Cloud.

Terminais públicos

Os terminais públicos fornecem uma conexão com sua implementação na rede pública. No momento da provisão, um terminal público é a opção padrão para todas as implementações. Seu ambiente precisa ter acesso à Internet para se conectar a uma implementação.

Terminais privados

Uma implementação com um terminal em serviço na rede privada obtém um terminal que não está acessível por meio da Internet pública. Todo o tráfego é roteado para o hardware dedicado para as implementações do Code Engine e permanece na rede da IBM Cloud Private. Todo o tráfego de e para esse ponto de extremidade é gratuito e não incorre em cobranças, desde que o tráfego permaneça em IBM Cloud. Depois que seu ambiente tem acesso à rede da IBM Cloud Private, uma conexão de Internet não é necessária para se conectar à implementação.

Code Engine as implementações de aplicativos com endpoints privados podem ser acessadas de qualquer conta na rede privada e o acesso a cada instância requer autenticação. Para restringir esse acesso a endereços IP específicos, intervalos de endereços IP, serviços IBM Cloud ou VPCs, configure regras de restrição baseadas em contexto.

Gerenciando os recursos Code Engine de forma segura usando terminais de serviço

  1. Especifique um projeto Code Engine para usar o terminal privado. Você pode configurar um projeto Code Engine para usar o terminal privado apenas com o CLI. Para criar um projeto, use o comando ibmcloud ce project create com a opção --endpoint=private.

    ibmcloud ce project create --name myproject --endpoint=private
    

    Aguarde até que o projeto esteja no status active. Com a CLI, é possível confirmar o status do projeto usando o comando ibmcloud ce project get.

    Se você quiser um projeto Code Engine existente para usar o terminal privado, use o comando ibmcloud ce project select com a opção --endpoint=private.

    ibmcloud ce project select --name myproject --endpoint=private
    

    Para os comandos project create e project select, se a opção --endpoint não for especificada explicitamente, o comportamento será determinado pelo sistema. Se a CLI do IBM Cloud estiver conectada a private.cloud.ibm.com, o projeto Code Engine se comportará como se --endpoint fosse private. Se a CLI do IBM Cloud estiver conectada a cloud.ibm.com, o projeto Code Engine se comportará como se --endpoint fosse public.

  2. Se você não criou um novo projeto e selecionou um projeto existente, e deseja que seu aplicativo fique visível apenas para o endpoint privado, confirme se o projeto existente oferece suporte a aplicativos com visibilidade privada. Use o comando ibmcloud ce project get para verificar a saída para Application Private Visibility Supported é definida como true. Se o valor for false, entre em contato com o suporte IBM para ativar essa capacidade dentro do seu projeto existente.

    ibmcloud ce project get -n myproject
    

    Saída de exemplo

    Getting project 'myproject'...
    OK
    
    Name:                                      myproject
    ID:                         abcdabcd-abcd-abcd-abcd-f1de4aab5d5d
    Status:                                    active
    Enabled:                                   true
    Application Private Visibility Supported:  false
    Selected:                                  true
    Region:                                    us-south
    Resource Group:             default
    Service Binding Service ID: ServiceId-1234abcd-abcd-abcd-1111-1a2b3c4d5e6f
    Age:                        52d
    Created:                                   Tue, 28 Sep 2021 05:12:16 -0500
    Updated:                                   Tue, 28 Sep 2021 05:12:19 -0500
    
    Quotas:
    Category                                  Used  Limit
    App revisions                             1     60
    Apps                                      1     20
    Build runs                                1     100
    Builds                                    2     100
    Configmaps                                2     100
    CPU                                       0     64
    Ephemeral storage                         0     256G
    Instances (active)                        0     250
    Instances (total)                         0     2500
    Job runs                                  0     100
    Jobs                                      0     100
    Memory                                    0     256G
    Secrets                                   6     100
    Subscriptions (cron)                      0     100
    Subscriptions (IBM Cloud Object Storage)  0     100
    Subscriptions (Kafka)                     0     100
    
  3. Crie um aplicativo ou função que seja visível apenas para o endpoint privado. Use o comando ibmcloud ce application create ou ibmcloud ce function create com a opção --visibility=private. Como alternativa, você pode usar o console para criar ou atualizar um aplicativo ou função e definir a visibilidade do seu aplicativo.

    ibmcloud ce application create -n myapp --visibility=private
    

Acessar seu aplicativo de forma segura com pontos de extremidade de serviço

  1. No seu projeto do Code Engine, confirme se o seu aplicativo está configurado com uma configuração visibility=private. Consulte Implantação de seu aplicativo com um endpoint privado.

  2. Recuperar a URL do aplicativo Code Engine que é exposto à rede privada. A URL está no formato a seguir: <app>.<uuid>.private.<region>.codeengine.appdomain.cloud.

    • No console Code Engine, vá para a guia Domain mappings (Mapeamentos de domínio ) do seu aplicativo para ver a visibilidade de um aplicativo e seus URLs disponíveis.

    • A partir do Code Engine CLI, use o comando ibmcloud ce application get com a opção --option url. No exemplo a seguir, como a visibilidade do myapp está definida como visibility=private, especificar --option url com esse comando gera o URL para a rede privada.

      ibmcloud ce application get -n myapp -output url
      

      Saída de exemplo

      http://myapp.4svg40kna19.private.us-south.codeengine.appdomain.cloud
      
  3. Chame o aplicativo de dentro da rede privada IBM Cloud (por exemplo, chamando o aplicativo pelo Shell IBM Cloud ).

    O aplicativo myapp é um aplicativo Hello World simples. Quando você executa o aplicativo myapp usando cURL, Hello World é retornado. Por exemplo, no Shell IBM Cloud, execute:

    curl http://myapp.4svg40kna19.private.us-south.codeengine.appdomain.cloud
    

Acessando sua função com segurança com terminais em serviço

  1. Em seu projeto Code Engine, confirme que sua função está configurada com uma definição visibility=private. Consulte Implementando sua função com um terminal privado.

  2. Recupere o endereço URL da função Code Engine que está exposta à rede privada. A URL está no formato a seguir: <function>.<uuid>.private.<region>.codeengine.appdomain.cloud.

    • No console Code Engine, acesse a guia Domain mappings (Mapeamentos de domínio ) da sua função para ver a visibilidade da função e os URLs disponíveis.

    • Na Code Engine CLI, use o comando ibmcloud ce function get. No exemplo a seguir, como a visibilidade do myfunction está definida como visibility=private, esse comando envia o URL para a rede privada.

      ibmcloud ce function get -n myfunction
      

      Saída de exemplo

      http://myfunction.1abc23def19.private.us-south.codeengine.appdomain.cloud