Mengonfigurasi variabel lingkungan untuk layanan

Halaman ini menjelaskan cara mengonfigurasi variabel lingkungan untuk layanan Cloud Run Anda.

Anda dapat menggunakan variabel lingkungan untuk konfigurasi layanan, tetapi kami tidak menyarankan variabel tersebut sebagai cara untuk menyimpan rahasia seperti kredensial database atau kunci API. Nilai sensitif harus disimpan di luar kode sumber dan di luar variabel lingkungan. Untuk menyimpan secret, sebaiknya Anda menggunakan Secret Manager. Untuk mengonfigurasi layanan agar dapat mengakses secret yang disimpan di Secret Manager, lihat Mengonfigurasi secret.

Setiap perubahan konfigurasi akan menghasilkan revisi baru. Revisi selanjutnya juga akan otomatis mendapatkan setelan konfigurasi ini, kecuali jika Anda melakukan pembaruan eksplisit untuk mengubahnya.

Peran yang diperlukan

Untuk mendapatkan izin yang Anda perlukan untuk mengonfigurasi dan men-deploy layanan Cloud Run, minta administrator untuk memberi Anda peran IAM berikut:

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.

Batas dan jumlah maksimum variabel lingkungan

Anda dapat menetapkan maksimum 1.000 variabel lingkungan untuk layanan Cloud Run.

Panjang variabel maksimum adalah 32 Kb.

Menetapkan variabel lingkungan

Anda dapat menetapkan variabel lingkungan untuk layanan baru dan yang sudah ada. Perhatikan bahwa tanda --set-env-vars adalah tindakan destruktif yang menghapus variabel lingkungan yang ditetapkan sebelumnya dan tidak disertakan dalam daftar variabel lingkungan baru.

Variabel lingkungan terikat pada revisi layanan tertentu dan tidak dapat dilihat oleh layanan lain dalam project Google Cloud Anda.

Anda dapat menetapkan variabel lingkungan menggunakan konsol Google Cloud , gcloud CLI, atau file YAML saat membuat layanan baru atau men-deploy revisi baru:

Konsol

  1. Di konsol Google Cloud , buka Cloud Run:

    Buka Cloud Run

  2. Pilih Services dari menu, lalu klik Deploy container untuk mengonfigurasi layanan baru. Jika Anda mengonfigurasi layanan yang sudah ada, klik layanan, lalu klik Edit dan deploy revisi baru.

  3. Jika Anda mengonfigurasi layanan baru, isi halaman setelan layanan awal, lalu klik Container, Volume, Networking, Security untuk memperluas halaman konfigurasi layanan.

  4. Klik tab Container.

    gambar

    • Klik Add Variable untuk menambahkan variabel baru, dan tentukan nama yang Anda inginkan untuk variabel tersebut, serta nilainya di kolom Name dan Value.
  5. Klik Buat atau Deploy.

gcloud

Untuk menentukan variabel lingkungan saat men-deploy layanan, gunakan flag --set-env-vars:

gcloud run deploy SERVICE --image IMAGE_URL --set-env-vars KEY1=VALUE1,KEY2=VALUE2

Ganti:

  • SERVICE dengan nama layanan Anda.
  • KEY1=VALUE1,KEY2=VALUE2, dengan daftar nama dan nilai variabel yang dipisahkan koma.
  • IMAGE_URL dengan referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL memiliki bentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .

Untuk menentukan variabel lingkungan saat memperbarui layanan, gunakan flag --set-env-vars:

gcloud run services update SERVICE --image IMAGE_URL --set-env-vars KEY1=VALUE1,KEY2=VALUE2

Menetapkan banyak variabel lingkungan

Jika memiliki banyak variabel lingkungan yang tidak dapat dicantumkan dalam format KEY1=VALUE1,KEY2=VALUE2, Anda dapat mengulangi flag --set-env-vars beberapa kali:
   [...]
   --set-env-vars "KEY1=VALUE1" \
   --set-env-vars "KEY2=VALUE2" \
   --set-env-vars "KEY3=VALUE3"

Escape karakter koma

Karena karakter koma , digunakan untuk memisahkan antar variabel lingkungan, jika variabel lingkungan Anda mengandung karakter koma sebagai nilai, Anda perlu meng-escape karakter pemisah tersebut dengan menentukan karakter pemisah yang berbeda, misalnya, @:
--set-env-vars "^@^KEY1=value1,value2,value3@KEY2=..."

YAML

  1. Jika Anda membuat layanan baru, lewati langkah ini. Jika Anda mengupdate layanan yang sudah ada, download konfigurasi YAML-nya:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Update atribut name dan value di bawah atribut env yang terletak di bawah atribut containers::

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          name: REVISION
        spec:
          containers:
          - image: IMAGE
            env:
            - name: KEY-1
              value: VALUE-1
            - name: KEY-N
              value: VALUE-N

    Ganti

    • SERVICE dengan nama layanan Cloud Run Anda
    • IMAGE_URL dengan referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, repositori REPO_NAME harus sudah dibuat. URL memiliki bentuk LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • KEY-1, VALUE-1 dengan variabel lingkungan dan nilainya. Secara opsional, tambahkan variabel dan nilai lainnya sesuai kebutuhan.
    • REVISION dengan nama revisi baru atau hapus (jika ada). Jika Anda memberikan nama revisi baru, nama tersebut harus memenuhi kriteria berikut:
      • Dimulai denganSERVICE-
      • Hanya berisi huruf kecil, angka, dan -
      • Tidak diakhiri dengan -
      • Tidak melebihi 63 karakter
  3. Buat atau perbarui layanan menggunakan perintah berikut:

    gcloud run services replace service.yaml

Terraform

Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.

Tambahkan kode berikut ke resource google_cloud_run_v2_service di konfigurasi Terraform Anda:

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-env-var"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"

      # Environment variables
      env {
        name  = "foo"
        value = "bar"
      }
      env {
        name  = "baz"
        value = "quux"
      }
    }
  }
}

Resource google_cloud_run_v2_service sebelumnya menentukan variabel lingkungan foo ke bar, dan variabel lingkungan baz ke quux. Perbarui variabel lingkungan sesuai kebutuhan.

Menetapkan variabel lingkungan default dalam container

Anda dapat menggunakan statement ENV dalam Dockerfile untuk menetapkan nilai default dari variabel lingkungan:

ENV KEY1=VALUE1,KEY2=VALUE2

Urutan prioritas: variabel container versus layanan

Jika Anda menetapkan variabel lingkungan default di dalam penampung dan juga menetapkan variabel lingkungan dengan nama yang sama pada layanan Cloud Run, nilai yang ditetapkan pada layanan akan diutamakan.

Memperbarui variabel lingkungan

Anda dapat memperbarui variabel lingkungan untuk layanan yang ada. Ini adalah pendekatan non-destruktif yang mengubah atau menambahkan variabel lingkungan, tetapi tidak menghapus variabel lingkungan yang ditetapkan sebelumnya.

Konsol

Untuk memperbarui variabel lingkungan menggunakan Google Cloud konsol:

  1. Di konsol Google Cloud , buka Cloud Run:

    Buka Cloud Run

  2. Pilih layanan Anda dari daftar, lalu klik Edit dan deploy revisi baru.

  3. Klik tab Container.

  4. Di tab Variables and secrets, edit kolom Name atau Value, lalu klik Done.

  5. Klik Deploy.

gcloud

Untuk memperbarui variabel lingkungan layanan yang sudah ada, gunakan flag --update-env-vars:

gcloud run services update SERVICE --update-env-vars KEY1=VALUE1,KEY2=VALUE2

Ganti:

  • SERVICE dengan nama layanan Anda.
  • KEY1=VALUE1,KEY2=VALUE2, dengan daftar nama dan nilai variabel yang dipisahkan koma.

Untuk memperbarui variabel lingkungan layanan multi-region yang ada, gunakan perintah gcloud beta run multi-region-services update.

Lihat setelan variabel lingkungan

Untuk melihat setelan variabel lingkungan saat ini pada tugas Cloud Run Anda:

Konsol

  1. Di konsol Google Cloud , buka Cloud Run:

    Buka Cloud Run

  2. Klik layanan yang Anda minati untuk membuka halaman Detail layanan.

  3. Klik tab Revisi.

  4. Pada panel detail di sebelah kanan, setelan variabel lingkungan tercantum di bagian tab Container.

gcloud

  1. Gunakan perintah berikut:

    gcloud run services describe SERVICE
  2. Temukan setelan variabel lingkungan di konfigurasi yang ditampilkan.

Menghapus variabel lingkungan

Anda dapat menghapus variabel lingkungan untuk layanan yang ada.

Konsol

Untuk menghapus variabel lingkungan menggunakan Google Cloud konsol:

  1. Di konsol Google Cloud , buka Cloud Run:

    Buka Cloud Run

  2. Pilih layanan Anda dari daftar, lalu klik Edit dan deploy revisi baru.

  3. Klik tab Container.

  4. Di tab Variables and secrets, gerakkan kursor ke sebelah kiri kolom Value dari variabel lingkungan yang Anda hapus, untuk menampilkan ikon Delete , lalu klik ikon tersebut.

  5. Klik Selesai.

  6. Klik Deploy.

gcloud

Untuk menghapus variabel lingkungan layanan yang ada secara selektif,gunakan flag --remove-env-vars:

gcloud run services update SERVICE --remove-env-vars KEY1,KEY2

Ganti:

  • SERVICE dengan nama layanan Anda.
  • KEY1,KEY2, dengan daftar nama variabel yang dipisahkan koma.

Atau, hapus semua variabel lingkungan yang ditetapkan sebelumnya dengan flag --clear-env-vars:

gcloud run services update SERVICE --clear-env-vars

Ganti:

  • SERVICE dengan nama layanan Anda.

Praktik terbaik

Bagian berikut menyoroti beberapa praktik terbaik untuk mengonfigurasi variabel lingkungan.

Variabel lingkungan yang dicadangkan untuk layanan

Variabel lingkungan yang didefinisikan di dalam container runtime contract terkategorikan sebagai "dilindungi" dan tidak boleh diubah. Secara khusus, Cloud Run akan memasukkan variabel lingkungan PORT ke dalam container Anda. Anda sebaiknya tidak menetapkannya sendiri.

Variabel lingkungan tambahan yang dicadangkan saat men-deploy fungsi

Cloud Run menetapkan variabel lingkungan runtime berikut secara otomatis saat men-deploy fungsi:

  • FUNCTION_TARGET: Fungsi yang akan dieksekusi.
  • FUNCTION_SIGNATURE_TYPE: Jenis fungsi: http untuk fungsi HTTP, dan event untuk fungsi berbasis peristiwa.

Beberapa variabel lingkungan tambahan ditetapkan secara otomatis bergantung pada runtime yang digunakan fungsi Anda. Hal ini didasarkan pada sistem operasi runtime, misalnya, DEBIAN_FRONTEND, SHLVL, atau PATH dan runtime bahasa misalnya, NODE_ENV, VIRTUAL_ENV, atau GOPATH.

Variabel lingkungan yang disediakan oleh lingkungan, selain yang ditetapkan secara otomatis, dapat berubah pada versi runtime mendatang. Sebagai praktik terbaik, sebaiknya Anda tidak bergantung pada atau mengubah variabel lingkungan yang belum ditetapkan secara eksplisit.

Mengubah variabel lingkungan yang disediakan oleh lingkungan dapat menyebabkan hasil yang tidak dapat diprediksi. Upaya untuk mengubah variabel lingkungan tersebut dapat diblokir atau, lebih buruk lagi, menyebabkan konsekuensi yang tidak diinginkan seperti fungsi yang tidak dapat dimulai. Sebagai praktik terbaik, pertimbangkan untuk memberi awalan pada variabel lingkungan apa pun dengan kunci unik untuk menghindari konflik.

Variabel lingkungan tidak valid

Anda tidak dapat menggunakan variabel lingkungan berikut:

Kunci Deskripsi
Kosong ('') Kunci tidak boleh berupa string kosong.
= Kunci tidak boleh berisi karakter '='.
X_GOOGLE_ Kunci tidak boleh berisi awalan X_GOOGLE_.

Kode contoh

Untuk mengetahui contoh kode yang menunjukkan cara mengakses variabel lingkungan dalam kode Anda, lihat halaman tentang Menangani konfigurasi sensitif dengan Secret Manager di tutorial autentikasi Pengguna akhir.

Langkah berikutnya

Anda dapat menggunakan variabel lingkungan untuk menetapkan konfigurasi buildpack. Untuk mengetahui detail dalam bahasa tertentu, lihat dokumentasi buildpack dalam bahasa:

Jika Anda men-deploy dari sumber dan perlu menyesuaikan variabel pada waktu build, lihat Menetapkan variabel lingkungan build.