IBM Cloud Docs
Desenvolvendo, hospedando e testando seus brokers de serviço

Desenvolvendo, hospedando e testando seus brokers de serviço

A plataforma IBM Cloud® interage com os corretores de serviços para criar e gerenciar instâncias de serviços e associações de serviços. Você pode criar seu corretor usando uma combinação de nossas amostras públicas do corretor de serviços IBM Cloud, do aplicativo de referência do Open Service Broker e da documentação da API do Open Service Broker.

Ao integrar seu serviço ao IBM Cloud, deve-se construir um ou mais brokers de serviço para gerenciar o ciclo de vida de seu serviço e sua integração de medição Para obter mais informações, consulte Integração de medição.

O que é um corretor de serviços?

Os brokers de serviço gerenciam o ciclo de vida de serviços. As plataformas interagem com corretores de serviços para criar, obter acesso e gerenciar os serviços que oferecem. A API do Open Service Broker define essas interações para permitir que os provedores de software ofertem seus serviços a qualquer pessoa independentemente da tecnologia ou da infraestrutura que os provedores de software escolherem. O broker de serviço age como um componente de middleware que manipula o fornecimento automático de instâncias de serviço para um produto e ajuda no rastreamento de uso das instâncias de serviço.

Um broker será útil se você estiver desenvolvendo e oferecendo software como serviço, plataforma como serviço ou infraestrutura como serviço em vários fornecedores. Ele pode aumentar o valor do negócio, introduzindo o corretor de serviços para automatizar o fornecimento e a ligação para os clientes. Além disso, o gerenciamento de clientes e o rastreamento de uso podem ser mais fáceis com um componente de middleware que manipula essas questões transversais. No entanto, um broker de serviço não será adequado se você tiver um software customizado que possa ser implementado em qualquer máquina virtual ou plataforma

Quando um usuário seleciona seu serviço e seu plano de precificação no catálogo do IBM Cloud e cria uma instância, os dados para o serviço, incluindo o plano de precificação e as métricas, são enviados para seu broker de serviço. O broker é integrado ao sistema backend que gerencia o fornecimento de instâncias de serviço e as métricas para um plano de precificação selecionado. Se um cliente excluir uma instância do produto, uma solicitação será enviada ao broker de serviço e ele gerenciará o desprovisionamento da instância.

Figura 1. Entendendo a função de um broker de serviço quando um usuário seleciona um produto do catálogo do IBM Cloud.
Um diagrama que mostra aos provedores de terceiros qual função um broker de serviço executa quando um usuário seleciona seu produto no catálogo.

A arquitetura do intermediário fornece benefícios significativos para as equipes de desenvolvimento e operações:

  • Os desenvolvedores podem conectar suas aplicações e contêineres aos serviços de apoio que precisam. A operação é a mesma, independentemente do serviço de apoio.
  • As operadoras não têm mais que criar e delegar manualmente o acesso aos serviços. Em vez disso, eles configuram um marketplace de serviços e planos de serviços. A partir daí, os desenvolvedores podem se autoservir, reduzindo os custos administrativos que muitas empresas enfrentam hoje.

Cada intermediário de serviço que é construído para a especificação de API do Open Service Broker tem o mesmo conjunto intuitivo de comandos do ciclo de vida. Estes comandos fornecem benefícios úteis para o corretor de serviços:

Buscar o catálogo de serviços de apoio que um corretor de serviços oferece
O catálogo descreve todos os serviços que podem ser criados por meio de um broker de serviço e cada serviço é composto de planos.. Planos geralmente representam os custos e benefícios para uma determinada variante do serviço. Muitos serviços utilizam planos relacionados com o tamanho o produto, por exemplo pequeno, médio e grande.
Provimento de novas instâncias de serviço
Uma instância de serviço é uma instância criada de um serviço e plano conforme descrito no catálogo do corretor de serviços.
Conectar e desconectar aplicativos e contêineres a partir dessas instâncias de serviço
Quando uma instância de serviço é criada, você quer que seu aplicativo ou contêiner comece a se comunicar com essa instância. Da perspectiva de um broker de serviço, isso é chamado de ligação de serviços.
Instâncias de serviço de desprovimento
Esta ação exclui todos os recursos que são criados mediante a criação inicial da instância de serviço.

Antes de Iniciar

Construindo seu broker

Configure e implante um broker que tenha as especificações necessárias usando a documentação e os aplicativos de amostra a seguir:

Analise o aplicativo de amostra a seguir:

Incluindo endpoints necessários

Todos os corretores de serviços devem configurar determinados terminais necessários. A lógica de terminal adicional é necessária para serviços bindáveis e desativação e reativação de instâncias de serviço.

Lógica de terminal necessária para todos os brokers de serviço

Os brokers de serviço devem fornecer um conjunto padrão de valores de metadados que são consumidos por APIs de REST e os brokers do IBM Cloud devem ter lógica para os terminais ou caminhos da API de REST a seguir:

catálogo (GET)
Retorna os metadados do catálogo incluídos em seu broker.
instâncias de recurso (PUT)
Cria sua instância de serviço.
instâncias de recurso (DELETE)
Exclui sua instância de serviço.
instâncias de recurso (PATCH)
Atualiza sua instância de serviço.

Nota sobre catálogo (GET): esse terminal define o contrato entre o broker e a plataforma IBM Cloud para os serviços e planos suportados pelo broker. Esse endpoint retorna os metadados do catálogo que estão armazenados em seu corretor. Esses valores definem o contrato mínimo entre seu serviço e a plataforma IBM Cloud. Todos os metadados adicionais do catálogo que não são necessários são armazenados no catálogo IBM Cloud. Quaisquer atualizações para os valores de exibição do catálogo, como links e ícones, devem ser atualizadas no console do IBM Cloud e não hospedadas em seu broker. Nenhum dos metadados armazenados em seu broker é exibido no console do IBM Cloud ou na CLI do IBM Cloud CLI. O console e a CLI retornam o que foi definido no Partner Center Sell e armazenado no catálogo IBM Cloud. A seção a seguir mostra os valores mínimos exigidos que o catálogo (GET) retorna:

{
       "services": [{
           "id": "0bc9d744-6f8c-4821-9648-2278bf6925bb",
           "name": "ibmcloud-link",
           "description": "An IBM provided service that enables aliasing to service instances in the IBM Cloud.",
           "bindable": true,
           "plan_updateable": false,
           "plans": [
               {
                   "id": "da40662d-2f72-4a19-8c79-8c77cf285e1",
                   "name": "ibmcloud-alias",
                   "free": true,
                   "description": "The IBM Cloud alias plan used for linking."
               }
               ]
       }]
}

Lógica de terminais necessários para serviços ligáveis

Se o seu serviço puder ser vinculado a aplicativos em IBM Cloud, ele deverá retornar endpoints e credenciais de API para os consumidores do serviço. Um serviço que permite ligação deve usar as operações que permitem ligação na especificação Open Service Broker e implementar os terminais ou os caminhos a seguir:

ligações e credenciais (PUT)
Liga sua instância de serviço a um aplicativo.
ligações e credenciais (DEL)
Desvincula sua instância de serviço de um aplicativo.

Terminais de extensão IBM Cloud necessários

A especificação OSB não suporta um estado de instância desativada. Um estado desativado inclui um pagamento ausente ou outras situações que resultam em uma suspensão de conta (mas ainda não o cancelamento) e é diferente de um estado de instância excluído. Para que o IBM Cloud suporte clientes que podem ter um estado desativado, o IBM Cloud definiu os terminais de API estendidos que permitem que as instâncias de serviço sejam desativadas e reativadas. As seguintes extensões de endpoint são necessárias:

ativar e desativar instâncias (GET)
Status - retorna o estado de sua instância de serviço.
ativar e desativar instâncias (PUT)
Ativar ou desativar uma instância de serviço.

É responsabilidade do provedor de serviços desativar o acesso à instância de serviço quando o terminal de desativação se inicia e reativar esse acesso quando o terminal de ativação é iniciado.

Informações do broker fornecidas pela plataforma IBM Cloud

Seu broker ou brokers de serviço recebem as informações a seguir da plataforma IBM Cloud:

X-Broker-API-Originating-Identity

O cabeçalho de identidade do usuário é fornecido por meio de um cabeçalho de identidade de origem da API. Esse cabeçalho de solicitação inclui a Identidade do IAM do IBM Cloud do usuário. A Identidade IAM é codificada como base64. O IBM Cloud suporta uma única região de autenticação: IBMid. A região IBMid usa um IBMid Unique ID (IUI) para identificar a identidade do usuário no IBM Cloud. Esse IUI é uma sequência opaca para o provedor de serviços.

Exemplo:

X-Broker-API-Originating-Identity: ibmcloud eyJpYW1faWQiOiJJQk1pZC01MEdOUjcxN1lFIn0=
Decoded:
{"iam_id":"IBMid-50GNR717YE"}

Versão de cabeçalho da API

O cabeçalho da versão da API é 2.12. Por exemplo: X-Broker-Api-Version: 2.12.

Instância de recurso (PUT) body.context e instância de recurso (PATCH) body.context

PUT /v2/service_instances/:resource_instance_id e PATCH /v2/service_instances/:resource_instance_id recebem o valor a seguir em body.context: { "platform": "ibmcloud", "account_id": "tracys-account-id", "crn": "resource-instance-crn" }.

Recomendações adicionais do broker

Recomendações sobre o uso assíncrono em vez de operações síncronas

O OSB API suporta os modos síncrono e assíncrono de operação. Se suas operações vão levar menos de 10 seconds minutos, você deve usar respostas síncronas. Caso contrário, deve-se usar o modo assíncrono da operação. O modo assíncrono requer o terminal last_operation. Para obter mais informações, consulte Obtenha o status de uma provisão em andamento para uma instância de serviço.

Recomendações para gerenciar brokers em locais

É importante que os usuários entendam o local de seus serviços de nuvem para latência, disponibilidade e residência de dados.

Ao criar instâncias de serviço em IBM Cloud, um dos parâmetros obrigatórios que os usuários fornecem é o local onde desejam que a instância de serviço seja criada. Alguns serviços podem oferecer suporte à criação em vários locais. Por exemplo, um serviço de banco de dados pode suportar a criação em todas as regiões do site IBM Cloud ou pode suportar um subconjunto.

Se seu serviço baseado em API de terceiros for implementado em outra nuvem e exposto no IBM Cloud, o local indicará o local do serviço na outra nuvem.

Quando você se integra ao IBM Cloud, deve implementar pelo menos um broker do OSB. É possível ter mais de um broker, dependendo de sua estratégia de implementação e dos locais que deseja suportar para seu serviço. Dentro Do Partner Center Sell, você estabelece o mapeamento entre o seu plano de precificação e o intermediário. As opções típicas são definir um único intermediário para atender a todos os locais do seu serviço ou definir um intermediário por local; essa escolha fica a cargo do provedor de serviços.

Para uma lista de locais disponíveis, revise o IBM locais de catálogo globais. Se o seu serviço exigir mais locais a serem definidos, consulte a equipe de integração do IBM Cloud .

Hospedando seus corretores

Seu corretor deve ser hospedado como parte de um aplicativo que possa responder a chamadas de API REST e seu local hospedado deve atender às diretrizes de segurança do site IBM Cloud. Você pode hospedar seu corretor em IBM Cloud, ou pode ser hospedado externamente, se for publicamente acessível a partir do próprio IBM Cloud.

Para hospedar seu broker fora do IBM, você deve garantir que ele atenda às seguintes diretrizes de segurança:

  • Deve seguir a versão do protocolo Transport Layer Security (TLS) 1.2. Para obter mais informações, consulte a Visão geral do protocolo TLS
  • Deve ser hospedado em um terminal HTTPs válido que esteja acessível na Internet pública

Testando o broker do serviço

Deve-se validar seu broker executando comandos curl nos diferentes terminais que você ativar. Você precisa do local hospedado do seu corretor de serviços e do endereço URL e das credenciais associadas ao seu aplicativo. Para testar seu corretor, você pode usar o seguinte método:

Durante o teste do seu corretor de serviços, o controlador de recursos usa o esquema de autenticação configurado para fazer solicitações ao seu corretor. Certifique-se de que seu corretor implemente um dos métodos de autenticação compatíveis para ajudar a garantir a validação e a autorização adequadas. Para obter mais informações, consulte Esquemas de autenticação para corretores.

Exemplo de solicitação de curl

Use o exemplo a seguir para testar sua resposta de curl dos brokers:

curl -X PUT  https://<sample-service-broker>/v2/service_instances/<encoded-resource-crn> \
     -u '<your broker user>:<your broker password>' \
     -H 'content-type: application/json' \
      -d '{ "context": {"platform": "ibmcloud", \
                        "account_id": "34ff5928-c3c7-4d46-bbf6-1a5628c325d1", \
                        "resource_group_crn": "crn:v1:bluemix:public:resource-controller::a/003e9bc3993aec710d30a5a719e57a80::resource-group:b4570a825f7f4d57aa54e8e1d9507926", \
                        "crn": "<resource-crn>", \
                        "target_crn": "<target_crn>"}, \
            "service_id": "a07f025c-90db-4652-afd1-cf4adfac93c8", \
            "plan_id": "fe442cec-2eef-41fe-9f92-58d6c094584f"}'