Men-deploy image container

Halaman ini menjelaskan cara men-deploy layanan baru dan revisi baru ke penayangan Knative.

Sebelum memulai

Untuk menggunakan Google Cloud CLI, Anda harus menyiapkan dan mengonfigurasi alat command line terlebih dahulu.

Menghubungkan ke cluster GKE

Sebelum dapat men-deploy layanan ke penayangan Knative, Anda harus login untuk terhubung ke cluster GKE.

Untuk mengetahui informasi selengkapnya tentang cara menghubungkan ke cluster GKE Anda, termasuk opsi tambahan, lihat:

Izin yang diperlukan untuk men-deploy

Anda memerlukan izin untuk membuat, memperbarui, dan menghapus di apiGroup serving.knative.dev dan kind Service, dan selain itu Anda harus memiliki SALAH SATU peran Identity and Access Management berikut:

Image yang dapat Anda deploy

Tidak ada batasan ukuran yang berlaku untuk image container yang dapat Anda deploy.

Anda dapat menggunakan container dari registry container mana pun, seperti Docker Hub. Untuk mengetahui informasi tentang men-deploy image pribadi dari registry yang berbeda dengan Container Registry atau Artifact Registry, lihat Men-deploy image container pribadi dari registry container lain.

Men-deploy layanan baru

Anda dapat menentukan image penampung dengan tag (misalnya, gcr.io/my-project/my-image:latest) atau dengan ringkasan yang tepat (misalnya, gcr.io/my-project/my-image@sha256:41f34ab970ee...).

Revisi pertama akan dibuat saat Anda men-deploy ke layanan untuk pertama kalinya. Perlu diperhatikan bahwa revisi tidak dapat diubah. Jika Anda men-deploy dari tag image container, tag tersebut akan di-resolve menjadi ringkasan dan revisi akan selalu menyalurkan ringkasan khusus ini.

Anda dapat men-deploy container menggunakan konsol Google Cloud , Google Cloud CLI atau dari file konfigurasi YAML.

Klik tab untuk mendapatkan petunjuk cara menggunakan alat pilihan Anda.

Konfigurasi lokasi gcloud default

Jika sebelumnya Anda mengonfigurasi lokasi dalam konfigurasi default Google Cloud CLI, perintah gcloud Anda akan menggunakan nilai tersebut secara default, termasuk:

  • compute/region
  • compute/zone
  • run/cluster
  • run/cluster_location
  • run/platform
  • run/region

Jalankan perintah gcloud config berikut untuk melihat setelan konfigurasi default:

gcloud config configurations describe default

Konsol

Untuk men-deploy image container:

  1. Buka Knative serving di konsol Google Cloud :

    Buka Inferensi Knative

  2. Klik Buat layanan untuk menampilkan halaman Buat layanan.

    Di dalam formulir:

    1. Dari menu dropdown, pilih salah satu cluster GKE yang tersedia untuk layanan Anda.

    2. Masukkan nama layanan yang diinginkan. Nama layanan harus unik per region dan project atau per cluster. Nama layanan tidak dapat diubah nanti.

    3. Di bagian Konektivitas:

      • Pilih Internal jika Anda ingin membatasi akses hanya ke layanan penayangan Knative lainnya atau layanan di cluster Anda yang menggunakan Istio.
      • Pilih Eksternal untuk mengizinkan akses eksternal ke layanan Anda

      Perhatikan bahwa Anda dapat mengubah opsi konektivitas kapan saja, seperti yang dijelaskan dalam Mengubah setelan konektivitas layanan.

    4. Klik Berikutnya untuk melanjutkan ke halaman kedua formulir pembuatan layanan.

      Di dalam formulir:

      1. Di kotak teks Container image URL, berikan URL gambar dari registry yang didukung, misalnya: us-docker.pkg.dev/cloudrun/container/hello:latest

      2. Secara opsional, klik Tampilkan Setelan Lanjutan dan tab berikutnya untuk menetapkan:

      3. Klik Create untuk men-deploy image ke layanan Knative dan tunggu hingga deployment selesai.

    Anda baru saja men-deploy layanan ke cluster yang mendukung penayangan Knative.

Command line

Untuk men-deploy image container:

  1. Jalankan perintah gcloud run deploy:

    gcloud run deploy SERVICE --image IMAGE_URL

    • Ganti SERVICE dengan nama layanan yang ingin Anda deploy. Jika layanan yang ditentukan tidak ada, layanan baru akan dibuat.

    • Ganti IMAGE_URL dengan referensi ke image container, contohnya, gcr.io/cloudrun/hello.

    • Opsi deployment tambahan:

      • Untuk men-deploy ke namespace selain default, Anda harus menentukan namespace tersebut menggunakan parameter --namespace.

      • Untuk men-deploy ke lokasi selain konfigurasi default, Anda harus menentukan name dan location cluster dengan parameter --cluster dan --cluster-location:

        gcloud run deploy SERVICE --cluster CLUSTER-NAME --cluster-location CLUSTER-LOCATION
      • Anda dapat menetapkan opsi konektivitas dengan tanda --connectivity seperti yang dijelaskan dalam Mengubah setelan konektivitas layanan untuk menentukan akses internal atau eksternal.

      • Untuk penayangan Knative di VMware, Anda harus menyertakan parameter --kubeconfig dan menentukan file konfigurasi Anda:

        gcloud run deploy SERVICE --image IMAGE_URL --kubeconfig KUBECONFIG-FILE

  2. Tunggu hingga deployment selesai. Setelah berhasil diselesaikan, pesan berhasil akan ditampilkan beserta URL layanan yang di-deploy.

YAML

Anda dapat menyimpan spesifikasi layanan dalam file YAML, lalu men-deploy-nya menggunakan Google Cloud CLI.

  1. Buat file service.yaml baru dengan konten ini:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        spec:
          containers:
          - image: IMAGE

    Ganti

    • SERVICE dengan nama layanan Knative serving Anda
    • IMAGE dengan URL image container Anda.

    Anda juga dapat menentukan lebih banyak konfigurasi seperti variabel lingkungan atau batas memori.

  2. Deploy layanan baru menggunakan perintah berikut:

    gcloud run services replace service.yaml

Men-deploy revisi baru dari layanan yang ada

Anda dapat men-deploy revisi baru menggunakan konsol Google Cloud , command line gcloud, atau file konfigurasi YAML.

Perhatikan bahwa mengubah setelan konfigurasi akan menyebabkan pembuatan revisi baru, meskipun tidak ada perubahan pada image container. Setiap revisi yang dibuat tidak dapat diubah.

Klik tab untuk mendapatkan petunjuk cara menggunakan alat pilihan Anda.

Konsol

Untuk men-deploy revisi baru dari layanan yang sudah ada:

  1. Buka Knative serving di konsol Google Cloud :

    Buka Inferensi Knative

  2. Temukan layanan yang ingin Anda update dalam daftar layanan, lalu klik untuk membuka detail layanan tersebut.

  3. Klik EDIT & DEPLOY NEW REVISION. Tindakan ini akan menampilkan formulir deployment revisi:

  4. Jika diperlukan, berikan URL ke image container baru yang ingin Anda deploy.

  5. Secara opsional, tetapkan:

  6. Untuk mengirim semua traffic ke revisi baru, centang kotak berlabel Segera sajikan revisi ini. Untuk meluncurkan revisi baru secara bertahap, hapus centang pada kotak tersebut: tindakan ini akan menghasilkan deployment tanpa traffic yang dikirim ke revisi baru--ikuti petunjuk untuk peluncuran bertahap setelah Anda melakukan deployment.

  7. Klik DEPLOY dan tunggu hingga deployment selesai.

Command line

Untuk men-deploy image container:

  1. Jalankan perintah gcloud run services update:

    gcloud run services update SERVICE --image IMAGE_URL
    • Akhiran revisi ditetapkan secara otomatis untuk setiap revisi. Jika Anda ingin menentukan akhiran revisi Anda sendiri, tambahkan parameter --revision-suffix.

    • Ganti SERVICE dengan nama layanan yang ingin Anda deploy. Jika layanan yang ditentukan tidak ada, layanan baru akan dibuat.

    • Ganti IMAGE_URL dengan referensi ke image container, contohnya, gcr.io/cloudrun/hello.

    • Opsi deployment tambahan:

      • Untuk men-deploy ke namespace selain default, Anda harus menentukan namespace tersebut menggunakan parameter --namespace.

      • Untuk men-deploy ke lokasi selain konfigurasi default, Anda harus menentukan name dan location cluster dengan parameter --cluster dan --cluster-location:

        gcloud run deploy SERVICE --cluster CLUSTER-NAME --cluster-location CLUSTER-LOCATION
      • Anda dapat menetapkan opsi konektivitas dengan tanda --connectivity seperti yang dijelaskan dalam Mengubah setelan konektivitas layanan untuk menentukan akses internal atau eksternal.

      • Untuk penayangan Knative di VMware, Anda harus menyertakan parameter --kubeconfig dan menentukan file konfigurasi Anda:

        gcloud run deploy SERVICE --image IMAGE_URL --kubeconfig KUBECONFIG-FILE

  2. Tunggu hingga deployment selesai. Setelah berhasil diselesaikan, pesan berhasil akan ditampilkan beserta URL layanan yang di-deploy.

YAML

Anda dapat mendownload konfigurasi layanan yang ada ke dalam file YAML dengan perintah gcloud run services describe menggunakan tanda --format=export. Kemudian, Anda dapat mengubah file YAML tersebut dan men-deploy perubahan tersebut dengan perintah gcloud run services replace. Anda harus memastikan bahwa Anda hanya mengubah atribut yang ditentukan.

  1. Download konfigurasi layanan Anda ke file bernama service.yaml di ruang kerja lokal:

    gcloud run services describe SERVICE --format export > service.yaml

    Ganti SERVICE dengan nama layanan Knative serving Anda.

    1. Di file lokal, perbarui setelan revisi di atribut turunan spec.template.

    2. Deploy revisi baru:

      gcloud run services replace service.yaml

Men-deploy image dari project Google Cloud lain

Anda dapat men-deploy image container dari project Google Cloud lain jika Anda menetapkan izin IAM yang benar:

  1. Di konsol Google Cloud console, buka project untuk layanan penayangan Knative Anda.

  2. Buka halaman IAM

  3. Dapatkan info akun layanan Anda:

  4. Buka project yang memiliki container registry yang ingin Anda gunakan.

  5. Buka halaman IAM.

  6. Klik Add untuk menambahkan akun utama baru.

  7. Di kotak teks New principals, tempel alamat email akun layanan yang telah Anda salin sebelumnya.

  8. Di menu drop-down Select a role, pilih peran untuk membaca dari registri:

  9. Deploy image container ke project yang berisi layanan penayangan Knative Anda.

Untuk keamanan yang lebih kuat, Anda dapat membatasi pemberian akses:

  • Artifact Registry: Berikan peran di repositori yang menyimpan image container Anda.
  • Container Registry: Berikan peran pada bucket Cloud Storage yang menyimpan image container Anda.

Men-deploy image container pribadi dari registry container lain

Bagian ini menjelaskan cara menyiapkan izin yang benar untuk men-deploy image container dari registry pribadi arbitrer ke layanan Knative. Container registry pribadi memerlukan kredensial untuk mengakses image container. Perhatikan bahwa Anda tidak perlu mengikuti langkah-langkah ini untuk men-deploy image container pribadi dari Container Registry (Tidak digunakan lagi) atau Artifact Registry dalam project yang sama dengan cluster Anda.

Agar dapat men-deploy image container pribadi, Anda harus membuat secret Kubernetes jenis imagePullSecret dan mengaitkannya dengan akun layanan:

  1. Buat secret imagePullSecret bernama container-registry:

    kubectl create secret docker-registry container-registry \
      --docker-server=DOCKER_REGISTRY_SERVER \
      --docker-email=REGISTRY_EMAIL \
      --docker-username=REGISTRY_USER \
      --docker-password=REGISTRY_PASSWORD
    • Ganti DOCKER_REGISTRY_SERVER dengan FQDN registry pribadi Anda (misalnya: https://gcr.io/ untuk Container Registry atau https://hub.docker.com untuk DockerHub).
    • Ganti REGISTRY_EMAIL dengan email Anda.
    • Ganti REGISTRY_USER dengan nama pengguna registri penampung Anda.

      Jika Anda menggunakan Container Registry atau Artifact Registry dan ingin menyimpan serta menarik kredensial yang berlaku lama, bukan meneruskan token akses yang berlaku singkat, lihat Metode autentikasi: File kunci JSON.

    • Ganti REGISTRY_PASSWORD dengan sandi registri penampung Anda.

  2. Buka akun layanan default Anda:

    kubectl edit serviceaccount default --namespace default

    Setiap namespace di cluster Kubernetes Anda memiliki akun layanan default yang disebut default. Akun layanan default ini digunakan untuk menarik image container Anda, kecuali jika ditentukan lain saat Anda men-deploy layanan penayangan Knative.

  3. Tambahkan rahasia imagePullSecret yang baru dibuat ke akun layanan default Anda:

    imagePullSecrets:
    - name: container-registry
    

    Akun layanan Anda sekarang akan terlihat seperti ini:

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: default
      namespace: default
      ...
    secrets:
    - name: default-token-zd84v
    # The secret we just created:
    imagePullSecrets:
    - name: container-registry
    

Sekarang, setiap pod baru yang dibuat di namespace default saat ini akan memiliki secret imagePullSecret yang ditentukan.

Men-deploy dengan injeksi sidecar otomatis diaktifkan

Untuk men-deploy layanan dengan injeksi sidecar Istio yang diaktifkan, lihat injeksi sidecar otomatis yang diaktifkan dalam dokumentasi Cloud Service Mesh.

Men-deploy layanan di jaringan internal

Untuk men-deploy layanan di jaringan internal, Anda harus menyiapkan jaringan internal pribadi.

Langkah berikutnya

Setelah men-deploy layanan baru, Anda dapat melakukan hal berikut:

Anda dapat mengotomatiskan build dan deployment layanan Knative serving menggunakan Pemicu Cloud Build: