AWS-Service Broker

AWS Service Broker stellt AWS-Dienste über das Open Service Broker (OSB)-Protokoll bereit. Diese Dokumente basieren auf der Dokumentation zu AWS Service Broker. In diesem Dokument werden zwei mögliche Installationen behandelt:

  1. AWS Service Broker im Kf Kubernetes-Cluster installieren (empfohlen)
  2. AWS Service Broker in AWS installieren und die API über eine VPC-Bridge verfügbar machen

Vorbereitung

Zusätzlich zu einem Kubernetes-Cluster mit installiertem Kf und Service Catalog (siehe diese Anleitung) müssen die folgenden Tools auf der Workstation installiert sein, auf der Sie die kf - Befehlszeile verwenden:

  1. helm: Folgen Sie dieser Anleitung, um die helm-Befehlszeile zu installieren.

Methode 1: In GKE installieren

AWS Service Broker wird mithilfe des Helm-Diagramms aus dem Startleitfaden für AWS Service Broker für Kubernetes bereitgestellt.

Infrastruktur

AWS Service Broker benötigt eine DynamoDB-Tabelle und einen IAM-Nutzer, um auf die Tabelle zuzugreifen. Die einfachste Methode besteht darin, die bereitgestellte CloudFormation-Vorlage bereitzustellen. Informationen zur manuellen Installation finden Sie in den erforderlichen Dokumenten.

Helm

Fügen Sie zuerst das Helm-Repository zu Ihrem Computer hinzu:

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

Stellen Sie dann das Helm-Diagramm bereit und legen Sie die richtigen AWS- accesskeyid und secretkey fest:

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

Wenn Sie nicht möchten, dass der Broker installierte clusterweite Cluster installiert, legen Sie das Flag --set deployNamespacedServiceBroker=true fest. Damit wird der Broker im bereitgestellten Namespace registriert.

Eine vollständige Liste der Konfigurationsparameter finden Sie in der values.yaml-Definition der Helm-Vorlage.

Überprüfung

Nach der Bereitstellung des Helm-Diagramms sollte eine ClusterServiceBroker - Ressource erstellt worden sein. Sie können mit kubectl prüfen:

$ kubectl get ClusterServiceBroker aws-servicebroker

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

Wenn STATUS nicht bereit ist, ist ein Problem aufgetreten. Folgendes sollten Sie bei der Fehlerbehebung überprüfen:

  • Die DynamoDB-Infrastruktur ist aktiviert
  • Der AWS-Nutzer hat über Richtlinien oder Gruppen Zugriff auf die DynamoDB-Tabelle
  • Die Helm-Diagrammwerte wurden richtig festgelegt

Es kann einige Minuten dauern, bis Ihr Broker bei Service Catalog registriert ist. Sobald der Broker registriert ist, können Sie die bereitgestellten Dienste mit dem Befehl kf marketplace anzeigen.

Methode 2: Installation in AWS

Die Kehrseite der Installation von AWS Service Broker in einem GKE-Cluster ist die erforderliche Verwendung von AWS-Nutzeranmeldedaten anstelle einer AWS-Rolle. Die einzige erforderliche Kubernetes-Ressource für den AWS Service Broker, um mit Kf zu arbeiten, ist jedoch ClusterServiceBroker, vorausgesetzt, die AWS Service Broker API ist vom GKE-Cluster aus erreichbar.

Für den GKE-Cluster stehen zwei Methoden zur Verfügung:

  1. Auf die API kann über eine VPN-Brücke zwischen Google Cloud und AWS zugegriffen werden.
  2. Die API ist öffentlich zugänglich (nicht empfohlen).

In beiden Fällen wird dringend empfohlen, die Service Broker API mit einem vertrauenswürdigen TLS-Zertifikat und Zugriffsanmeldedaten zu sichern.

Sobald auf die API zugegriffen werden kann, kubectl apply eine ClusterServiceBroker und eine Kubernetes Secret, die die Anmeldedaten für die Autorisierung mit Service Broker enthält.

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