Terhubung ke Cloud SQL untuk MySQL dari Google Kubernetes Engine

Halaman ini menunjukkan cara men-deploy aplikasi contoh di Google Kubernetes Engine (GKE) yang terhubung ke instance MYSQL menggunakan konsol Google Cloud dan aplikasi klien. Resource yang dibuat dalam panduan memulai ini biasanya berharga kurang dari satu dollar (USD), dengan asumsi bahwa Anda menyelesaikan langkah-langkahnya, termasuk pembersihannya secara tepat waktu.

Sebelum memulai

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Aktifkan Google Cloud API yang diperlukan untuk menjalankan aplikasi contoh Cloud SQL di GKE.
    Konsolgcloud

    Klik Aktifkan API untuk mengaktifkan API yang diperlukan untuk panduan memulai ini.

    Aktifkan API

    Tindakan ini mengaktifkan API berikut:

    • Compute Engine API
    • Cloud SQL Admin API
    • Google Kubernetes Engine API
    • Artifact Registry API
    • Cloud Build API

    Klik tombol berikut untuk membuka Cloud Shell, yang menyediakan akses command line ke resource Google Cloud langsung dari browser. Cloud Shell dapat digunakan untuk menjalankan perintah gcloud yang disajikan di seluruh panduan memulai ini.

    Buka Cloud Shell

    Jalankan perintah gcloud services enable sebagai berikut menggunakan Cloud Shell untuk mengaktifkan API yang diperlukan untuk panduan memulai ini.:

    gcloud services enable compute.googleapis.com sqladmin.googleapis.com \
         container.googleapis.com artifactregistry.googleapis.com cloudbuild.googleapis.com

    Perintah ini mengaktifkan API berikut:

    • Compute Engine API
    • Cloud SQL Admin API
    • GKE API
    • Artifact Registry API
    • Cloud Build API

Menyiapkan Cloud SQL

Membuat instance Cloud SQL

IP Publik

Konsolgcloud

Membuat instance dengan alamat IP publik

  1. Di konsol Google Cloud, buka halaman Instance Cloud SQL.

    Buka Instance Cloud SQL

  2. Klik Create Instance.
  3. Klik MySQL.
  4. Masukkan quickstart-instance untuk ID Instance.
  5. Masukkan sandi untuk pengguna root. Simpan sandi ini untuk penggunaan berikutnya.
  6. Klik opsi Single zone untuk Memilih ketersediaan zonal dan region.
  7. Klik dan luaskan bagian Tampilkan Konfigurasi.
  8. Pada menu drop-down Jenis Mesin, pilih Lightweight.
  9. Klik Buat Instance dan tunggu hingga instance melakukan inisialisasi dan mulai.

Membuat instance dengan alamat IP publik

Sebelum menjalankan perintah gcloud sql instances create sebagai berikut, ganti DB_ROOT_PASSWORD dengan sandi pengguna database Anda.

Atau, ubah nilai untuk parameter berikut:

  • --database_version: Jenis dan versi mesin database. Jika tidak ditentukan, API default akan digunakan. Lihat dokumentasi versi database gcloud untuk melihat versi yang tersedia saat ini.
  • --cpu: Jumlah inti yang diinginkan dalam mesin.
  • --memory: Nilai bilangan bulat yang menunjukkan jumlah memori yang diinginkan dalam mesin. Unit ukuran harus disediakan (misalnya, 3072MB atau 9GB). Jika tidak ada unit yang ditentukan, GB akan digunakan.
  • --region: Lokasi regional instance (misalnya asia-east1, us-east1). Jika tidak ditentukan, us-central default akan digunakan. Lihat daftar lengkap region.

Jalankan perintah gcloud sql instances create untuk membuat instance Cloud SQL.

gcloud sql instances create quickstart-instance \
--database-version=MYSQL_8_0 \
--cpu=1 \
--memory=4GB \
--region=us-central1 \
--root-password=DB_ROOT_PASSWORD

Konsolgcloud

Membuat instance dengan alamat IP pribadi dan SSL diaktifkan

  1. Di konsol Google Cloud, buka halaman Instance Cloud SQL.

    Buka Instance Cloud SQL

  2. Klik Buat instance.
  3. Klik MySQL.
  4. Masukkan quickstart-instance untuk ID Instance.
  5. Masukkan sandi untuk pengguna root. Simpan sandi ini untuk penggunaan berikutnya.
  6. Klik opsi Single zone untuk Memilih ketersediaan zonal dan region.
  7. Klik dan luaskan Opsi tampilkan konfigurasi.
  8. Untuk Jenis Mesin, pilih Ringan.
  9. Di Koneksi, pilih IP Pribadi.
  10. Pilih default di menu drop-down Jaringan.
  11. Jika Anda melihat dialog yang menyatakan Koneksi akses layanan pribadi dibutuhkan, klik tombol Set Up Connection.
    • Dalam dialog Aktifkan Service Networking API, klik tombol Aktifkan API.
    • Dalam dialog Alokasikan rentang IP, pilih Gunakan rentang IP yang dialokasikan otomatis, lalu klik Lanjutkan.
    • Dalam dialog Buat koneksi, klik Buat koneksi.
  12. Hapus kotak centang IP Publik untuk membuat instance hanya dengan IP pribadi.
  13. Klik Buat instance, lalu tunggu hingga instance diinisialisasi dan dimulai.
  14. Klik Koneksi.
  15. Di bagian Keamanan, pilih Hanya izinkan koneksi SSL untuk mengaktifkan koneksi SSL.
  16. Pada dialog Aktifkan SSL, klik Aktifkan dan mulai, lalu tunggu hingga instance dimulai ulang.

Membuat instance dengan alamat IP pribadi dan SSL diaktifkan

Pembuatan instance dengan alamat IP pribadi hanya memerlukan konfigurasi akses layanan pribadi untuk mengaktifkan koneksi dari layanan Google Cloud lainnya, seperti GKE.

  1. Jalankan perintah gcloud compute addresses create guna mengalokasikan rentang IP untuk koneksi akses layanan pribadi:
  2. gcloud compute addresses create google-managed-services-default \
    --global \
    --purpose=VPC_PEERING \
    --prefix-length=16 \
    --description="peering range for Google" \
    --network=default
  3. Jalankan perintah gcloud services vpc-peerings connect untuk membuat koneksi akses layanan pribadi:
  4. gcloud services vpc-peerings connect \
    --service=servicenetworking.googleapis.com \
    --ranges=google-managed-services-default \
    --network=default
  5. Sebelum menjalankan perintah gcloud sql instances create untuk membuat instance sebagai berikut, ganti DB_ROOT_PASSWORD dengan sandi pengguna database Anda.

  6. Atau, ubah nilai untuk parameter berikut:

    • --database_version: Jenis dan versi mesin database. Jika tidak ditentukan, API default akan digunakan. Lihat versi database gcloud untuk daftar versi yang tersedia saat ini.
    • --cpu: Jumlah inti dalam mesin.
    • --memory: Bilangan bulat yang menunjukkan jumlah memori yang disertakan dalam mesin. Unit ukuran dapat diberikan (misalnya, 3072MB atau 9GB). Jika tidak ada unit yang ditentukan, GB akan digunakan.
    • --region: Lokasi regional instance (misalnya asia-east1, us-east1). Jika tidak ditentukan, us-central1 default akan digunakan. Lihat daftar lengkap region.

    Jalankan perintah gcloud sql instances create untuk membuat instance Cloud SQL dengan alamat IP pribadi.

     gcloud beta sql instances create quickstart-instance \
    --database-version=MYSQL_8_0 \
    --cpu=1 \
    --memory=4GB \
    --region=us-central1 \
    --root-password=DB_ROOT_PASSWORD \
    --no-assign-ip \
    --network=default
  7. Jalankan perintah gcloud sql instances patch untuk hanya mengizinkan koneksi SSL untuk instance.

  8. gcloud sql instances patch quickstart-instance --require-ssl

Buat database

Konsolgcloud
  1. Di konsol Google Cloud, buka halaman Instance Cloud SQL.

    Buka Instance Cloud SQL

  2. Pilih quickstart-instance.
  3. Dari menu navigasi SQL, pilih Databases.
  4. Klik Buat database.
    1. Di kolom Nama database di kotak dialog Buat database, masukkan quickstart-db. Biarkan nilai untuk himpunan karakter dan kolasi.
    2. Klik Buat.

Jalankan perintah gcloud sql databases create untuk membuat database.

gcloud sql databases create quickstart-db --instance=quickstart-instance

Membuat pengguna

Konsolgcloud
  1. Di konsol Google Cloud, buka halaman Instance Cloud SQL.

    Buka Instance Cloud SQL

  2. Untuk membuka halaman Ringkasan instance, klik nama instance.
  3. Pilih Pengguna dari menu navigasi SQL.
  4. Klik Tambahkan akun pengguna.
    • Di halaman Tambahkan akun pengguna ke instance instance_name, tambahkan informasi berikut:
      • Nama pengguna: Tetapkan ke quickstart-user
      • Sandi: Tentukan sandi untuk pengguna database Anda. Catat hal ini untuk digunakan di langkah selanjutnya dalam panduan memulai ini.
      • Di bagian Nama host, default bagian ini adalah Izinkan host apa pun sehingga pengguna dapat terhubung dari alamat IP mana pun.

        Secara opsional, pilih Batasi host dengan alamat IP atau rentang alamat IP, lalu masukkan alamat IP atau rentang alamat IP pada bagian Host. Setelah itu, pengguna dapat terhubung dari alamat IP atau alamat yang ditentukan.

  5. Klik Tambahkan.

Sebelum menjalankan perintah sebagai berikut, ganti DB_PASS dengan sandi untuk pengguna database Anda. Catat hal ini untuk digunakan di langkah selanjutnya dalam panduan memulai ini.

Jalankan perintah gcloud sql users create untuk membuat pengguna.

gcloud sql users create quickstart-user \
--instance=quickstart-instance \
--password=DB_PASS

Batas panjang nama pengguna untuk Cloud SQL dan MySQL lokal sama; 32 karakter untuk MySQL 8.0 dan yang lebih baru, 16 karakter untuk versi sebelumnya.

Membuat cluster GKE

Konsolgcloud
  1. Di konsol Google Cloud, buka halaman Google Kubernetes Engine.

    Buka Google Kubernetes Engine

  2. Klik Buat.
  3. Klik Konfigurasi untuk GKE Autopilot.
  4. Untuk Nama, tentukan nama cluster sebagai gke-cloud-sql-quickstart.
  5. Klik Buat.

Jalankan perintah gcloud container clusters create-auto untuk membuat cluster.

gcloud container clusters create-auto gke-cloud-sql-quickstart \
    --region us-central1

Meng-clone aplikasi contoh Cloud SQL ke Cloud Shell Editor

Dengan instance Cloud SQL, database, dan cluster GKE, Anda kini dapat meng-clone dan mengonfigurasi aplikasi contoh untuk terhubung ke instance Cloud SQL. Langkah-langkah selanjutnya dalam panduan memulai ini memerlukan penggunaan alat command line gcloud dan kubectl. Kedua alat ini sudah diinstal sebelumnya di Cloud Shell.

  1. Di Editor Cloud Shell, buka kode sumber aplikasi contoh.

    Buka Cloud Shell Editor
  2. Pada dialog Open in Cloud Shell, klik Konfirmasi untuk mendownload kode aplikasi contoh dan membuka direktori aplikasi contoh di Cloud Shell Editor.
  1. Di Cloud Shell Editor, buka kode sumber aplikasi contoh.
    Buka Cloud Shell Editor
  2. Pada dialog Open in Cloud Shell, klik Konfirmasi untuk mendownload kode aplikasi contoh dan membuka direktori aplikasi contoh di Cloud Shell Editor.
  1. Di Cloud Shell Editor, buka kode sumber aplikasi contoh.
    Buka Cloud Shell Editor
  2. Pada dialog Open in Cloud Shell, klik Konfirmasi untuk mendownload kode aplikasi contoh dan membuka direktori aplikasi contoh di Cloud Shell Editor.
  1. Di Cloud Shell Editor, buka kode sumber aplikasi contoh.
    Buka Cloud Shell Editor
  2. Pada dialog Open in Cloud Shell, klik Konfirmasi untuk mendownload kode aplikasi contoh dan membuka direktori aplikasi contoh di Cloud Shell Editor.

Mengaktifkan cluster GKE

Aktifkan cluster GKE yang baru saja Anda buat sebagai cluster default yang akan digunakan untuk perintah yang tersisa dalam panduan memulai ini.

Jalankan perintah gcloud container clusters get-credentials sebagai berikut untuk mengaktifkan cluster GKE.
gcloud container clusters get-credentials gke-cloud-sql-quickstart \
  --region us-central1

Menyiapkan akun layanan

Buat dan konfigurasikan akun layanan Google Cloud yang akan digunakan oleh GKE sehingga akun tersebut memiliki peran Klien Cloud SQL dengan izin untuk terhubung ke Cloud SQL.
  1. Jalankan perintah gcloud iam service-accounts create sebagai berikut untuk membuat akun layanan baru:
    gcloud iam service-accounts create gke-quickstart-service-account \
      --display-name="GKE Quickstart Service Account"
  2. Jalankan perintah gcloud projects add-iam-policy-binding sebagai berikut untuk menambahkan peran Klien Cloud SQL ke akun layanan Google Cloud yang baru saja Anda buat. Ganti YOUR_PROJECT_ID dengan project ID.
    gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
      --member="serviceAccount:gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/cloudsql.client"
  3. Aplikasi contoh menggunakan logging, jadi, jalankan perintah gcloud projects add-iam-policy-binding sebagai berikut untuk menambahkan peran Log Writer ke akun layanan Google Cloud yang baru saja Anda buat. Ganti YOUR_PROJECT_ID dengan project ID.
    gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
      --member="serviceAccount:gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/logging.logWriter"
  4. Akun layanan harus dapat mengambil image dari repositori artifactory, jadi jalankan perintah
    gcloud projects add-iam-policy-binding sebagai berikut untuk menambahkan peran Pembaca Artifact Registry ke akun layanan. Ganti YOUR_PROJECT_ID dengan project ID.
    gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
      --member="serviceAccount:gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/artifactregistry.reader"
Buat akun layanan Kubernetes yang dikonfigurasi agar memiliki akses ke Cloud SQL dengan mem-binding ke akun layanan Google Cloud menggunakan Workload Identity Federation untuk GKE.
  1. Buat Akun Layanan Kubernetes.
    1. Update file service-account.yaml di Cloud Shell Editor. Ganti <YOUR-KSA-NAME> dengan ksa-cloud-sql.
    2. Jalankan perintah kubectl apply sebagai berikut di Cloud Shell:
      kubectl apply -f service-account.yaml
  2. Jalankan perintah gcloud iam service-accounts add-iam-policy-binding sebagai berikut untuk mengaktifkan binding IAM Google Cloud Akun Layanan dan Akun Layanan Kubernetes. Lakukan penggantian berikut:
    • YOUR_PROJECT_ID dengan project ID.
    • YOUR_K8S_NAMESPACE dengan default, yang merupakan namespace default untuk cluster yang dibuat di GKE.
    • YOUR_KSA_NAME dengan ksa-cloud-sql.
    gcloud iam service-accounts add-iam-policy-binding \
      --role="roles/iam.workloadIdentityUser" \
      --member="serviceAccount:YOUR_PROJECT_ID.svc.id.goog[YOUR_K8S_NAMESPACE/YOUR_KSA_NAME]" \
      gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com
  3. Jalankan perintah kubectl annotate sebagai berikut untuk melakukan anotasi Akun Layanan Kubernetes dengan binding IAM. Lakukan penggantian berikut:
    • YOUR_KSA_NAME dengan ksa-cloud-sql.
    • YOUR_PROJECT_ID dengan project ID.
    kubectl annotate serviceaccount \
      YOUR_KSA_NAME  \
      iam.gke.io/gcp-service-account=gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com

Mengonfigurasi secret

Jalankan perintah kubectl create secret generic sebagai berikut guna membuat secret Kubernetes untuk database, pengguna, dan sandi pengguna yang akan digunakan oleh aplikasi contoh. Nilai setiap secret didasarkan pada nilai yang ditentukan pada langkah-langkah panduan memulai ini sebelumnya. Ganti DB_PASS dengan sandi quickstart-user yang Anda buat di langkah panduan memulai Membuat pengguna sebelumnya.

kubectl create secret generic gke-cloud-sql-secrets \
  --from-literal=database=quickstart-db \
  --from-literal=username=quickstart-user \
  --from-literal=password=DB_PASS

Mem-build aplikasi contoh

  1. Jalankan perintah gcloud artifacts repositories create berikut di Cloud Shell untuk membuat repositori di Artifact Registry bernama gke-cloud-sql-repo di region yang sama dengan cluster Anda. Ganti YOUR_PROJECT_ID dengan project ID.
    gcloud artifacts repositories create gke-cloud-sql-repo \
      --project=YOUR_PROJECT_ID \
      --repository-format=docker \
      --location=us-central1 \
      --description="GKE Quickstart sample app"
  2. Jalankan perintah gcloud builds submit sebagai berikut di Cloud Shell untuk mem-build container Docker dan memublikasikannya ke Artifact Registry. Ganti YOUR_PROJECT_ID dengan project ID.
    gcloud builds submit \
      --tag us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql .
  1. Jalankan perintah gcloud artifacts repositories create berikut di Cloud Shell untuk membuat repositori di Artifact Registry bernama gke-cloud-sql-repo di region yang sama dengan cluster Anda. Ganti YOUR_PROJECT_ID dengan project ID.
    gcloud artifacts repositories create gke-cloud-sql-repo \
      --project=YOUR_PROJECT_ID \
      --repository-format=docker \
      --location=us-central1 \
      --description="GKE Quickstart sample app"
  2. Jalankan perintah mvn sebagai berikut di Cloud Shell untuk mem-build container Docker dan memublikasikanya ke Artifact Registry. Ganti YOUR_PROJECT_ID dengan project ID.
    mvn clean package com.google.cloud.tools:jib-maven-plugin:2.8.0:build \
      -Dimage=us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql \
      -DskipTests -Djib.to.credHelper=gcloud
  1. Jalankan perintah gcloud artifacts repositories create berikut di Cloud Shell untuk membuat repositori di Artifact Registry bernama gke-cloud-sql-repo di region yang sama dengan cluster Anda. Ganti YOUR_PROJECT_ID dengan project ID.
    gcloud artifacts repositories create gke-cloud-sql-repo \
      --project=YOUR_PROJECT_ID \
      --repository-format=docker \
      --location=us-central1 \
      --description="GKE Quickstart sample app"
  2. Jalankan perintah gcloud builds submit sebagai berikut di Cloud Shell untuk mem-build container Docker dan memublikasikannya ke Artifact Registry. Ganti YOUR_PROJECT_ID dengan project ID.
    gcloud builds submit \
      --tag us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql .
  1. Jalankan perintah gcloud artifacts repositories create berikut di Cloud Shell untuk membuat repositori di Artifact Registry bernama gke-cloud-sql-repo di region yang sama dengan cluster Anda. Ganti YOUR_PROJECT_ID dengan project ID.
    gcloud artifacts repositories create gke-cloud-sql-repo \
      --project=YOUR_PROJECT_ID \
      --repository-format=docker \
      --location=us-central1 \
      --description="GKE Quickstart sample app"
  2. Jalankan perintah gcloud builds submit sebagai berikut di Cloud Shell untuk mem-build container Docker dan memublikasikannya ke Artifact Registry. Ganti YOUR_PROJECT_ID dengan project ID.
    gcloud builds submit \
      --tag us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql .

Men-deploy aplikasi contoh

IP Publik

Dengan konfigurasi aplikasi contoh yang sudah ada, sekarang Anda dapat men-deploy aplikasi contoh.

Aplikasi contoh yang telah di-deploy terhubung ke instance Cloud SQL menggunakan proxy Cloud SQL yang berjalan dalam pola file bantuan Kubernetes. Pola file bantuan ini diperoleh dengan men-deploy workload dengan container tambahan yang memiliki pod Kubernetes yang sama dengan container aplikasi contoh.

  1. Dapatkan nama koneksi instance Cloud SQL dengan menjalankan perintah gcloud sql instances describe:
    gcloud sql instances describe quickstart-instance --format='value(connectionName)'
  2. Update file deployment.yaml di Cloud Shell Editor. Lakukan penggantian berikut:
    • <YOUR_KSA_NAME> dengan ksa-cloud-sql.
    • <LOCATION> dengan us-central1.
    • <YOUR_PROJECT_ID> dengan ID project.
    • <YOUR-DB-SECRET> dengan gke-cloud-sql-secrets.
    • <INSTANCE_CONNECTION_NAME> dengan nama koneksi instance Cloud SQL yang diambil dari perintah gcloud pada langkah sebelumnya. Formatnya adalah project_id:region:instance_name. Nama koneksi instance juga terlihat di halaman Ringkasan instance Cloud SQL.
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: gke-cloud-sql-quickstart
    spec:
      selector:
        matchLabels:
          app: gke-cloud-sql-app
      template:
        metadata:
          labels:
            app: gke-cloud-sql-app
        spec:
          serviceAccountName: <YOUR-KSA-NAME>
          containers:
          - name: gke-cloud-sql-app
            # Replace <LOCATION> with your Artifact Registry location (e.g., us-central1).
            # Replace <YOUR_PROJECT_ID> with your project ID.
            image: <LOCATION>-docker.pkg.dev/<YOUR_PROJECT_ID>/gke-cloud-sql-repo/gke-sql:latest
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
            - name: PORT
              value: "8080"
            # This project uses environment variables to determine
            # how you would like to run your application
            # To use the Go Connector (recommended) - use INSTANCE_CONNECTION_NAME (proj:region:instance)
            # To use TCP - Setting INSTANCE_HOST will use TCP (e.g., 127.0.0.1)
            # To use Unix, use INSTANCE_UNIX_SOCKET (e.g., /cloudsql/proj:region:instance)
            - name: INSTANCE_HOST
              value: "127.0.0.1"
            - name: DB_PORT
              value: "3306"
            # For Automatic IAM Authentication with the Go Connector
            # use DB_IAM_USER instead of DB_USER (recommended)
            # You may also remove the DB_PASS environment variable if
            # you use Automatic IAM Authentication
            - name: DB_USER
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: username
            - name: DB_PASS
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: password
            - name: DB_NAME
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: database
          # If you are using the Go Connector (recommended), you can
          # remove cloud-sql-proxy (everything below this line)
          - name: cloud-sql-proxy
            # This uses the latest version of the Cloud SQL Proxy
            # It is recommended to use a specific version for production environments.
            # See: https://github.com/GoogleCloudPlatform/cloudsql-proxy
            image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:latest
            args:
              # If connecting from a VPC-native GKE cluster, you can use the
              # following flag to have the proxy connect over private IP
              # - "--private-ip"
    
              # If you are not connecting with Automatic IAM, you can delete
              # the following flag.
              - "--auto-iam-authn"
    
              # tcp should be set to the port the proxy should listen on
              # and should match the DB_PORT value set above.
              # Defaults: MySQL: 3306, Postgres: 5432, SQLServer: 1433
              - "--port=3306"
              - "<INSTANCE_CONNECTION_NAME>"
            securityContext:
              # The default Cloud SQL proxy image runs as the
              # "nonroot" user and group (uid: 65532) by default.
              runAsNonRoot: true
    
  3. Jalankan perintah kubectl apply seperti berikut di Cloud Shell untuk men-deploy aplikasi contoh:
    kubectl apply -f deployment.yaml
  4. Jalankan perintah kubectl apply sebagai berikut untuk menambahkan load balancer di depan deployment sehingga Anda dapat mengaksesnya melalui internet:
    kubectl apply -f service.yaml
  5. Jalankan perintah kubectl get sebagai berikut untuk mendapatkan detail layanan:
    kubectl get services
  6. Salin alamat IP Eksternal setelah tersedia pada detail layanan, yang mungkin memerlukan waktu beberapa menit.
  7. Tampilkan aplikasi contoh yang telah di-deploy. Buka jendela browser, lalu buka alamat IP Eksternal layanan.

    Menampilkan aplikasi contoh yang di-deploy

Aplikasi contoh yang di-deploy terhubung ke instance Cloud SQL menggunakan konektor Java Cloud SQL.

  1. Dapatkan nama koneksi instance Cloud SQL dengan menjalankan perintah gcloud sql instances describe:
    gcloud sql instances describe quickstart-instance --format='value(connectionName)'
  2. Update file deployment.yaml di Cloud Shell Editor. Lakukan penggantian berikut:
    • <YOUR_KSA_NAME> dengan ksa-cloud-sql.
    • <LOCATION> dengan us-central1.
    • <YOUR_PROJECT_ID> dengan ID project.
    • <YOUR-DB-SECRET> dengan gke-cloud-sql-secrets.
    • <INSTANCE_CONNECTION_NAME> dengan nama koneksi instance Cloud SQL yang diambil dari perintah gcloud pada langkah sebelumnya. Formatnya adalah project_id:region:instance_name. Nama koneksi instance juga terlihat di halaman Ringkasan instance Cloud SQL.
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: gke-cloud-sql-quickstart
    spec:
      selector:
        matchLabels:
          app: gke-cloud-sql-app
      template:
        metadata:
          labels:
            app: gke-cloud-sql-app
        spec:
          # For more information about using Kubernetes service accounts see: 
          # https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts
          serviceAccountName: <YOUR-KSA-NAME> # TODO(developer): replace this value.
          containers:
          - name: gke-cloud-sql-app
            # Replace <LOCATION> with your Artifact Registry location (e.g., us-central1).
            # Replace <YOUR_PROJECT_ID> with your project ID.
            image: <LOCATION>-docker.pkg.dev/<YOUR_PROJECT_ID>/gke-cloud-sql-repo/gke-sql:latest
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
            - name: PORT
              value: "8080"
            - name: INSTANCE_CONNECTION_NAME
              value: <INSTANCE_CONNECTION_NAME>
            - name: DB_HOST
              value: "127.0.0.1"
            - name: DB_PORT
              value: "3306"  
            - name: DB_USER
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: username
            - name: DB_PASS
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: password
            - name: DB_NAME
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: database
    
  3. Jalankan perintah kubectl apply seperti berikut di Cloud Shell untuk men-deploy aplikasi contoh:
    kubectl apply -f deployment.yaml
  4. Jalankan perintah kubectl apply sebagai berikut untuk menambahkan load balancer di depan deployment sehingga Anda dapat mengaksesnya melalui internet:
    kubectl apply -f service.yaml
  5. Jalankan perintah kubectl get sebagai berikut untuk mendapatkan detail layanan:
    kubectl get services
  6. Salin alamat IP Eksternal setelah tersedia pada detail layanan, yang mungkin memerlukan waktu beberapa menit.
  7. Tampilkan aplikasi contoh yang telah di-deploy. Buka jendela browser, lalu buka alamat IP Eksternal layanan.

    Menampilkan aplikasi contoh yang di-deploy

Aplikasi contoh yang telah di-deploy terhubung ke instance Cloud SQL menggunakan proxy Cloud SQL yang berjalan dalam pola file bantuan Kubernetes. Pola file bantuan ini diperoleh dengan men-deploy workload dengan container tambahan yang memiliki pod Kubernetes yang sama dengan container aplikasi contoh.

  1. Dapatkan nama koneksi instance Cloud SQL dengan menjalankan perintah gcloud sql instances describe:
    gcloud sql instances describe quickstart-instance --format='value(connectionName)'
  2. Update file deployment.yaml di Cloud Shell Editor. Lakukan penggantian berikut:
    • <YOUR_KSA_NAME> dengan ksa-cloud-sql.
    • <LOCATION> dengan us-central1.
    • <YOUR_PROJECT_ID> dengan ID project.
    • <YOUR-DB-SECRET> dengan gke-cloud-sql-secrets.
    • <INSTANCE_CONNECTION_NAME> dengan nama koneksi instance Cloud SQL yang diambil dari perintah gcloud pada langkah sebelumnya. Formatnya adalah project_id:region:instance_name. Nama koneksi instance juga terlihat di halaman Ringkasan instance Cloud SQL.
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: gke-cloud-sql-quickstart
    spec:
      selector:
        matchLabels:
          app: gke-cloud-sql-app
      template:
        metadata:
          labels:
            app: gke-cloud-sql-app
        spec:
          serviceAccountName: <YOUR-KSA-NAME>
          containers:
          - name: gke-cloud-sql-app
            # Replace <LOCATION> with your Artifact Registry location (e.g., us-central1).
            # Replace <YOUR_PROJECT_ID> with your project ID.
            image: <LOCATION>-docker.pkg.dev/<YOUR_PROJECT_ID>/gke-cloud-sql-repo/gke-sql:latest
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
            - name: PORT
              value: "8080"
            - name: INSTANCE_HOST
              value: "127.0.0.1"
            - name: DB_PORT
              value: "3306"  
            - name: DB_USER
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: username
            - name: DB_PASS
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: password
            - name: DB_NAME
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: database
          - name: cloud-sql-proxy
            # This uses the latest version of the Cloud SQL proxy
            # It is recommended to use a specific version for production environments.
            # See: https://github.com/GoogleCloudPlatform/cloudsql-proxy 
            image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:latest
            args:
              # If connecting from a VPC-native GKE cluster, you can use the
              # following flag to have the proxy connect over private IP
              # - "--private-ip"
    
              # If you are not connecting with Automatic IAM, you can delete
              # the following flag.
              - "--auto-iam-authn"
    
              # tcp should be set to the port the proxy should listen on
              # and should match the DB_PORT value set above.
              # Defaults: MySQL: 3306, Postgres: 5432, SQLServer: 1433
              - "--port=3306"
              - "<INSTANCE_CONNECTION_NAME>"
            securityContext:
              # The default Cloud SQL proxy image runs as the
              # "nonroot" user and group (uid: 65532) by default.
              runAsNonRoot: true
    
  3. Jalankan perintah kubectl apply seperti berikut di Cloud Shell untuk men-deploy aplikasi contoh:
    kubectl apply -f deployment.yaml
  4. Jalankan perintah kubectl apply sebagai berikut untuk menambahkan load balancer di depan deployment sehingga Anda dapat mengaksesnya melalui internet:
    kubectl apply -f service.yaml
  5. Jalankan perintah kubectl get sebagai berikut untuk mendapatkan detail layanan:
    kubectl get services
  6. Salin alamat IP Eksternal setelah tersedia pada detail layanan, yang mungkin memerlukan waktu beberapa menit.
  7. Tampilkan aplikasi contoh yang telah di-deploy. Buka jendela browser, lalu buka alamat IP Eksternal layanan.

    Melihat aplikasi contoh yang di-deploy

cloud-sql/mysql/mysql/deployment.yaml

Aplikasi contoh yang telah di-deploy terhubung ke instance Cloud SQL menggunakan proxy Cloud SQL yang berjalan dalam pola file bantuan Kubernetes. Pola file bantuan ini diperoleh dengan men-deploy workload dengan container tambahan yang memiliki pod Kubernetes yang sama dengan container aplikasi contoh.

  1. Dapatkan nama koneksi instance Cloud SQL dengan menjalankan perintah gcloud sql instances describe:
    gcloud sql instances describe quickstart-instance --format='value(connectionName)'
  2. Update file deployment.yaml di Cloud Shell Editor. Lakukan penggantian berikut:
    • <YOUR_KSA_NAME> dengan ksa-cloud-sql.
    • <LOCATION> dengan us-central1.
    • <YOUR_PROJECT_ID> dengan ID project.
    • <YOUR-DB-SECRET> dengan gke-cloud-sql-secrets.
    • <INSTANCE_CONNECTION_NAME> dengan nama koneksi instance Cloud SQL yang diambil dari perintah gcloud pada langkah sebelumnya. Formatnya adalah project_id:region:instance_name. Nama koneksi instance juga terlihat di halaman Ringkasan instance Cloud SQL.
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: gke-cloud-sql-quickstart
    spec:
      selector:
        matchLabels:
          app: gke-cloud-sql-app
      template:
        metadata:
          labels:
            app: gke-cloud-sql-app
        spec:
          serviceAccountName: <YOUR-KSA-NAME>
          containers:
          - name: gke-cloud-sql-app
            # Replace <LOCATION> with your Artifact Registry location (e.g., us-central1).
            # Replace <YOUR_PROJECT_ID> with your project ID.
            image: <LOCATION>-docker.pkg.dev/<YOUR_PROJECT_ID>/gke-cloud-sql-repo/gke-sql:latest
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
            - name: PORT
              value: "8080"
            # This project uses environment variables to determine
            # how you would like to run your application
            # To use the Python Connector (recommended) - use INSTANCE_CONNECTION_NAME (proj:region:instance)
            # To use TCP - Setting INSTANCE_HOST will use TCP (e.g., 127.0.0.1)
            # To use Unix, use INSTANCE_UNIX_SOCKET (e.g., /cloudsql/proj:region:instance)
            - name: INSTANCE_HOST
              value: "127.0.0.1"
            - name: DB_PORT
              value: "3306"
            # For Automatic IAM Authentication with the Python Connector
            # use DB_IAM_USER instead of DB_USER (recommended)
            # You may also remove the DB_PASS environment variable if
            # you use Automatic IAM Authentication
            - name: DB_USER
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: username
            - name: DB_PASS
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: password
            - name: DB_NAME
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: database
          # If you are using the Python Connector (recommended), you can
          # remove cloud-sql-proxy (everything below this line)
          - name: cloud-sql-proxy
            # This uses the latest version of the Cloud SQL Proxy
            # It is recommended to use a specific version for production environments.
            # See: https://github.com/GoogleCloudPlatform/cloudsql-proxy 
            image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:latest
            args:
              # If connecting from a VPC-native GKE cluster, you can use the
              # following flag to have the proxy connect over private IP
              # - "--private-ip"
    
              # If you are not connecting with Automatic IAM, you can delete
              # the following flag.
              - "--auto-iam-authn"
    
              # tcp should be set to the port the proxy should listen on
              # and should match the DB_PORT value set above.
              # Defaults: MySQL: 3306, Postgres: 5432, SQLServer: 1433
              - "--port=3306"
              - "<INSTANCE_CONNECTION_NAME>"
            securityContext:
              # The default Cloud SQL proxy image runs as the
              # "nonroot" user and group (uid: 65532) by default.
              runAsNonRoot: true
    
  3. Jalankan perintah kubectl apply seperti berikut di Cloud Shell untuk men-deploy aplikasi contoh:
    kubectl apply -f deployment.yaml
  4. Jalankan perintah kubectl apply sebagai berikut untuk menambahkan load balancer di depan deployment sehingga Anda dapat mengaksesnya melalui internet:
    kubectl apply -f service.yaml
  5. Jalankan perintah kubectl get sebagai berikut untuk mendapatkan detail layanan:
    kubectl get services
  6. Salin alamat IP Eksternal setelah tersedia pada detail layanan, yang mungkin memerlukan waktu beberapa menit.
  7. Tampilkan aplikasi contoh yang telah di-deploy. Buka jendela browser, lalu buka alamat IP Eksternal layanan.

    Menampilkan aplikasi contoh yang di-deploy

Dengan konfigurasi aplikasi contoh yang sudah ada, sekarang Anda dapat men-deploy aplikasi contoh.

Aplikasi contoh yang telah di-deploy terhubung ke instance Cloud SQL menggunakan proxy Cloud SQL yang berjalan dalam pola file bantuan Kubernetes. Pola file bantuan ini diperoleh dengan men-deploy workload dengan container tambahan yang memiliki pod Kubernetes yang sama dengan container aplikasi contoh.

  1. Dapatkan nama koneksi instance Cloud SQL dengan menjalankan perintah gcloud sql instances describe:
    gcloud sql instances describe quickstart-instance --format='value(connectionName)'
  2. Update file deployment.yaml di Cloud Shell Editor. Lakukan penggantian dan pengeditan berikut:
    • Ganti <YOUR_KSA_NAME> dengan ksa-cloud-sql.
    • Ganti <LOCATION> dengan us-central1.
    • Ganti <YOUR_PROJECT_ID> dengan project ID.
    • Ganti <YOUR-DB-SECRET> dengan gke-cloud-sql-secrets.
    • Ganti <INSTANCE_CONNECTION_NAME> dengan nama koneksi instance Cloud SQL yang diambil dari perintah gcloud pada langkah sebelumnya. Formatnya adalah project_id:region:instance_name. Nama koneksi instance juga terlihat di halaman Ringkasan instance Cloud SQL.
    • Aktifkan proxy Auth Cloud SQL untuk terhubung ke instance Cloud SQL Anda menggunakan alamat IP pribadinya. Hapus tanda komentar pada flag "-ip_address_types=PRIVATE" dengan menghapus simbol komentar # dan spasi putih di akhir. Flag tanpa komentar akan terlihat seperti ini:
      - "-ip_address_types=PRIVATE"
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: gke-cloud-sql-quickstart
    spec:
      selector:
        matchLabels:
          app: gke-cloud-sql-app
      template:
        metadata:
          labels:
            app: gke-cloud-sql-app
        spec:
          serviceAccountName: <YOUR-KSA-NAME>
          containers:
          - name: gke-cloud-sql-app
            # Replace <LOCATION> with your Artifact Registry location (e.g., us-central1).
            # Replace <YOUR_PROJECT_ID> with your project ID.
            image: <LOCATION>-docker.pkg.dev/<YOUR_PROJECT_ID>/gke-cloud-sql-repo/gke-sql:latest
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
            - name: PORT
              value: "8080"
            # This project uses environment variables to determine
            # how you would like to run your application
            # To use the Go Connector (recommended) - use INSTANCE_CONNECTION_NAME (proj:region:instance)
            # To use TCP - Setting INSTANCE_HOST will use TCP (e.g., 127.0.0.1)
            # To use Unix, use INSTANCE_UNIX_SOCKET (e.g., /cloudsql/proj:region:instance)
            - name: INSTANCE_HOST
              value: "127.0.0.1"
            - name: DB_PORT
              value: "3306"
            # For Automatic IAM Authentication with the Go Connector
            # use DB_IAM_USER instead of DB_USER (recommended)
            # You may also remove the DB_PASS environment variable if
            # you use Automatic IAM Authentication
            - name: DB_USER
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: username
            - name: DB_PASS
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: password
            - name: DB_NAME
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: database
          # If you are using the Go Connector (recommended), you can
          # remove cloud-sql-proxy (everything below this line)
          - name: cloud-sql-proxy
            # This uses the latest version of the Cloud SQL Proxy
            # It is recommended to use a specific version for production environments.
            # See: https://github.com/GoogleCloudPlatform/cloudsql-proxy
            image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:latest
            args:
              # If connecting from a VPC-native GKE cluster, you can use the
              # following flag to have the proxy connect over private IP
              # - "--private-ip"
    
              # If you are not connecting with Automatic IAM, you can delete
              # the following flag.
              - "--auto-iam-authn"
    
              # tcp should be set to the port the proxy should listen on
              # and should match the DB_PORT value set above.
              # Defaults: MySQL: 3306, Postgres: 5432, SQLServer: 1433
              - "--port=3306"
              - "<INSTANCE_CONNECTION_NAME>"
            securityContext:
              # The default Cloud SQL proxy image runs as the
              # "nonroot" user and group (uid: 65532) by default.
              runAsNonRoot: true
    
  3. Jalankan perintah kubectl apply seperti berikut di Cloud Shell untuk men-deploy aplikasi contoh:
    kubectl apply -f deployment.yaml
  4. Jalankan perintah kubectl apply sebagai berikut untuk menambahkan load balancer di depan deployment sehingga Anda dapat mengaksesnya melalui internet:
    kubectl apply -f service.yaml
  5. Jalankan perintah kubectl get sebagai berikut untuk mendapatkan detail layanan:
    kubectl get services
  6. Salin alamat IP Eksternal setelah tersedia pada detail layanan, yang mungkin memerlukan waktu beberapa menit.
  7. Tampilkan aplikasi contoh yang telah di-deploy. Buka jendela browser, lalu buka alamat IP Eksternal layanan.

    Menampilkan aplikasi contoh yang di-deploy

Aplikasi contoh yang di-deploy terhubung ke instance Cloud SQL menggunakan konektor Java Cloud SQL.

  1. Dapatkan nama koneksi instance Cloud SQL dengan menjalankan perintah gcloud sql instances describe:
    gcloud sql instances describe quickstart-instance --format='value(connectionName)'
  2. Update file deployment.yaml di Cloud Shell Editor. Lakukan penggantian berikut:
    • <YOUR_KSA_NAME> dengan ksa-cloud-sql.
    • <LOCATION> dengan us-central1.
    • <YOUR_PROJECT_ID> dengan ID project.
    • <YOUR-DB-SECRET> dengan gke-cloud-sql-secrets.
    • <INSTANCE_CONNECTION_NAME> dengan nama koneksi instance Cloud SQL yang diambil dari perintah gcloud pada langkah sebelumnya. Formatnya adalah project_id:region:instance_name. Nama koneksi instance juga terlihat di halaman Ringkasan instance Cloud SQL.
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: gke-cloud-sql-quickstart
    spec:
      selector:
        matchLabels:
          app: gke-cloud-sql-app
      template:
        metadata:
          labels:
            app: gke-cloud-sql-app
        spec:
          # For more information about using Kubernetes service accounts see: 
          # https://cloud.google.com/kubernetes-engine/docs/how-to/kubernetes-service-accounts
          serviceAccountName: <YOUR-KSA-NAME> # TODO(developer): replace this value.
          containers:
          - name: gke-cloud-sql-app
            # Replace <LOCATION> with your Artifact Registry location (e.g., us-central1).
            # Replace <YOUR_PROJECT_ID> with your project ID.
            image: <LOCATION>-docker.pkg.dev/<YOUR_PROJECT_ID>/gke-cloud-sql-repo/gke-sql:latest
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
            - name: PORT
              value: "8080"
            - name: INSTANCE_CONNECTION_NAME
              value: <INSTANCE_CONNECTION_NAME>
            - name: DB_HOST
              value: "127.0.0.1"
            - name: DB_PORT
              value: "3306"  
            - name: DB_USER
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: username
            - name: DB_PASS
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: password
            - name: DB_NAME
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: database
    
  3. Jalankan perintah kubectl apply seperti berikut di Cloud Shell untuk men-deploy aplikasi contoh:
    kubectl apply -f deployment.yaml
  4. Jalankan perintah kubectl apply sebagai berikut untuk menambahkan load balancer di depan deployment sehingga Anda dapat mengaksesnya melalui internet:
    kubectl apply -f service.yaml
  5. Jalankan perintah kubectl get sebagai berikut untuk mendapatkan detail layanan:
    kubectl get services
  6. Salin alamat IP Eksternal setelah tersedia pada detail layanan, yang mungkin memerlukan waktu beberapa menit.
  7. Tampilkan aplikasi contoh yang telah di-deploy. Buka jendela browser, lalu buka alamat IP Eksternal layanan.

    Menampilkan aplikasi contoh yang di-deploy

Aplikasi contoh yang telah di-deploy terhubung ke instance Cloud SQL menggunakan proxy Cloud SQL yang berjalan dalam pola file bantuan Kubernetes. Pola file bantuan ini diperoleh dengan men-deploy workload dengan container tambahan yang memiliki pod Kubernetes yang sama dengan container aplikasi contoh.

  1. Dapatkan nama koneksi instance Cloud SQL dengan menjalankan perintah gcloud sql instances describe:
    gcloud sql instances describe quickstart-instance --format='value(connectionName)'
  2. Update file deployment.yaml di Cloud Shell Editor. Lakukan penggantian dan pengeditan berikut:
    • Ganti <YOUR_KSA_NAME> dengan ksa-cloud-sql.
    • Ganti <LOCATION> dengan us-central1.
    • Ganti <YOUR_PROJECT_ID> dengan project ID.
    • Ganti <YOUR-DB-SECRET> dengan gke-cloud-sql-secrets.
    • Ganti <INSTANCE_CONNECTION_NAME> dengan nama koneksi instance Cloud SQL yang diambil dari perintah gcloud pada langkah sebelumnya. Formatnya adalah project_id:region:instance_name. Nama koneksi instance juga terlihat di halaman Ringkasan instance Cloud SQL.
    • Aktifkan proxy Auth Cloud SQL untuk terhubung ke instance Cloud SQL Anda menggunakan alamat IP pribadinya. Hapus tanda komentar pada flag "-ip_address_types=PRIVATE" dengan menghapus simbol komentar # dan spasi putih di akhir. Flag tanpa komentar akan terlihat seperti ini:
      - "-ip_address_types=PRIVATE"
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: gke-cloud-sql-quickstart
    spec:
      selector:
        matchLabels:
          app: gke-cloud-sql-app
      template:
        metadata:
          labels:
            app: gke-cloud-sql-app
        spec:
          serviceAccountName: <YOUR-KSA-NAME>
          containers:
          - name: gke-cloud-sql-app
            # Replace <LOCATION> with your Artifact Registry location (e.g., us-central1).
            # Replace <YOUR_PROJECT_ID> with your project ID.
            image: <LOCATION>-docker.pkg.dev/<YOUR_PROJECT_ID>/gke-cloud-sql-repo/gke-sql:latest
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
            - name: PORT
              value: "8080"
            - name: INSTANCE_HOST
              value: "127.0.0.1"
            - name: DB_PORT
              value: "3306"  
            - name: DB_USER
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: username
            - name: DB_PASS
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: password
            - name: DB_NAME
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: database
          - name: cloud-sql-proxy
            # This uses the latest version of the Cloud SQL proxy
            # It is recommended to use a specific version for production environments.
            # See: https://github.com/GoogleCloudPlatform/cloudsql-proxy 
            image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:latest
            args:
              # If connecting from a VPC-native GKE cluster, you can use the
              # following flag to have the proxy connect over private IP
              # - "--private-ip"
    
              # If you are not connecting with Automatic IAM, you can delete
              # the following flag.
              - "--auto-iam-authn"
    
              # tcp should be set to the port the proxy should listen on
              # and should match the DB_PORT value set above.
              # Defaults: MySQL: 3306, Postgres: 5432, SQLServer: 1433
              - "--port=3306"
              - "<INSTANCE_CONNECTION_NAME>"
            securityContext:
              # The default Cloud SQL proxy image runs as the
              # "nonroot" user and group (uid: 65532) by default.
              runAsNonRoot: true
    
  3. Jalankan perintah kubectl apply seperti berikut di Cloud Shell untuk men-deploy aplikasi contoh:
    kubectl apply -f deployment.yaml
  4. Jalankan perintah kubectl apply sebagai berikut untuk menambahkan load balancer di depan deployment sehingga Anda dapat mengaksesnya melalui internet:
    kubectl apply -f service.yaml
  5. Jalankan perintah kubectl get sebagai berikut untuk mendapatkan detail layanan:
    kubectl get services
  6. Salin alamat IP Eksternal setelah tersedia pada detail layanan, yang mungkin memerlukan waktu beberapa menit.
  7. Tampilkan aplikasi contoh yang telah di-deploy. Buka jendela browser, lalu buka alamat IP Eksternal layanan.

    Melihat aplikasi contoh yang di-deploy

cloud-sql/mysql/mysql/deployment.yaml

Aplikasi contoh yang telah di-deploy terhubung ke instance Cloud SQL menggunakan proxy Cloud SQL yang berjalan dalam pola file bantuan Kubernetes. Pola file bantuan ini diperoleh dengan men-deploy workload dengan container tambahan yang memiliki pod Kubernetes yang sama dengan container aplikasi contoh.

  1. Dapatkan nama koneksi instance Cloud SQL dengan menjalankan perintah gcloud sql instances describe:
    gcloud sql instances describe quickstart-instance --format='value(connectionName)'
  2. Update file deployment.yaml di Cloud Shell Editor. Lakukan penggantian dan pengeditan berikut:
    • Ganti <YOUR_KSA_NAME> dengan ksa-cloud-sql.
    • Ganti <LOCATION> dengan us-central1.
    • Ganti <YOUR_PROJECT_ID> dengan project ID.
    • Ganti <YOUR-DB-SECRET> dengan gke-cloud-sql-secrets.
    • Ganti <INSTANCE_CONNECTION_NAME> dengan nama koneksi instance Cloud SQL yang diambil dari perintah gcloud pada langkah sebelumnya. Formatnya adalah project_id:region:instance_name. Nama koneksi instance juga terlihat di halaman Ringkasan instance Cloud SQL.
    • Aktifkan proxy Auth Cloud SQL untuk terhubung ke instance Cloud SQL Anda menggunakan alamat IP pribadinya. Hapus tanda komentar pada flag "-ip_address_types=PRIVATE" dengan menghapus simbol komentar # dan spasi putih di akhir. Flag tanpa komentar akan terlihat seperti ini:
      - "-ip_address_types=PRIVATE"
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: gke-cloud-sql-quickstart
    spec:
      selector:
        matchLabels:
          app: gke-cloud-sql-app
      template:
        metadata:
          labels:
            app: gke-cloud-sql-app
        spec:
          serviceAccountName: <YOUR-KSA-NAME>
          containers:
          - name: gke-cloud-sql-app
            # Replace <LOCATION> with your Artifact Registry location (e.g., us-central1).
            # Replace <YOUR_PROJECT_ID> with your project ID.
            image: <LOCATION>-docker.pkg.dev/<YOUR_PROJECT_ID>/gke-cloud-sql-repo/gke-sql:latest
            # This app listens on port 8080 for web traffic by default.
            ports:
            - containerPort: 8080
            env:
            - name: PORT
              value: "8080"
            # This project uses environment variables to determine
            # how you would like to run your application
            # To use the Python Connector (recommended) - use INSTANCE_CONNECTION_NAME (proj:region:instance)
            # To use TCP - Setting INSTANCE_HOST will use TCP (e.g., 127.0.0.1)
            # To use Unix, use INSTANCE_UNIX_SOCKET (e.g., /cloudsql/proj:region:instance)
            - name: INSTANCE_HOST
              value: "127.0.0.1"
            - name: DB_PORT
              value: "3306"
            # For Automatic IAM Authentication with the Python Connector
            # use DB_IAM_USER instead of DB_USER (recommended)
            # You may also remove the DB_PASS environment variable if
            # you use Automatic IAM Authentication
            - name: DB_USER
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: username
            - name: DB_PASS
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: password
            - name: DB_NAME
              valueFrom:
                secretKeyRef:
                  name: <YOUR-DB-SECRET>
                  key: database
          # If you are using the Python Connector (recommended), you can
          # remove cloud-sql-proxy (everything below this line)
          - name: cloud-sql-proxy
            # This uses the latest version of the Cloud SQL Proxy
            # It is recommended to use a specific version for production environments.
            # See: https://github.com/GoogleCloudPlatform/cloudsql-proxy 
            image: gcr.io/cloud-sql-connectors/cloud-sql-proxy:latest
            args:
              # If connecting from a VPC-native GKE cluster, you can use the
              # following flag to have the proxy connect over private IP
              # - "--private-ip"
    
              # If you are not connecting with Automatic IAM, you can delete
              # the following flag.
              - "--auto-iam-authn"
    
              # tcp should be set to the port the proxy should listen on
              # and should match the DB_PORT value set above.
              # Defaults: MySQL: 3306, Postgres: 5432, SQLServer: 1433
              - "--port=3306"
              - "<INSTANCE_CONNECTION_NAME>"
            securityContext:
              # The default Cloud SQL proxy image runs as the
              # "nonroot" user and group (uid: 65532) by default.
              runAsNonRoot: true
    
  3. Jalankan perintah kubectl apply seperti berikut di Cloud Shell untuk men-deploy aplikasi contoh:
    kubectl apply -f deployment.yaml
  4. Jalankan perintah kubectl apply sebagai berikut untuk menambahkan load balancer di depan deployment sehingga Anda dapat mengaksesnya melalui internet:
    kubectl apply -f service.yaml
  5. Jalankan perintah kubectl get sebagai berikut untuk mendapatkan detail layanan:
    kubectl get services
  6. Salin alamat IP Eksternal setelah tersedia pada detail layanan, yang mungkin memerlukan waktu beberapa menit.
  7. Tampilkan aplikasi contoh yang telah di-deploy. Buka jendela browser, lalu buka alamat IP Eksternal layanan.

    Menampilkan aplikasi contoh yang di-deploy

Pembersihan

Agar akun Google Cloud Anda tidak dikenai biaya untuk resource yang digunakan di halaman ini, ikuti langkah-langkah berikut.

  1. Di konsol Google Cloud, buka halaman Instance Cloud SQL.

    Buka Instance Cloud SQL

  2. Pilih instance quickstart-instance untuk membuka halaman Detail instance.
  3. Pada panel ikon di bagian atas halaman, klik Hapus.
  4. Di kotak dialog Hapus instance, ketik quickstart-instance, lalu klik Hapus untuk menghapus instance.
  5. Di konsol Google Cloud, buka halaman Google Kubernetes Engine.

    Buka Google Kubernetes Engine

  6. Klik kotak centang di samping nama layanan gke-cloud-sql-quickstart.
  7. Klik tombol Hapus di bagian atas halaman Google Kubernetes Engine.

Langkah-langkah pembersihan opsional

Jika tidak menggunakan akun layanan Google Cloud yang dibuat untuk panduan memulai ini, Anda dapat menghapusnya.

  1. Di konsol Google Cloud, buka halaman IAM.

    Buka IAM

  2. Pilih kotak centang untuk akun IAM bernama gke-quickstart-service-account.
  3. Klik Hapus dan konfirmasi penghapusan.

Jika tidak menggunakan API yang diaktifkan sebagai bagian dari panduan memulai ini, Anda dapat menonaktifkannya.

  • API yang diaktifkan dalam panduan memulai ini:
    • Compute Engine API
    • Cloud SQL Admin API
    • Google Kubernetes Engine API
    • Artifact Registry API
    • Cloud Build API
  1. Di konsol Google Cloud, buka halaman APIs.

    Buka API

  2. Pilih API yang ingin Anda nonaktifkan, lalu klik tombol Nonaktifkan API.

Langkah berikutnya

Berdasarkan kebutuhan, Anda dapat mempelajari lebih lanjut cara membuat instance Cloud SQL.

Anda juga dapat mempelajari cara membuat pengguna MySQL dan database untuk instance Cloud SQL Anda.

Lihat juga informasi harga Cloud SQL.

Pelajari lebih lanjut:

Selain itu, Anda dapat mempelajari cara menghubungkan ke instance Cloud SQL dari aplikasi Google Cloud lainnya: