Mengaktifkan fitur opsional pada bidang kontrol dalam cluster

Halaman ini menjelaskan cara mengaktifkan fitur opsional di bidang kontrol dalam cluster. Untuk informasi tentang bidang kontrol yang dikelola Google, lihat Mengonfigurasi Anthos Service Mesh yang terkelola.

Saat Anda menginstal Anthos Service Mesh, fitur yang diaktifkan secara default akan berbeda di setiap platform. Anda dapat mengaktifkan fitur opsional dengan menyertakan file overlay saat menginstal (atau mengupgrade) Anthos Service Mesh. File overlay adalah file YAML yang berisi resource kustom (CR) IstioOperator yang Anda gunakan untuk mengonfigurasi bidang kontrol. Anda dapat mengganti konfigurasi default dan mengaktifkan fitur opsional atau menonaktifkan fitur default dalam file overlay. Menentukan satu fitur per file overlay. Anda dapat melapisi pada lebih banyak overlay, dan setiap file overlay mengganti konfigurasi pada lapisan sebelumnya.

Tentang file overlay

File overlay di halaman ini berada dalam paket anthos-service-mesh di GitHub. File-file ini berisi penyesuaian umum pada konfigurasi default. Anda dapat menggunakan file ini sebagaimana adanya, atau Anda dapat membuat perubahan tambahan pada file tersebut sesuai kebutuhan.

Saat menginstal Anthos Service Mesh menggunakan skrip asmcli yang disediakan Google, Anda dapat menentukan satu atau beberapa file overlay dengan opsi --option atau --custom_overlay. Jika tidak perlu melakukan perubahan pada file di repositori anthos-service-mesh, Anda dapat menggunakan --option, dan skrip akan mengambil file dari GitHub untuk Anda. Jika tidak, Anda dapat membuat perubahan pada file overlay, lalu menggunakan opsi --custom_overlay untuk meneruskannya ke asmcli.

Jangan sertakan beberapa CR dalam satu file overlay Buat file overlay terpisah untuk setiap CR
beberapa CR dalam satu yaml file yaml terpisah untuk setiap CR

Mendownload paket anthos-service-mesh

Untuk mendownload paket anthos-service-mesh:

Langkah-langkah berikut menggunakan kpt untuk mendownload paket asm dari repositori GitHub. Jika ingin, Anda dapat menggunakan git clone.

  1. Instal kpt jika Anda belum melakukannya:

    gcloud components install kpt
    
  2. Download paket yang berisi file:

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.11 asm
    

    Contoh berikut mengasumsikan bahwa paket asm berada di direktori kerja Anda saat ini.

Cara mengaktifkan fitur opsional

Contoh berikut disederhanakan agar ditampilkan hanya menggunakan overlay kustom untuk mengaktifkan fitur opsional. Ganti OTHER_FLAGS dengan opsi command line lainnya.

Perintah asmcli install menyediakan dua cara untuk mengaktifkan fitur opsional. Metode yang Anda gunakan bergantung pada apakah Anda perlu membuat perubahan pada file overlay atau tidak.

  • Gunakan --option jika Anda tidak perlu membuat perubahan apa pun pada file overlay. Dengan --option, asmcli akan mengambil file dari repositori GitHub untuk Anda, sehingga Anda harus memiliki koneksi internet.

    ./asmcli install \
      OTHER_FLAGS \
      --option OPTION_NAME
    

    Ganti OPTION_NAME dengan opsi yang ingin Anda aktifkan. Untuk daftar opsi, lihat paket anthos-service-mesh.

  • Gunakan --custom_overlay saat Anda perlu menyesuaikan file overlay.

    ./asmcli install \
      OTHER_FLAGS \
      --custom_overlay PATH_TO_FILE
    

    Ganti PATH_TO_FILE dengan jalur ke file overlay yang ingin Anda gunakan.

YAML untuk fitur opsional

Bagian berikut ini menyediakan YAML untuk mengaktifkan fitur opsional dan yang didukung.

Mode STRICT mTLS

Konfigurasi global.mtls.enabled telah dihapus dari CR IstioOperator untuk menghindari masalah pada upgrade dan untuk menyediakan penginstalan yang lebih fleksibel. Untuk mengaktifkan mTLS STRICT, konfigurasikan kebijakan autentikasi peer.

Mengarahkan Envoy ke stdout

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    accessLogFile: "/dev/stdout"

Untuk mengetahui informasi selengkapnya, lihat Mengaktifkan logging akses Envoy.

Cloud Trace

Cloud Trace tersedia dengan penginstalan Anthos Service Mesh di platform berikut:

  • GKE di Google Cloud
  • Cluster GKE Enterprise secara lokal jika Anda menginstal dengan certificate authority Anthos Service Mesh (Mesh CA)

Untuk mengetahui informasi harga yang lebih detail, lihat halaman harga Cloud Trace.

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    enableTracing: true
  values:
    global:
      proxy:
        tracer: stackdriver

Frekuensi sampling default adalah 1%, tetapi Anda dapat mengganti frekuensi sampling default dengan menentukan nilai tracing.sampling. Nilai harus dalam rentang 0,0 hingga 100,0 dengan presisi 0,01. Misalnya, untuk melacak 5 permintaan dari setiap 10.000 permintaan,gunakan 0, 05.

Contoh berikut menunjukkan frekuensi sampling 100% (yang hanya akan Anda lakukan untuk tujuan demo atau pemecahan masalah).

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    enableTracing: true
    defaultConfig:
      tracing:
        sampling: 100
  values:
    global:
      proxy:
        tracer: stackdriver

Perlu diperhatikan bahwa konfigurasi tracer saat ini adalah bagian dari konfigurasi bootstrap proxy, sehingga pod perlu dimulai ulang dan dimasukkan ulang untuk mengambil update tracer. Misalnya, Anda dapat menggunakan perintah berikut yang mencakup pod mulai ulang dari suatu deployment:

kubectl rollout restart deployment -n NAMESPACE DEPLOYMENT_NAME

Propagasi konteks rekaman aktivitas

Meskipun proxy file bantuan dapat secara otomatis mengirim span rekaman aktivitas, proxy tersebut memerlukan beberapa petunjuk untuk mengaitkan seluruh rekaman aktivitas. Aplikasi perlu menyebarkan header HTTP yang sesuai, sehingga saat proxy mengirim informasi span, span dapat dikorelasikan dengan benar ke dalam satu pelacakan.

Untuk melakukannya, aplikasi harus mengumpulkan dan menyebarkan header yang sesuai dari permintaan masuk ke setiap permintaan keluar. Konfigurasi pelacakan Stackdriver Anthos Service Mesh akan menerima salah satu format header berikut, dan akan menerapkan semua format berikut:

  • B3 (x-b3-traceid, x-b3-spanid, x-b3parentspanid, x-b3-sampled, x-b3-flags)
  • TraceContext W3C (traceparent)
  • Google Cloud Trace (x-cloud-trace-context)
  • TraceBin gRPC (grpc-trace-bin)

Artinya, aplikasi Anda dapat menggunakan salah satu format tersebut untuk menerapkan konteks pelacakan, dan trace akan dihasilkan serta disetel dengan tepat ke Stackdriver.

Contoh

Berikut adalah contoh permintaan HTTP-Get dengan header traceparent dalam permintaan asli. Perhatikan header konteks rekaman aktivitas tambahan yang ditambahkan oleh proxy.

$ kubectl exec -it sleep-557747455f-n6flv -- curl "httpbin:8000/anything?freeform=" -H "accept: application/json" -H "Traceparent: 00-7543d15e09e5d61801d4f74cde1269b8-604ef051d35c5b3f-01" -vv
*   Trying 10.12.3.52:8000...
* Connected to httpbin (10.12.3.52) port 8000 (#0)
> GET /anything?freeform= HTTP/1.1
> Host: httpbin:8000
> User-Agent: curl/7.80.0-DEV
> accept: application/json
> Traceparent: 00-7543d15e09e5d61801d4f74cde1269b8-604ef051d35c5b3f-01
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< server: envoy
< date: Wed, 10 Nov 2021 20:36:04 GMT
< content-type: application/json
< content-length: 1032
< access-control-allow-origin: *
< access-control-allow-credentials: true
< x-envoy-upstream-service-time: 5
<
{
  "args": {
    "freeform": ""
  },
  "data": "",
  "files": {},
  "form": {},
  "headers": {
    "Accept": "application/json",
    "Grpc-Trace-Bin": "AAB1Q9FeCeXWGAHU90zeEmm4AaDHmGRtdM7wAgE",
    "Host": "httpbin:8000",
    "Traceparent": "00-7543d15e09e5d61801d4f74cde1269b8-a0c798646d74cef0-01",
    "User-Agent": "curl/7.80.0-DEV",
    "X-B3-Sampled": "1",
    "X-B3-Spanid": "a0c798646d74cef0",
    "X-B3-Traceid": "7543d15e09e5d61801d4f74cde1269b8",
    "X-Cloud-Trace-Context": "7543d15e09e5d61801d4f74cde1269b8/11585396123534413552;o=1",
    "X-Envoy-Attempt-Count": "1",
    "X-Forwarded-Client-Cert": "<REDACTED>"
  },
  "json": null,
  "method": "GET",
  "origin": "127.0.0.6",
  "url": "http://httpbin:8000/anything?freeform="
}

Perhatikan bahwa dalam kumpulan header permintaan yang ditampilkan, set lengkap header konteks rekaman aktivitas tersedia.

Untuk contoh lainnya yang menyebarkan header, lihat Penyebaran konteks rekaman aktivitas.

Membuat trace dari klien dengan ID kustom

Untuk membuat rekaman aktivitas dari klien dengan ID kustom, gunakan perintah curl untuk membuat permintaan dengan klien eksternal dan memaksanya untuk menampilkan rekaman aktivitas. Contoh:

curl $URL --header "x-client-trace-id: 105445aa7843bc8bf206b12000100000"

Untuk mengetahui informasi selengkapnya tentang x-client-trace-id, lihat dokumentasi Envoy.

Traffic keluar melalui gateway keluar

Sebaiknya instal gateway yang dimasukkan seperti yang dijelaskan dalam Menginstal dan mengupgrade gateway.

Antarmuka Jaringan Container Istio

Cara mengaktifkan Antarmuka Jaringan Container (CNI) Istio bergantung pada lingkungan tempat Anthos Service Mesh diinstal.

  1. Aktifkan kebijakan jaringan.

  2. Pilih file overlay yang cocok dengan platform Anda.

Mengaktifkan CNI di GKE

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  components:
    cni:
      enabled: true
      namespace: kube-system
  values:
    cni:
      cniBinDir: /home/kubernetes/bin
      excludeNamespaces:
        - istio-system
        - kube-system

Aktifkan CNI lokal

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  components:
    cni:
      enabled: true
      namespace: kube-system
  values:
    cni:
      cniBinDir: /opt/cni/bin
      excludeNamespaces:
        - istio-system
        - kube-system
        - gke-system

Mengaktifkan load balancer internal

Sebaiknya instal gateway yang dimasukkan seperti yang dijelaskan dalam bagian Menginstal dan mengupgrade gateway untuk menyiapkan load balancer internal di GKE. Saat mengonfigurasi Layanan gateway, Anda menyertakan anotasi: cloud.google.com/load-balancer-type: "internal"

Pengelolaan sertifikat eksternal di gateway masuk

Untuk mengetahui informasi tentang cara mengaktifkan pengelolaan sertifikat eksternal di gateway masuk menggunakan Envoy SDS, lihat Gateway Aman.