Kf Cloud Service Broker bereitstellen

Auf dieser Seite erfahren Sie, wie Sie Kf Cloud Service Broker für Google Cloud implementieren und zur Bereitstellung oder Aufhebung der Bereitstellung von Sicherungsressourcen verwenden. Weitere Informationen zu Kf Cloud Service Broker finden Sie unter Konzepte und Architektur.

Umgebungsvariablen erstellen

Linux

export PROJECT_ID=YOUR_PROJECT_ID
export CLUSTER_PROJECT_ID=YOUR_PROJECT_ID
export CLUSTER_NAME=kf-cluster
export INSTANCE_NAME=cloud-service-broker
export COMPUTE_REGION=us-central1

Windows Powershell

Set-Variable -Name PROJECT_ID -Value YOUR_PROJECT_ID
Set-Variable -Name CLUSTER_PROJECT_ID -Value YOUR_PROJECT_ID
Set-Variable -Name CLUSTER_NAME -Value kf-cluster
Set-Variable -Name INSTANCE_NAME -Value cloud-service-broker
Set-Variable -Name COMPUTE_REGION -Value us-central1

Kf Cloud Service Broker-Datenbank einrichten

  1. Cloud SQL for MySQL-Instanz erstellen

    gcloud sql instances create ${INSTANCE_NAME} --cpu=2 --memory=7680MB --require-ssl --region=${COMPUTE_REGION}
  2. Erstellen Sie eine Datenbank mit dem Namen servicebroker in der Cloud SQL for MySQL-Instanz.

    gcloud sql databases create servicebroker -i ${INSTANCE_NAME}
  3. Erstellen Sie einen Nutzernamen und ein Passwort zur Verwendung durch Kf Cloud Service Broker.

    gcloud sql users create csbuser -i ${INSTANCE_NAME} --password=csbpassword

Google-Dienstkonto (Google Service Account, GSA) für Kf Cloud Service Broker einrichten

  1. Erstellen Sie ein Google-Dienstkonto:

    gcloud iam service-accounts create csb-${CLUSTER_NAME}-sa \
      --project=${CLUSTER_PROJECT_ID} \
      --description="GSA for CSB at ${CLUSTER_NAME}" \
      --display-name="csb-${CLUSTER_NAME}"
  2. Gewähren Sie dem Dienstkonto roles/cloudsql.client-Berechtigungen. Dies ist erforderlich, um den Kf Cloud Service Broker-Pod über den Cloud SQL Auth-Proxy mit der Cloud SQL for MySQL-Instanz zu verbinden.

    gcloud projects add-iam-policy-binding ${CLUSTER_PROJECT_ID} \
      --member="serviceAccount:csb-${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \
      --role="roles/cloudsql.client"
  3. Gewähren Sie dem Dienstkonto zusätzliche Google Cloud-Berechtigungen.

    gcloud projects add-iam-policy-binding ${CLUSTER_PROJECT_ID} \
      --member="serviceAccount:csb-${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \
      --role="roles/compute.networkUser"
    gcloud projects add-iam-policy-binding ${CLUSTER_PROJECT_ID} \
      --member="serviceAccount:csb-${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \
      --role="roles/cloudsql.admin"
    gcloud projects add-iam-policy-binding ${CLUSTER_PROJECT_ID} \
      --member="serviceAccount:csb-${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \
      --role="roles/redis.admin"
  4. Überprüfen Sie die Berechtigungen.

    gcloud projects get-iam-policy ${CLUSTER_PROJECT_ID} \
      --filter='bindings.members:serviceAccount:"CSB_SERVICE_ACCOUNT_NAME"' \
      --flatten="bindings[].members"

Workload Identity für Kf Cloud Service Broker einrichten

  1. Binden Sie das Google-Dienstkonto an das Kubernetes-Dienstkonto.

    gcloud iam service-accounts add-iam-policy-binding "csb-${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \
      --project=${CLUSTER_PROJECT_ID} \
      --role="roles/iam.workloadIdentityUser" \
      --member="serviceAccount:${CLUSTER_PROJECT_ID}.svc.id.goog[kf-csb/csb-user]"
  2. Prüfen Sie die Bindung.

    gcloud iam service-accounts get-iam-policy "csb-${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com" \
      --project=${CLUSTER_PROJECT_ID}

Kubernete-Secret zur Freigabe der Konfiguration für Kf Cloud Service Broker einrichten

  1. Erstellen Sie eine config.mydataset-Datei.

    cat << EOF >> ./config.yml
    gcp:
      credentials: ""
      project: ${CLUSTER_PROJECT_ID}
    db:
      host: 127.0.0.1
      password: csbpassword
      user: csbuser
      tls: false
    api:
      user: servicebroker
      password: password
    EOF
  2. Erstellen Sie den Namespace kf-csb.

    kubectl create ns kf-csb
  3. Erstellen Sie das Kubernetes-Secret:

    kubectl create secret generic csb-secret --from-file=config.yml -n kf-csb

Kf Cloud Service Broker installieren

  1. Laden Sie kf-csb.yml herunter.

    gcloud storage cp gs://kf-releases/csb/v1.0.0/kf-csb.yaml /tmp/kf-csb.yaml
  2. Bearbeiten Sie /tmp/kf-csb.yaml und ersetzen Sie Platzhalter durch endgültige Werte. Im folgenden Beispiel wird sed verwendet.

    sed -i "s|<GSA_NAME>|csb-${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com|g" /tmp/kf-csb.yaml
    sed -i "s|<INSTANCE_CONNECTION_NAME>|${CLUSTER_PROJECT_ID}:${COMPUTE_REGION}:${INSTANCE_NAME}|g" /tmp/kf-csb.yaml
    sed -i "s|<DB_PORT>|3306|g" /tmp/kf-csb.yaml
  3. Wenden Sie YAML für Kf Cloud Service Broker an.

    kubectl apply -f /tmp/kf-csb.yaml
  4. Prüfen Sie den Installationsstatus von Kf Cloud Service Broker.

    kubectl get pods -n kf-csb

Service Broker erstellen

  kf create-service-broker cloud-service-broker servicebroker password http://csb-controller.kf-csb/

Installation prüfen

Suchen Sie nach verfügbaren Diensten im Marktplatz.

  kf marketplace

Wenn alles korrekt installiert und konfiguriert ist, wird Folgendes angezeigt:

  $ kf marketplace

  Broker                Name                          Namespace  Description
  cloud-service-broker  csb-google-bigquery                      A fast, economical and fully managed data warehouse for large-scale data analytics.
  cloud-service-broker  csb-google-dataproc                      Dataproc is a fully-managed service for running Apache Spark and Apache Hadoop clusters in a simpler, more cost-efficient way.
  cloud-service-broker  csb-google-mysql                         Mysql is a fully managed service for the Google Cloud Platform.
  cloud-service-broker  csb-google-postgres                      PostgreSQL is a fully managed service for the Google Cloud Platform.
  cloud-service-broker  csb-google-redis                         Cloud Memorystore for Redis is a fully managed Redis service for the Google Cloud Platform.
  cloud-service-broker  csb-google-spanner                       Fully managed, scalable, relational database service for regional and global application data.
  cloud-service-broker  csb-google-stackdriver-trace             Distributed tracing service
  cloud-service-broker  csb-google-storage-bucket                Google Cloud Storage that uses the Terraform back-end and grants service accounts IAM permissions directly on the bucket.

Nächste Schritte

Bereinigen

  1. Löschen Sie Cloud Service Broker.

    kf delete-service-broker cloud-service-broker
  2. Löschen Sie CSB-Komponenten.

    kubectl delete ns kf-csb
  3. Löschen Sie die Cloud SQL for MySQL-Instanz von Kf Cloud Service Broker.

    gcloud sql instances delete ${INSTANCE_NAME} --project=${CLUSTER_PROJECT_ID}
  4. Entfernen Sie die IAM-Richtlinienbindungen.

    gcloud projects remove-iam-policy-binding ${CLUSTER_PROJECT_ID} \
    --member='serviceAccount:csb-${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com' \
    --role=roles/cloudsql.client
    gcloud projects remove-iam-policy-binding ${CLUSTER_PROJECT_ID} \
    --member='serviceAccount:csb-${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com' \
    --role=roles/compute.networkUser
    gcloud projects remove-iam-policy-binding ${CLUSTER_PROJECT_ID} \
    --member='serviceAccount:csb-${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com' \
    --role=roles/redis.admin
  5. Entfernen Sie das Google-Dienstkonto.

    gcloud iam service-accounts delete csb-${CLUSTER_NAME}-sa@${CLUSTER_PROJECT_ID}.iam.gserviceaccount.com \
      --project=${CLUSTER_PROJECT_ID}