ID region
REGION_ID
adalah kode singkat yang ditetapkan Google berdasarkan region yang Anda pilih saat membuat aplikasi. Kode ini tidak sesuai dengan negara atau provinsi, meskipun beberapa ID region mungkin tampak mirip dengan kode negara dan provinsi yang umum digunakan. Untuk aplikasi yang dibuat setelah Februari 2020, REGION_ID.r
disertakan dalam URL App Engine. Untuk aplikasi lama yang dibuat sebelum tanggal tersebut, ID region bersifat opsional dalam URL.
Pelajari ID region lebih lanjut.
Panduan ini menjelaskan cara memigrasikan aplikasi App Engine yang ada, yang terhubung ke instance Cloud SQL dengan IP publik.
Secara umum, langkah-langkah dalam panduan ini menunjukkan cara men-deploy kode sumber aplikasi yang sama di Cloud Run, lalu mengonfigurasinya agar menggunakan pengguna database Cloud SQL yang sama untuk menghubungkan instance dan database yang ada.
Langkah-langkah dalam panduan ini tidak mencakup cara menggunakan koneksi IP pribadi internal karena Anda harus memodifikasi kode aplikasi terlebih dahulu. Namun, setelah men-deploy aplikasi ke Cloud Run, Anda dapat menggunakan langkah-langkah di bagian Menghubungkan ke Cloud SQL dari Cloud Run untuk mempelajari persyaratan dan cara menggunakan IP Pribadi.
Untuk memahami lebih lanjut persamaan dan perbedaan antara App Engine dan Cloud Run, termasuk manfaat bermigrasi ke Cloud Run, lihat ringkasan perbandingan.
Sebelum memulai
Pastikan Cloud Run memenuhi persyaratan aplikasi Anda. Tinjau perbandingan App Engine dan Cloud Run untuk mengetahui apakah resource Cloud Run seperti CPU dan memori memenuhi kebutuhan Anda.
Anda memerlukan akses ke instance Cloud SQL, termasuk nama pengguna dan sandi database untuk menghubungkan aplikasi. Cloud Run menggunakan enkripsi dan terhubung melalui proxy Auth Cloud SQL menggunakan salah satu soket Unix atau konektor Cloud SQL.
Aktifkan Cloud Run Admin API dan Artifact Registry API.
Tinjau perbedaan Cloud Run berikut:
Cloud Run menggunakan istilah
Revision
, bukanVersion
untuk mewakili setiap kali Anda men-deploy perubahan ke layanan tertentu. Men-deploy aplikasi Anda ke layanan di Cloud Run untuk pertama kalinya akan menciptakan revisi pertamanya. Setiap deployment layanan berikutnya akan membuat revisi lainnya. Pelajari selengkapnya tentang cara men-deploy ke Cloud Run.Anda dapat men-deploy kode sumber ke Cloud Run menggunakan Google Cloud CLI atau konsol Google Cloud untuk mengonfigurasi dan mengelola setelan aplikasi Anda. Cloud Run tidak memerlukan konfigurasi berbasis file, tetapi konfigurasi YAML didukung dan Anda dapat menggunakan alat
app2run
untuk menerjemahkan file App Engine yang ada untuk Cloud Run.Setiap layanan yang Anda deploy ke Cloud Run menggunakan domain run.app di URL untuk mengakses layanan secara publik.
Tidak seperti layanan App Engine yang bersifat publik secara default, layanan Cloud Run bersifat pribadi secara default dan mengharuskan Anda mengonfigurasinya untuk akses publik (tidak diautentikasi).
Cloud Run tidak mendukung layanan paket lama App Engine.
Panduan ini mengasumsikan bahwa aplikasi App Engine Anda berjalan tanpa error.
Peran yang diperlukan
Anda dapat memilih untuk membuat akun layanan baru atau terus menggunakan akun layanan yang sama yang dikelola pengguna di Cloud Run yang Anda gunakan untuk App Engine. Anda atau administrator Anda harus memberikan peran IAM berikut kepada akun deployer dan akun layanan Cloud Build.
Klik untuk melihat peran yang diperlukan untuk akun deployer
Untuk mendapatkan izin yang Anda perlukan untuk membangun dan men-deploy dari sumber, minta administrator untuk memberi Anda peran IAM berikut:
- Cloud Run Source Developer (
roles/run.sourceDeveloper
) di project Anda - Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer
) di project Anda - Pengguna Akun Layanan (
roles/iam.serviceAccountUser
) pada identitas layanan Cloud Run
Klik untuk melihat peran yang diperlukan untuk akun layanan Cloud Build
Cloud Build secara otomatis menggunakan
akun layanan default Compute Engine sebagai akun layanan Cloud Build default untuk membangun kode sumber dan
resource Cloud Run, kecuali jika Anda mengganti perilaku ini. Agar Cloud Build dapat membangun sumber Anda, minta administrator Anda untuk memberikan peran Cloud Run Builder (roles/run.builder
) ke akun layanan default Compute Engine di project Anda:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/run.builder
Ganti PROJECT_NUMBER
dengan Google Cloud
nomor project Anda, dan PROJECT_ID
dengan Google Cloud
project ID Anda. Untuk mengetahui petunjuk mendetail tentang cara menemukan project ID dan nomor project, lihat Membuat dan mengelola project.
Pemberian peran builder Cloud Run ke akun layanan default Compute Engine memerlukan waktu beberapa menit untuk berlaku.
Untuk mengetahui daftar peran dan izin IAM yang terkait dengan Cloud Run, lihat Peran IAM Cloud Run dan Izin IAM Cloud Run. Jika layanan Cloud Run Anda berinteraksi dengan Google Cloud API, seperti Library Klien Cloud, lihat panduan konfigurasi identitas layanan. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat izin deployment dan mengelola akses.
Untuk koneksi IP publik ke Cloud SQL, Anda harus memiliki salah satu peran berikut:
- Klien Cloud SQL (banyak dipilih)
- Admin Cloud SQL
- Izin Cloud SQL yang setara
Memigrasikan aplikasi ke Cloud Run
Anda tidak perlu membuat perubahan kode apa pun untuk men-deploy aplikasi App Engine ke Cloud Run.
Pada langkah-langkah berikut, Anda akan men-deploy aplikasi ke layanan baru di Cloud Run dan secara bersamaan mengonfigurasi layanan tersebut agar terhubung ke Cloud SQL.
Seperti lingkungan fleksibel App Engine, Cloud Run mendukung deployment berbasis container dan sumber. Anda memerlukan akses ke image container atau repositori kode sumber, bergantung pada metode deployment yang Anda ikuti.
Men-deploy image container
Jika layanan App Engine Anda di-deploy menggunakan container yang dibuat secara manual, Anda dapat menggunakan image container yang sama untuk men-deploy layanan ke Cloud Run. Untuk men-deploy image container App Engine Anda ke Cloud Run:
Catat URL registry tempat image container Anda berada. URL ini sama dengan URL yang Anda berikan di flag
--image-url
saat men-deploy di App Engine.Deploy image container Anda:
console
Di konsol Google Cloud , buka halaman Cloud Run.
Klik Buat layanan..
Klik tombol Pilih di kolom URL image container dan pilih image container yang Anda deploy untuk App Engine.
Masukkan nama untuk layanan Anda. Pilih nama unik yang mewakili aplikasi yang sedang Anda deploy.
Di bagian Autentikasi, pilih Izinkan pemanggilan tanpa autentikasi.
Anda harus membuat variabel lingkungan yang sama untuk Cloud Run yang telah ditentukan di file
app.yaml
aplikasi App Engine Anda. Perluas bagian Container, Networking, Keamanan dan buat variabel lingkungan berikut dengan mengklik Tambahkan Variabel di bagian Variabel lingkungan:Untuk soket Unix, tambahkan:
INSTANCE_UNIX_SOCKET: /cloudsql/INSTANCE_CONNECTION_NAME
Untuk konektor Cloud SQL, tambahkan:
INSTANCE_CONNECTION_NAME:INSTANCE_CONNECTION_NAME
Ganti INSTANCE_CONNECTION_NAME dengan project ID, region, dan instance Anda mengikuti format
project:region:instance-id
. Anda dapat menemukannya di halaman Ringkasan untuk instance Anda di konsolGoogle Cloud .Koneksi ini otomatis dienkripsi tanpa konfigurasi tambahan.
DB_NAME
: Nama database Anda.DB_USER
: Nama pengguna dari pengguna database Anda.DB_PASS
: Sandi yang Anda buat saat membuat database.
Dari bagian koneksi Cloud SQL, klik tombol Tambahkan Koneksi dan pilih instance yang sebelumnya Anda buat untuk App Engine.
Klik Deploy. Setelah layanan Cloud Run di-deploy, halaman Detail layanan akan menampilkan URL di bagian atas halaman. Klik link URL untuk melihat aplikasi yang di-deploy di Cloud Run yang terhubung ke Cloud SQL.
gcloud
Jalankan perintah berikut untuk membuat layanan baru di Cloud Run. Anda harus menetapkan flag konfigurasi untuk menyertakan variabel lingkungan koneksi SQL yang sama seperti yang ditentukan dalam file
app.yaml
aplikasi App Engine Anda:gcloud run deploy run-sql --image IMAGE \ --allow-unauthenticated \ --add-cloudsql-instances INSTANCE_CONNECTION_NAME\ --set-env-vars INSTANCE_UNIX_SOCKET="/cloudsql/INSTANCE_CONNECTION_NAME" \ --set-env-vars INSTANCE_CONNECTION_NAME="INSTANCE_CONNECTION_NAME" \ --set-env-vars DB_NAME="DB_NAME" \ --set-env-vars DB_USER="DB_USER" \ --set-env-vars DB_PASS="DB_PASS"
Ganti:
- IMAGE dengan image yang Anda deploy
INSTANCE_CONNECTION_NAME dengan nama koneksi instance instance Cloud SQL, atau daftar nama koneksi yang dipisahkan koma. Anda dapat menemukan
INSTANCE_CONNECTION_NAME
dengan menjalankan:gcloud instances describe INSTANCE_NAME
DB_NAME dengan nama database Anda.
DB_USER dengan nama pengguna database Anda.
DB_PASS dengan sandi pengguna database Anda.
Men-deploy kode sumber
Cloud Run secara internal menggunakan buildpack dan Cloud Build untuk mem-build image container secara otomatis dari kode sumber Anda dan tidak mengharuskan Anda untuk mem-build container secara manual atau menentukan Dockerfile. Namun, jika ada Dockerfile, Dockerfile tersebut akan digunakan. Men-deploy layanan Cloud Run dari sumber menggunakan Artifact Registry, sehingga fitur ini hanya tersedia di region yang didukung oleh Artifact Registry.
Untuk men-deploy kode sumber yang sama dengan yang Anda deploy sebelumnya ke App Engine:
Ubah ke direktori sumber tempat kode sumber aplikasi Anda berada.
cd YOUR_APPENGINE_CODE_DIR
Deploy ke Cloud Run.
Untuk mem-build kode sumber dan men-deploy aplikasi, jalankan perintah deploy dengan flag
--source
. Anda harus menetapkan flag konfigurasi untuk menyertakan variabel lingkungan koneksi SQL yang sama dengan yang ditentukan dalam fileapp.yaml
aplikasi App Engine Anda:gcloud run deploy run-sql --source . \ --allow-unauthenticated \ --add-cloudsql-instances INSTANCE_CONNECTION_NAME\ --set-env-vars INSTANCE_UNIX_SOCKET="/cloudsql/INSTANCE_CONNECTION_NAME" \ --set-env-vars INSTANCE_CONNECTION_NAME="INSTANCE_CONNECTION_NAME" \ --set-env-vars DB_NAME="DB_NAME" \ --set-env-vars DB_USER="DB_USER" \ --set-env-vars DB_PASS="DB_PASS"
Ganti INSTANCE_CONNECTION_NAME dengan nama koneksi instance dari instance Cloud SQL Anda, atau daftar nama koneksi yang dipisahkan koma. Anda dapat menemukan
INSTANCE_CONNECTION_NAME
dengan menjalankan:gcloud instances describe INSTANCE_NAME
- DB_NAME dengan nama database Anda.
- DB_USER dengan nama pengguna database Anda.
- DB_PASS dengan sandi pengguna database Anda.
Masukkan nama LAYANAN saat diminta.
Respons setiap permintaan untuk menginstal API yang diperlukan dengan merespons
y
saat diminta. Anda hanya perlu melakukan ini sekali untuk sebuah project. Tunggu hingga build dan deploy selesai. Setelah selesai, pesan yang mirip dengan pesan ini akan ditampilkan:Service [my-app] revision [my-app-00000-xxx] has been deployed and is serving 100 percent of traffic. Service URL: https://sample.run.app
Untuk mempelajari selengkapnya tentang cara men-deploy kode sumber ke Cloud Run, lihat Men-deploy dari kode sumber.
Langkah berikutnya
- Tinjau Praktik terbaik Cloud SQL untuk menghubungkan instance Cloud SQL dari Cloud Run.
- Pelajari cara menyimpan dependensi untuk layanan Anda yang memerlukan kunci API, sandi, atau informasi sensitif lainnya menggunakan secret manager.
- Pahami cara mengelola layanan Cloud Run.
- Lihat kontrak runtime container Cloud Run untuk memahami persyaratan dan perilaku container di Cloud Run.