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.
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
- Registre seu serviço no IBM Cloud Partner Center.
- Defina os detalhes do produto do seu serviço.
- Revise o Cenário Provisioning para obter um entendimento de como funciona a criação de recursos.
- Leia e familiarize-se com a especificação de API do Open Brokere use o arquivo leia-me como um guia para saber mais. IBM
Cloud usa a especificação Open Service Broker API (OSB)
version 2.12
.
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:
- Use a IBM Cloud API do Open Service Broker para definir as especificações necessárias, incluindo os pontos de extremidade necessários.
Analise o aplicativo de amostra a seguir:
- Use o aplicativo de referência Open Service Broker baseado em NodeJS como guia para criar o seu corretor.
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:
- A orientação do arquivo leia-me de amostra para curling seus terminais OSB: https://github.com/IBM/sample-resource-service-brokers/blob/master/README.md.
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"}'