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:
- Installa AWS Service Broker nel cluster Kubernetes Kf (opzione consigliata)
 - Installa AWS Service Broker in AWS ed esponi l'API tramite un bridge VPC
 
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:
helm: segui queste istruzioni per installare l'interfaccia a riga di comandohelm.
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
AWS Service Broker richiede una tabella DynamoDB e un utente IAM per accedere alla tabella. Il metodo più semplice è eseguire il deployment del modello CloudFormation fornito. 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
Poi esegui il deployment del grafico Helm impostando accesskeyid e secretkey AWS 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 venga installato a livello di cluster, imposta il flag--set deployNamespacedServiceBroker=true che registrerà il broker nello spazio dei nomi di cui è stato eseguito il deployment.
Un elenco completo dei parametri di configurazione è disponibile nella definizione del file values.yaml del modello Helm.
Verifica
Dopo il deployment del grafico Helm, dovrebbe essere stata creata una risorsa ClusterServiceBroker. 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 criteri 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 il broker, 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 è l'uso obbligatorio delle credenziali utente AWS anziché di 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 esporre l'API al cluster GKE:
- L'API è accessibile tramite un ponte VPN tra Google Cloud e AWS
 - 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 contenenti 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