פריסת מתווך שירותים של Kf Cloud

בדף הזה מוסבר איך לפרוס את Kf Cloud Service Broker for Google Cloud ואיך להשתמש בו כדי להקצות או לבטל הקצאה של משאבי גיבוי. כדי לקבל מידע נוסף על Kf Cloud Service Broker, אפשר לקרוא על המושגים והארכיטקטורה.

יצירת משתני סביבה

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

  1. יוצרים מכונה של Cloud SQL ל-MySQL.

    gcloud sql instances create ${INSTANCE_NAME} --cpu=2 --memory=7680MB --require-ssl --region=${COMPUTE_REGION}
  2. יוצרים מסד נתונים בשם servicebroker במכונה של Cloud SQL ל-MySQL.

    gcloud sql databases create servicebroker -i ${INSTANCE_NAME}
  3. יוצרים שם משתמש וסיסמה לשימוש ב-Kf Cloud Service Broker.

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

הגדרה של חשבון שירות של Google עבור Kf Cloud Service Broker

  1. יוצרים חשבון שירות של Google.

    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. נותנים לחשבון השירות הרשאות roles/cloudsql.client. הפעולה הזו נדרשת כדי לחבר את הפוד של Kf Cloud Service Broker למכונה של Cloud SQL ל-MySQL דרך שרת proxy ל-Cloud SQL Auth.

    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. נותנים הרשאות נוספות לחשבון השירות. Google Cloud

    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. בודקים את ההרשאות.

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

הגדרת Workload Identity עבור Kf Cloud Service Broker

  1. מקשרים את חשבון השירות של Google לחשבון השירות של Kubernetes.

    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. מאמתים את הקישור.

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

הגדרת סוד של Kubernetes לשיתוף הגדרות עם Kf Cloud Service Broker

  1. יוצרים קובץ config.yml.

    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. יוצרים את מרחב השמות kf-csb.

    kubectl create ns kf-csb
  3. יוצרים את הסוד של Kubernetes.

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

התקנה של Kf Cloud Service Broker

  1. מורידים את kf-csb.yml.

    gcloud storage cp gs://kf-releases/csb/v1.0.0/kf-csb.yaml /tmp/kf-csb.yaml
  2. עורכים את /tmp/kf-csb.yaml ומחליפים את ה-placeholders בערכים הסופיים. בדוגמה הבאה נעשה שימוש ב-sed.

    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. החלת yaml עבור Kf Cloud Service Broker.

    kubectl apply -f /tmp/kf-csb.yaml
  4. בודקים את סטטוס ההתקנה של Kf Cloud Service Broker.

    kubectl get pods -n kf-csb

יצירת מתווך שירותים

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

אימות ההתקנה

בודקים אילו שירותים זמינים בזירת המסחר.

  kf marketplace

אם הכל מותקן ומוגדר בצורה נכונה, אמור להופיע המסך הבא:

  $ 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.

הסרת המשאבים

  1. מחיקת cloud-service-broker.

    kf delete-service-broker cloud-service-broker
  2. מחיקת רכיבי CSB.

    kubectl delete ns kf-csb
  3. מוחקים את המכונה של Cloud SQL ל-MySQL של Kf Cloud Service Broker.

    gcloud sql instances delete ${INSTANCE_NAME} --project=${CLUSTER_PROJECT_ID}
  4. מסירים את הקישורים למדיניות IAM.

    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. מסירים את ה-GSA.

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

מה השלב הבא?