Bersiap menyiapkan API pemilihan rute layanan dengan Envoy dan workload tanpa proxy

Dokumen ini memberikan informasi tentang tugas prasyarat untuk menyiapkan Cloud Service Mesh yang menggunakan API perutean layanan dengan proxy Envoy atau dengan gRPC tanpa proxy sebagai dataplane.

Penyiapan Cloud Service Mesh mencakup beberapa fase. Dokumen ini menjelaskan fase pertama: instruksi untuk mempersiapkan konfigurasi Cloud Service Mesh dengan instance VM atau aplikasi gRPC tanpa proxy. Fase tambahan dibahas dalam panduan khusus {i>platform<i} yang tercantum dalam Lanjutkan proses penyiapan nanti dalam dokumen ini.

Sebelum Anda membaca panduan ini, biasa dengan dokumen-dokumen berikut, yang memberikan ringkasan tentang penggunaan Cloud Service Mesh dengan layanan routing API, dan Gateway API:

Prasyarat

Siapkan lingkungan Anda dengan menyelesaikan tugas berikut:

  1. Siapkan proyek sesuai dengan kebutuhan bisnis Anda.
  2. Aktifkan penagihan.
  3. Berikan izin yang diperlukan.
  4. Aktifkan Traffic Director API dan API lainnya untuk project Anda.
  5. Pastikan akun layanan memiliki izin yang memadai untuk mengakses Traffic Director API.
  6. Mengaktifkan Cloud DNS API dan mengonfigurasi Cloud DNS.

Bagian berikut memberikan petunjuk untuk setiap tugas.

Menyiapkan project

Untuk menyiapkan dan mengelola project, lihat Membuat dan mengelola project dan dokumentasi terkait.

Aktifkan penagihan

Pastikan penagihan diaktifkan untuk project Google Cloud Anda. Untuk selengkapnya informasi selengkapnya, lihat Mengaktifkan, menonaktifkan, atau mengubah penagihan untuk project.

Memberikan izin IAM yang diperlukan

Anda harus memiliki izin Identity and Access Management (IAM) yang memadai untuk membuat VM instance dan memodifikasi jaringan untuk mengonfigurasi Cloud Service Mesh. Jika Anda memiliki peran Pemilik atau Editor project (roles/owner atau roles/editor) dalam project tempat Anda mengaktifkan di Cloud Service Mesh, Anda otomatis memiliki izin yang tepat.

Jika tidak, Anda harus memiliki semua peran IAM yang ditampilkan di tabel berikut. Jika Anda memiliki peran tersebut, Anda juga memiliki Google Cloud Platform, seperti yang dijelaskan dalam dokumentasi IAM Compute Engine.

Tugas Peran yang diperlukan
Menetapkan kebijakan IAM untuk akun layanan. Admin Akun Layanan
(roles/iam.serviceAccountAdmin)
Mengaktifkan Cloud Service Mesh. Admin Penggunaan Layanan
(roles/serviceusage.serviceUsageAdmin)
Membuat komponen jaringan, subnet, dan load balancer. Admin Jaringan Compute
(roles/compute.networkAdmin)
Menambahkan dan menghapus aturan firewall. Admin Keamanan Compute
(roles/compute.securityAdmin)
Membuat instance. Admin Instance Compute
(roles/compute.instanceAdmin)
Mengizinkan akses ke akun layanan. Service Account User
(roles/iam.serviceAccountUser)
Aktifkan akun layanan untuk melakukan tugas yang diperlukan. Service Account User
(roles.trafficdirector.client)

VM Compute Engine harus memiliki https://www.googleapis.com/auth/cloud-platform ruang lingkup proyek. Untuk informasi selengkapnya, lihat Memecahkan masalah deployment yang menggunakan gRPC tanpa proxy.

Mengaktifkan akun layanan untuk mengakses Traffic Director API

Saat menyiapkan bidang data dan menghubungkannya ke Cloud Service Mesh, Klien xDS, baik proxy Envoy maupun klien gRPC tanpa proxy, terhubung ke server xDS trafficdirector.googleapis.com. Ini Klien xDS memberikan identitas akun layanan ke server xDS untuk memastikan bahwa komunikasi antara bidang data dan bidang kontrol telah diotorisasi.

Untuk VM Compute Engine, klien xDS menggunakan akun layanan yang ditetapkan ke VM.

Kecuali jika Anda mengubah konfigurasi, Google Cloud menggunakan Akun layanan default Compute Engine.

Untuk memberi akun layanan akses ke Traffic Director API, gunakan perintah berikut petunjuk.

Konsol

  1. Di Konsol Google Cloud, buka IAM & Admin kami.

    Buka IAM & Admin

  2. Pilih project Anda.

  3. Identifikasi akun layanan yang ingin Anda tambahi peran:

    • Jika akun layanan belum ada di daftar Members, akun tersebut tidak memiliki peran apa pun yang ditetapkan. Klik Add dan masukkan alamat email akun layanan.
    • Jika sudah ada di daftar Members, akun layanan memiliki peran yang sudah ada. Pilih akun layanan, lalu klik Tab Roles.
  4. Luaskan peran. Untuk akun layanan yang ingin diedit, klik Edit.

  5. Pilih peran Other &gt; Cloud Service Mesh Client.

  6. Untuk menerapkan peran ke akun layanan, klik Simpan.

gcloud

Jalankan perintah berikut:

gcloud projects add-iam-policy-binding PROJECT \
    --member serviceAccount:SERVICE_ACCOUNT_EMAIL \
    --role=roles/trafficdirector.client

Ganti kode berikut:

  • PROJECT: masukkan gcloud config get-value project
  • SERVICE_ACCOUNT_EMAIL: email yang terkait dengan akun layanan

Mengaktifkan API yang diperlukan

Aktifkan API yang diperlukan berikut ini.

  • osconfig.googleapis.com
  • trafficdirector.googleapis.com
  • compute.googleapis.com
  • networkservices.googleapis.com

Untuk mengaktifkan API yang diperlukan, gunakan petunjuk berikut.

Konsol

  1. Di konsol Google Cloud, buka halaman Library API untuk project Anda.

    Buka Library API

  2. Di bagian Search for APIs & Services, masukkan Traffic Director.

  3. Di daftar hasil penelusuran, klik Traffic Director API. Jika Anda tidak melihat Traffic Director API tersedia, ini berarti Anda tidak memiliki untuk mengaktifkan Traffic Director API.

  4. Di halaman Traffic Director API, klik Enable.

  5. Di bagian Search for APIs & Services, masukkan OS Config.

  6. Di daftar hasil penelusuran, klik OS Config. Jika Anda tidak melihat OS Config API tercantum, ini berarti Anda tidak memiliki API yang diperlukan untuk mengaktifkan Traffic Director API.

  7. Di halaman OS Config API, klik Enable.

  8. Di bagian Search for APIs & Services, masukkan Compute.

  9. Di daftar hasil penelusuran, klik Compute Engine API. Jika Anda tidak melihat Compute Engine API yang tercantum, ini berarti Anda tidak memiliki resource yang diperlukan untuk mengaktifkan Compute Engine API.

  10. Di halaman Compute Engine API, klik Enable.

  11. Di bagian Search for APIs & Services, masukkan Network Services.

  12. Dalam daftar hasil penelusuran, klik Network Services API. Jika Anda tidak melihat yang tercantum dalam Network Services API, ini berarti Anda tidak memiliki untuk mengaktifkan Network Services API.

  13. Di halaman Network Services API, klik Enable.

gcloud

Jalankan perintah berikut:

gcloud services enable osconfig.googleapis.com \
trafficdirector.googleapis.com \
compute.googleapis.com \
networkservices.googleapis.com

versi xDS

API pemilihan rute layanan mengharuskan Anda menggunakan xDS v3. Untuk informasi tentang pembaruan deployment Anda dari xDS v2 ke xDS v3, lihat API bidang kontrol xDS.

Persyaratan tambahan dengan proxy Envoy

Bagian ini menjelaskan persyaratan tambahan untuk menggunakan Cloud Service Mesh dengan API perutean layanan dan proxy Envoy. Jika Anda men-deploy dengan jaringan gRPC, lihat Persyaratan tambahan dengan gRPC tanpa proxy.

Cara penginstalan Envoy

Selama proses deployment Cloud Service Mesh, Anda membuat VM template yang otomatis menginstal Envoy pada VM tempat aplikasi Anda akan dijalankan.

Tentang versi Envoy

Envoy harus menggunakan versi 1.20.0 atau yang lebih baru agar dapat berfungsi dengan Cloud Service Mesh. Sebaiknya selalu gunakan versi Envoy terbaru untuk memastikan bahwa kerentanan keamanan dapat dimitigasi.

Jika Anda memutuskan untuk menerapkan Envoy dengan menggunakan salah satu metode otomatis kami, kami menangani tugas ini untuk Anda sebagai berikut:

Deployment Envoy otomatis dengan VM Compute Engine menginstal Envoy versi baru yang telah divalidasi agar berfungsi dengan Cloud Service Mesh. Saat VM baru dibuat dengan menggunakan template instance, VM menerima versi terbaru yang telah divalidasi. Jika memiliki VM yang berjalan lama, Anda dapat menggunakan update berkelanjutan untuk mengganti VM yang ada dan menggunakan versi terbaru.

Untuk informasi tentang versi Envoy tertentu, lihat Histori versi. Untuk informasi tentang kerentanan keamanan, lihat Saran Keamanan.

Persyaratan tambahan dengan gRPC tanpa proxy

Bagian ini menjelaskan persyaratan tambahan untuk menggunakan Cloud Service Mesh dengan API perutean layanan dan gRPC tanpa proxy. Jika Anda melakukan deployment dengan Envoy proxy, lihat Persyaratan tambahan dengan proxy Envoy.

Proses keseluruhan dengan gRPC tanpa proxy

Ikuti prosedur keseluruhan ini untuk menyiapkan aplikasi gRPC tanpa proxy dalam mesh layanan:

  1. Update klien gRPC ke gRPC versi terbaru, dengan patch.
  2. Perbarui setelan klien skema resolver nama gRPC saat Anda membuat saluran dan menentukan file bootstrap Cloud Service Mesh.
  3. Mengonfigurasi resource Cloud Service Mesh dan Cloud Load Balancing.

Dokumen ini memberikan informasi untuk menyelesaikan dua langkah pertama. Tujuan yang digunakan untuk langkah 3 tergantung pada apakah penggunaan deployment VM Compute Engine atau Grup endpoint jaringan (NEG) GKE.

Versi dan bahasa gRPC yang didukung

gRPC adalah project open source dan dukungan rilisnya dijelaskan dalam FAQ gRPC. Sebaiknya gunakan gRPC versi terbaru untuk memastikan informasi kerentanan keamanan dapat dimitigasi. Hal ini juga memastikan bahwa aplikasi Anda memiliki akses ke fitur terbaru yang didukung oleh Cloud Service Mesh. Tujuan fitur mesh layanan yang didukung dalam berbagai implementasi dan versi gRPC tercantum di GitHub. Untuk daftar bahasa dan fitur gRPC yang didukung dengan Cloud Service Mesh dan layanan gRPC tanpa proxy, lihat Fitur Cloud Service Mesh.

Cloud Service Mesh mempertahankan kompatibilitas dengan versi terbaru gRPC dan upaya agar kompatibel dengan versi gRPC dalam waktu kurang dari satu tahun lama, tunduk pada Persyaratan Layanan Google Cloud Platform.

Mengupdate klien gRPC

Update library gRPC di aplikasi Anda ke versi yang mendukung yang Anda perlukan. Untuk mengetahui detailnya, lihat bagian sebelumnya.

Tambahkan name-resolver xDS sebagai dependensi untuk aplikasi gRPC Anda. Persyaratan per bahasa untuk Java dan Go ditampilkan di bagian berikut. Bahasa lain tidak memiliki persyaratan tambahan.

Persyaratan Java

Di Java, jika Anda menggunakan Gradle, tambahkan dependensi grpc-xds ke file File build.gradle. Ganti LATEST_GRPC_VERSION dengan versi terbaru gRPC.

dependencies {
  runtimeOnly 'io.grpc:grpc-xds:LATEST_GRPC_VERSION'
}

Jika Anda menggunakan Maven, tambahkan kode berikut ke bagian <dependencies> dari pom.xml. Ganti LATEST_GRPC_VERSION dengan gRPC versi terbaru.

    <dependency>
      <groupId>io.grpc</groupId>
      <artifactId>grpc-xds</artifactId>
      <version>LATEST_GRPC_VERSION</version>
      <scope>runtime</scope>
    </dependency>

Persyaratan Go

Jika Anda menggunakan Go, impor paket xds Go.

Tetapkan resolver nama gRPC untuk menggunakan xds

Setel atau ubah aplikasi gRPC untuk menggunakan skema resolusi nama xds di URI target, bukan DNS atau skema resolver lainnya. Anda melakukan ini dengan menggunakan awalan xds:/// pada nama target saat Anda membuat saluran gRPC. Load balancing untuk klien gRPC didasarkan pada per saluran.

Sertakan nama layanan yang digunakan dalam URI target di bagian konfigurasi Cloud Service Mesh. Misalnya, di Java, Anda membuat saluran Anda dengan menggunakan struktur ini, dengan nama layanan helloworld:

ManagedChannelBuilder.forTarget("xds:///helloworld[:PORT_NUMBER]")

Membuat dan mengonfigurasi file bootstrap

Skema resolver xds memberi tahu aplikasi gRPC agar terhubung ke Cloud Service Mesh untuk mendapatkan informasi konfigurasi untuk target layanan. Oleh karena itu, lakukan tindakan berikut:

  • Buat file bootstrap, seperti yang ditunjukkan dalam contoh berikut. File ini memberi tahu gRPC agar terhubung ke server xDS (Cloud Service Mesh) untuk mendapatkan konfigurasi untuk layanan tertentu.
  • Menentukan variabel lingkungan bernama GRPC_XDS_BOOTSTRAP, dengan bootstrap dengan nama file sebagai nilai variabel lingkungan.

Petunjuk penyiapan memiliki contoh yang menunjukkan cara membuat file bootstrap. Untuk memudahkan, Anda dapat menggunakan versi terbaru Cloud Service Mesh gRPC generator bootstrap.

{i>File<i} bootstrap berisi informasi yang diperlukan untuk terhubung Cloud Service Mesh harus disertakan bersama aplikasi. Sampel file bootstrap terlihat seperti ini:

{
  "xds_servers": [
    {
      "server_uri": "trafficdirector.googleapis.com:443",
      "channel_creds": [
        {
          "type": "google_default"
        }
      ],
      "server_features": ["xds_v3"]
    }
  ],
  "node": {
    "id": "projects/123456789012/networks/default/nodes/b7f9c818-fb46-43ca-8662-d3bdbcf7ec18",
    "metadata": {
      "TRAFFICDIRECTOR_NETWORK_NAME": "default"
    },
    "locality": {
      "zone": "us-central1-a"
    }
  }
}

Tabel berikut menjelaskan kolom dalam file bootstrap.

Kolom Nilai dan deskripsi
xds_servers Daftar server xDS. gRPC hanya menggunakan yang pertama dalam daftar.
server_uri Tentukan minimal salah satunya. gRPC mencoba terhubung hanya ke xDS pertama server dalam daftar xds_servers. Nilai defaultnya adalah trafficdirector.googleapis.com:443.
channel_creds Kredensial yang akan digunakan dengan server xDS.
type Gunakan nilai google_default. Untuk mengetahui informasi selengkapnya tentang bagaimana kredensial diperoleh, lihat Mulai menggunakan autentikasi.
server_features Daftar fitur yang didukung oleh server, seperti Dukungan xDS v3. Nilai defaultnya kosong.
node Informasi tentang klien yang terhubung ke server xDS.
id

id harus dalam format berikut seperti yang ditampilkan di contoh sebelumnya:

projects/PROJECT_NUMBER/networks/NETWORK_NAME/nodes/ID

Berikan string unik sebagai nilai ID. Tabel ini membantu mengidentifikasi klien gRPC yang terhubung ke dan Cloud Service Mesh.

metadata Informasi khusus untuk server xDS.
TRAFFICDIRECTOR_MESH_NAME Jika kolom kosong atau tidak ditentukan, maka nilai akan ditetapkan ke default.
locality Zona Google Cloud tempat klien gRPC berjalan.

Melanjutkan proses penyiapan

Setelah Anda menyelesaikan prasyarat yang dijelaskan dalam dokumen ini, lanjutkan dengan salah satu dokumen ini jika Anda mengonfigurasi Cloud Service Mesh dengan API perutean layanan: