Halaman ini menunjukkan cara menggunakan NGINX sebagai suatu proxy frontend untuk container aplikasi Anda. Hal ini berguna apabila Anda ingin memproses sejumlah permintaan ataupun respons. Anda dapat menambahkan kompresi gzip, atau menerjemahkan HTTP/2 menjadi HTTP/1 jika container aplikasi hanya mendukung HTTP/1 dan Anda perlu menggunakan HTTP/2 end-to-end untuk alasan performa.
Dalam contoh yang diberikan di halaman ini, container Nginx berjalan pada setiap instance Cloud Run sebagai container penayangan utama, dan ia dikonfigurasi untuk meneruskan permintaan ke container aplikasi, yang berjalan sebagai container file bantuan, sebagaimana yang ditampilkan dalam diagram berikut:
Cara paling efektif untuk melakukan proxy frontend di Cloud Run adalah dengan men-deploy container server proxy server Nginx dan container aplikasi web sebagai layanan Cloud Run tunggal:
Layanan Cloud Run tunggal ini menerima permintaan dan mengirimkannya ke container ingress (penayangan), yang
dalam hal ini adalah server proxy. Selanjutnya, server proxy mengirimkan permintaan ke aplikasi web melalui localhost
antarmuka jaringan
, yang menghindari jaringan eksternal apa pun.
Deploying sebagai layanan Cloud Run tunggal akan mengurangi latensi, beban pengelolaan layanan, dan menghilangkan paparan pada jaringan eksternal. Cloud Run tidak berinteraksi secara langsung dengan container file bantuan, selain untuk memulai atau menghentikannya kapanpun layanan dimulai atau dihentikan.
Container aplikasi web serta container sidecar dapat ditulis dalam beberapa bahasa pemrograman yang berbeda-beda. Untuk contoh yang ditulis dalam PHP, lihat contoh nginx PHP di GitHub.
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API Cloud Run and Secret Manager .
- Instal dan lakukan inisialisasi gcloud CLI.
- Perbarui Google Cloud CLI:
gcloud components update
- Konfigurasi Google Cloud CLI:
gcloud init
- Autentikasi dengan Google Cloud CLI:
gcloud auth login
Izin yang dibutuhkan untuk men-deploy
Anda harus memiliki salah SATU dari hal berikut:
- Pemilik
- Editor
- Baik itu peran Admin Cloud Run dan Pengguna Akun Layanan
- Peran khusus apa pun yang menyertakan daftar izin spesifik ini
Ringkasan konfigurasi
Petunjuk-petunjuk tersebut menggunakan image container bawaan, sehingga satu-satunya hal yang dibutuhkan untuk proxy frontend adalah mengonfigurasi container dan layanan itu sendiri.
Konfigurasikan container ingress Nginx
Adapun image container nginx
tersedia di Docker Hub.
Sebagian besar telah siap untuk digunakan sebagaimana adanya, terkecuali ini perlu dikonfigurasi untuk dijalankan sebagai suatu
layanan proxy, mengirimkan permintaan proxy ke port dimana container file bantuan sedang
diproses di localhost
. Contoh yang ada pada halaman ini juga dapat mengaktifkan kompresi gzip untuk
permintaan dan respons.
Konfigurasi disediakan menggunakan file teks yang dipasang
di /etc/nginx/conf.d/nginx.conf
. Dikarenakan Anda tidak dapat mengedit file tersebut secara langsung dalam
container, sehingga Anda harus memasang volume di /etc/nginx/conf.d/
yang berisikan
file konfigurasi. Salah satu cara untuk memasang file di lokasi tertentu dalam container yang berjalan di Cloud Run adalah dengan menyimpan konten file dalam rahasia Secret Manager serta memasang rahasia tersebut di lokasi
yang diinginkan. volume, yang dimuat saat runtime.
Salin kode berikut dalam sebuah file yang bernama nginx.conf
di direktori saat ini pada mesin lokal Anda.
Dalam konfigurasi, lakukan hal berikut:
- Tetapkan
nginx
untuk memproses pada port default Cloud Run8080
yang sama, yang terletak dilocalhost
- Terapkan kompresi gzip untuk peningkatan performa
- Instruksikan melalui
proxy_pass
untuk mengirimkan permintaan apa pun ke container ingress ini ke container file bantuan aplikasi web pada port localhost8888
.
Buat rahasia dengan konten file nginx.conf
.
Konsol
Buka halaman Secret Manager di Konsol Google Cloud:
Klik Create secret
Di kolom formulir
name
, masukkan nginx_config.Upload file
nginx.conf
yang terletak dimulti-container/hello-nginx-sample/nginx.conf
sebagai nilai secret.Pertahankan nilai default (
Google-managed encryption key, etc
).Klik Create secret.
Beri akun layanan komputasi project akses ke secret baru ini. Untuk melakukannya, buka halaman IAM di Konsol Google Cloud:
Cari akun layanan utama dengan nama:
Compute Engine default service account
, lalu klik Edit akun utama.Klik Add another role lalu pilih Secret Manager Secret Accessor.
Klik Save.
Command line
Di terminal, gunakan perintah berikut untuk membuat secret
nginx_config
baru di Secret Manager:gcloud secrets create nginx_config --replication-policy='automatic' --data-file='./nginx.conf'
Memberi akun layanan komputasi project akses ke secret baru ini menggunakan perintah
export PROJECT_NUMBER=$(gcloud projects describe $(gcloud config get-value project) --format='value(projectNumber)') gcloud secrets add-iam-policy-binding nginx_config --member=serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com --role='roles/secretmanager.secretAccessor'
Verifikasi bahwa rahasia Anda dibuat dengan menjalankan
gcloud secrets list
.
Tentang gambar contoh file bantuan aplikasi web
Petunjuk ini akan menggunakan contoh image container di
us-docker.pkg.dev/cloudrun/container/hello
. Anda perlu
menentukan nomor port yang akan diproses penampung dan localhost
sebagai host, seperti yang dijelaskan di bagian Menentukan konfigurasi penampung file bantuan, seperti yang dijelaskan di bagian berikut.
Konfigurasikan layanan multicontainer
Anda dapat menggunakan konsol Google Cloud atau file YAML Cloud Run untuk mengonfigurasi layanan Cloud Run dengan lebih dari satu container.
Dalam konfigurasi layanan, tentukan server proxy Nginx sebagai container ingress (penyaluran), port yang akan diproses, apakah server tersebut menerima permintaan HTTP 1 atau HTTP 2, dan urutan awal container. Penampung masuk (server proxy) bergantung pada file bantuan aplikasi web, sehingga file bantuan aplikasi web harus dimulai terlebih dahulu.
Konfigurasi ini akan ditampilkan di beberapa bagian berikutnya.
Menambahkan metadata YAML
Konsol
Buka Men-deploy layanan untuk mendapatkan petunjuk konsol lengkap.
YAML
Anda dapat mendownload dan melihat konfigurasi layanan yang ada menggunakan
perintah gcloud run services describe --format export
, yang memberikan hasil
yang telah diolah dalam format YAML.
Kemudian, Anda dapat mengubah kolom yang dijelaskan di bawah ini dan
mengunggah YAML yang telah dimodifikasi menggunakan perintah gcloud run services replace
.
Pastikan Anda hanya mengubah kolom seperti yang didokumentasikan.
Untuk melihat dan mengunduh konfigurasi:
gcloud run services describe SERVICE --format export > service.yaml
Di
service.yaml
, tambahkan kode berikut:
Bagian ini menjelaskan revisi layanan, yang mencakup properti yang dapat bervariasi dari revisi ke revisi.
Menentukan urutan pengaktifan penampung
Konsol
Buka Men-deploy layanan untuk mendapatkan petunjuk konsol lengkap.
YAML
Di service.yaml
, tambahkan kode berikut:
Perhatikan container-dependencies
anotasi yang memberi tahu Cloud Run untuk menunggu container hello dimulai
sebelum memulai container nginx. Sebaliknya, jika container nginx dimulai terlebih dahulu, dapat mencoba untuk mem-proxy permintaan web ke container aplikasi web yang belum siap, yang akan menghasilkan respons kesalahan web.
Setiap container secara opsional memiliki properti nama yang ditentukan untuknya, yang dapat digunakan untuk merujuknya di pedoman lainnya.
Container penayangan menjalankan server proxy, yang dinamakan nginx
. Ini adalah container yang menjadi tujuan pengiriman permintaan masuk oleh Cloud Run
, sehingga Anda harus menentukan versi HTTP
dan port container yang menjadi tujuan pengirimannya.
Tentukan konfigurasi penampung penayangan
Konsol
Buka Men-deploy layanan untuk mendapatkan petunjuk konsol lengkap.
YAML
Di file service.yaml
, tambahkan kode berikut:
Server nginx
memerlukan file konfigurasi di direktori /etc/nginx/conf.d/
. Untuk melakukannya, pasang volume yang berisi file di lokasi tersebut. Bagian volumeMount
menentukan volume yang disebut configuration
untuk ditempatkan di sana. Volume itu sendiri nantinya ditentukan di bagiannya sendiri dalam file tersebut.
Tentukan konfigurasi container file bantuan
Konsol
Buka Men-deploy layanan untuk mendapatkan petunjuk konsol lengkap.
YAML
Di service.yaml
, tambahkan kode berikut:
Aplikasi hello
juga memerlukan adanya informasi konfigurasi. Fungsi ini memproses permintaan masuk pada port yang ditentukan dalam variabel lingkungan PORT
. Nama dan nilai tersebut ditentukan dalam bagian env
.
Menentukan volume secret
Konsol
Buka Men-deploy layanan untuk mendapatkan petunjuk konsol lengkap.
YAML
Di file service.yaml
, tambahkan kode berikut:
Tentukan konfigurasi volume
yang dipasang di bagian volumeMount
. Hal ini berisikan satu file bernama nginx.conf
yang mana isinya ditentukan
sebagai nilai rahasia bernama nginx-conf-secret
.
Men-deploy layanan
Konsol
Buka halaman Cloud Run di Konsol Google Cloud:
Klik Create service.
- Pilih Deploy one revision from an existing container image lalu masukkan
nginx
sebagai Container image URL. - Di kolom Service name, berikan nama untuk layanan Anda, misalnya
hello-mc
. - Dari daftar Region, pilih lokasi untuk men-deploy, misalnya,
us-west1
. - Di bagian Authentication, pilih
Allow unauthenticated invocations
.
- Pilih Deploy one revision from an existing container image lalu masukkan
Klik Container(s), volume, networking, security untuk meluaskan formulir konfigurasi.
- Klik tab Volume.
- Klik Tambahkan volume.
- Dari daftar Volume type, pilih Secret.
- Di kolom Nama volume, masukkan
nginx-conf-secret
. - Di kolom Secret, masukkan nginx_config.
- Di bagian Specified path for secret options, tentukan default.conf sebagai jalur dan latest sebagai versi.
- Klik Create untuk membuat volume secret.
Klik tab Penampung untuk menampilkan formulir Edit penampung.
- Klik Settings, lalu di bagian Resources, ubah memori ke 256MiB dan CPU ke 1 CPU.
- Klik Pemasangan volume.
- Klik Pasang volume.
- Pilih nginx-conf-secret dari daftar nama.
- Untuk Mount path, masukkan etc/nginx/conf.d.
- Klik Done untuk menyelesaikan konfigurasi pada penampung pertama.
Klik Tambahkan penampung untuk menambahkan penampung file bantuan dan menampilkan formulir Penampung baru.
- Pilih URL image container default us-docker.pkg.dev/cloudrun/container/hello
- Klik tab Settings, lalu di bagian Resources, ubah memori ke 256MiB dan CPU ke 1 CPU.
- Klik Variabel & Rahasia.
- Klik Tambahkan variabel.
- Masukkan PORT sebagai nama variabel lingkungan baru dan 8888 sebagai nilainya.
- Klik Done.
Buka formulir Edit penampung untuk penampung pertama (
nginx
).- Klik tab Setelan.
- Pada bagian Container start up order, pilih
nginx
dari daftar Depends on. Ini berarti penampungnginx
hanya dimulai setelah penampunghello
berhasil dimulai. - Klik Create dan tunggu hingga layanan Anda di-deploy.
Command line
Untuk men-deploy container server proxy dan container aplikasi web sebagai suatu layanan tunggal:
gcloud run services replace service.yaml
Verifikasi layanan yang di-deploy
Command line
Untuk memastikan deployment berhasil, salin URL Cloud Run yang dihasilkan dan buka di browser, atau gunakan perintah ini untuk mengirim permintaan terautentikasi:
curl --header "Authorization: Bearer $(gcloud auth print-identity-token)"
Anda akan disambut dengan proxy nginx yang
telah berhasil di-porting ke container file bantuan hello dengan
status respons 200
.
Coba ini sendiri
Untuk mengikuti tutorial ini:
Command line
Di terminal, clone repositori aplikasi contoh ke mesin lokal Anda:
git clone https://github.com/GoogleCloudPlatform/cloud-run-samples
Ubah ke direktori yang berisikan kode contoh Cloud Run:
cd cloud-run-samples/multi-container/hello-nginx-sample/
Langkah selanjutnya
Untuk mempelajari lebih lanjut tentang cara menggunakan file bantuan di layanan Cloud Run:
- File bantuan Cloud Run akan mengaktifkan sejumlah pola multi-container lanjutan
- Men-deploy ke Cloud Run