Service broker AWS

AWS Service Broker espone i servizi AWS tramite il protocollo Open Service Broker (OSB). Queste documentazioni si basano sulla documentazione di AWS Service Broker. Questo documento illustra due possibili installazioni:

  1. Installa il Service Broker AWS in Kf Kubernetes Cluster (consigliato)
  2. Installare il service broker AWS in AWS ed esporre l'API tramite un VPC ponte

Prerequisiti

Oltre a un cluster Kubernetes con Kf e Service Catalog installati (consulta queste istruzioni), sulla workstation in cui utilizzerai la CLI kf devono essere installati i seguenti strumenti:

  1. helm: segui queste istruzioni per installare l'interfaccia a riga di comando helm.

Metodo 1: installazione in GKE

AWS Service Broker viene dispiegato utilizzando il grafico Helm riportato nella guida introduttiva di AWS Service Broker per Kubernetes.

Infrastruttura

Il Service Broker AWS richiede una tabella DynamoDB e un utente IAM per accedere al tabella. Il metodo più semplice è eseguire il deployment del CloudFormation fornito modello. Per l'installazione manuale, consulta la documentazione sui prerequisiti.

Helm

Innanzitutto, aggiungi il repository Helm alla tua macchina:

$ helm repo add aws-sb https://awsservicebroker.s3.amazonaws.com/charts

Quindi esegui il deployment del grafico Helm, impostando i valori AWS accesskeyid e secretkey corretti:

$ helm install aws-sb/aws-servicebroker \
  --name aws-servicebroker \
  --namespace aws-sb \
  --set aws.secretkey=REPLACEME \
  --set aws.accesskeyid=REPLACEME

Se non vuoi che il broker abbia installato il flag a livello di cluster, imposta il flag --set deployNamespacedServiceBroker=true che registrerà il broker in nello spazio dei nomi di cui è stato eseguito il deployment.

Un elenco completo dei parametri di configurazione è disponibile nella documentazione del modello Helm Definizione di values.yaml.

Verifica

Dopo il deployment del grafico Helm, una risorsa ClusterServiceBroker dovrebbe avere un'istanza di blocco note. Puoi controllare con kubectl:

$ kubectl get ClusterServiceBroker aws-servicebroker

NAME              URL                                                                    STATUS   AGE
aws-servicebroker https://aws-servicebroker-aws-servicebroker.aws-sb.svc.cluster.local   Ready    3d

Se STATUS non è pronto, si è verificato un problema. Ecco alcuni aspetti da controllare durante la risoluzione dei problemi:

  • L'infrastruttura DynamoDB è attiva
  • L'utente AWS ha accesso alla tabella DynamoDB tramite criterio o gruppo
  • I valori del grafico Helm sono stati impostati correttamente

Potrebbero essere necessari diversi minuti prima che il tuo broker venga visualizzato e si registri nel Catalogo dei servizi. Una volta registrato l'intermediario, puoi visualizzare i servizi forniti con il comando kf marketplace.

Metodo 2: installazione in AWS

Lo svantaggio dell'installazione di AWS Service Broker in un cluster GKE è richiesto l'utilizzo delle credenziali utente AWS anziché un ruolo AWS. Tuttavia, l'unica risorsa Kubernetes richiesta per il funzionamento di AWS Service Broker con Kf è ClusterServiceBroker, supponendo che l'API di AWS Service Broker sia raggiungibile dal cluster GKE.

Esistono due metodi per cui l'API può essere esposta al cluster GKE:

  1. L'API è accessibile tramite un ponte VPN tra Google Cloud e AWS
  2. L'API è accessibile pubblicamente (non consigliata)

In entrambi i casi, è vivamente consigliato proteggere l'API di Service Broker con un certificato TLS attendibile e le credenziali di accesso.

Una volta che l'API è accessibile, kubectl apply un ClusterServiceBroker e un Secret Kubernetes che contengono le credenziali per l'autorizzazione con il Service Broker.

apiVersion: servicecatalog.k8s.io/v1beta1
kind: ClusterServiceBroker
metadata:
  name: aws-sb
spec:
  # For all configuration options, look at the service catalog's
  # type definitions:
  #  https://github.com/kubernetes-sigs/service-catalog/blob/master/pkg/apis/servicecatalog/v1beta1/types.go#L185
  url: https://replace.with.url.to.service.broker
  insecureSkipTLSVerify: false # use a trusted TLS certificate
  authInfo:
    bearer: # or basic
      secretRef:
        namespace: some-namespace
        name: some-secret-name