Mengaktifkan fitur opsional pada bidang kontrol dalam cluster

Halaman ini menjelaskan cara mengaktifkan fitur opsional pada bidang kontrol dalam cluster. Untuk mengetahui informasi tentang bidang kontrol terkelola, lihat Mengonfigurasi Cloud Service Mesh terkelola.

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

Tentang file overlay

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

Saat menginstal Cloud 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 membuat perubahan pada file di repositori anthos-service-mesh, Anda dapat menggunakan --option, dan skrip akan mengambil file tersebut dari GitHub untuk Anda. Jika tidak, Anda dapat mengubah file overlay, lalu menggunakan opsi --custom_overlay untuk meneruskannya ke asmcli.

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

Cara mengaktifkan fitur opsional

Contoh berikut disederhanakan untuk ditampilkan hanya dengan menggunakan overlay kustom guna mengaktifkan fitur opsional. Ganti OTHER_FLAGS dengan tanda penginstalan yang diperlukan.

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

  • Gunakan --option saat Anda tidak perlu melakukan 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. Pastikan untuk menghilangkan ekstensi .yaml dan hanya menyertakan nama file overlay, seperti iap-operator dan attached-cluster. 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 menyediakan YAML untuk mengaktifkan fitur opsional dan yang didukung.

Mode STRICT mTLS

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

Gambar proxy tanpa distro

Sebagai praktik terbaik, Anda harus membatasi konten runtime container hanya ke paket yang diperlukan. Pendekatan ini meningkatkan keamanan dan rasio sinyal terhadap derau dari pemindai Kerentanan dan Eksposur Umum (CVE). Istio menyediakan image proxy berdasarkan image dasar tanpa gangguan.

Konfigurasi berikut memungkinkan image distroless untuk seluruh Cloud Service Mesh. Perubahan jenis image mengharuskan setiap pod dimulai ulang dan dimasukkan ulang agar dapat diterapkan.

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    defaultConfig:
      image:
        imageType: distroless

Image distroless tidak berisi biner selain proxy. Oleh karena itu, Anda tidak dapat exec shell atau menggunakan curl, ping, atau utilitas debug lainnya di dalam container.

Jika Anda menjalankan perintah curl, Anda akan melihat error berikut:

error: Internal error occurred: error executing command in container: failed to exec in container: failed to start exec  "<container-id>"
OCI runtime exec failed: exec failed: unable to start container process: exec: "curl": executable file not found in $PATH: unknown

Jika Anda menjalankan perintah shell, Anda akan melihat pesan error.v

error: Internal error occurred: error executing command in container: failed to exec in container: failed to start exec "<container-id>"
OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "sh": executable file not found in $PATH: unknown

Jika memerlukan akses ke alat ini untuk pod tertentu, Anda dapat mengganti imageType menggunakan anotasi pod berikut.

sidecar.istio.io/proxyImageType: debug

Setelah mengubah jenis image deployment melalui anotasi, deployment tersebut harus dimulai ulang.

kubectl rollout restart deployment -n NAMESPACE DEPLOYMENT_NAME

Untuk sebagian besar jenis proses debug proxy, istioctl proxy-cmd harus digunakan yang tidak memerlukan image dasar debug.

Menggunakan overlay kustom untuk registry kustom

Anda dapat menggunakan overlay kustom untuk registry kustom, seperti jika Anda perlu menginstal Cloud Service Mesh dari container registry kustom. Contoh:

apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  hub: {private_registry_url}

Berikut adalah daftar image untuk Cloud Service Mesh yang perlu Anda cerminkan ke container registry kustom:

  • Install-cni - gke.gcr.io/asm/install-cni:1.20.4-asm.0
  • Paket Data Terkelola - gke.gcr.io/asm/mdp:1.20.4-asm.0
  • Uji coba - gke.gcr.io/asm/pilot:1.20.4-asm.0
  • Proxyv2 - gke.gcr.io/asm/proxyv2:1.20.4-asm.0

Menambahkan image ke registry pribadi

Untuk mengirim image Cloud Service Mesh ke registry pribadi, selesaikan langkah-langkah berikut.

  1. Mengambil image Cloud Service Mesh:
    docker pull gke.gcr.io/asm/install-cni:1.20.4-asm.0
    docker pull gke.gcr.io/asm/mdp:1.20.4-asm.0
    docker pull gke.gcr.io/asm/pilot:1.20.4-asm.0
    docker pull gke.gcr.io/asm/proxyv2:1.20.4-asm.0
    
  2. Buat variabel untuk URL registry pribadi Anda:
    export PRIVATE_REGISTRY_URL=PRIVATE_REGISTRY_URL
    
    Ganti PRIVATE_REGISTRY_URL dengan URL registry pribadi Anda.
  3. Beri tag pada gambar dengan URL registry pribadi Anda:
    docker tag gke.gcr.io/asm/install-cni:1.20.4-asm.0 \
     ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/install-cni:1.20.4-asm.0
    docker tag gke.gcr.io/asm/mdp:1.20.4-asm.0 \
     ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/mdp:1.20.4-asm.0
    docker tag gke.gcr.io/asm/pilot:1.20.4-asm.0 \
     ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/pilot:1.20.4-asm.0
    docker tag gke.gcr.io/asm/proxyv2:1.20.4-asm.0 \
     ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/proxyv2:1.20.4-asm.0
    
  4. Kirim image yang diberi tag ke registry pribadi Anda:
    docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/install-cni:1.20.4-asm.0
    docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/mdp:1.20.4-asm.0
    docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/pilot:1.20.4-asm.0
    docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/proxyv2:1.20.4-asm.0
    
  5. (Opsional) Jika Anda menggunakan layanan kanonis, tambahkan image layanan kanonis ke registry pribadi Anda.
    1. Mengambil image layanan kanonis Cloud Service Mesh:
              docker pull gcr.io/kubebuilder/kube-rbac-proxy:v0.13.1
              docker pull gke.gcr.io/asm/canonical-service-controller:1.10.3-asm.16
              
    2. Beri tag pada gambar dengan URL registry pribadi Anda:
              docker tag gcr.io/kubebuilder/kube-rbac-proxy:v0.13.1 \
              ${PRIVATE_REGISTRY_URL}/gcr.io/kubebuilder/kube-rbac-proxy:v0.13.1
              docker tag gke.gcr.io/asm/canonical-service-controller:1.10.3-asm.16 \
              ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/canonical-service-controller:1.10.3-asm.16
              
    3. Kirim image yang diberi tag ke registry pribadi Anda:
              docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/kube-rbac-proxy:v0.13.1
              docker push ${PRIVATE_REGISTRY_URL}/gke.gcr.io/asm/canonical-service-controller:1.10.3-asm.16
              

Jika Anda dapat menarik image yang diberi tag dari registry pribadi, artinya prosedur tersebut berhasil.

Meningkatkan durasi penghentian penghentian

Secara default, Envoy akan menunggu lima detik (5s) hingga koneksi yang ada selesai saat pod dihentikan.

Pod terminationGracePeriodSeconds harus lebih besar dari nilai terminationDrainDuration.

Untuk mengetahui informasi selengkapnya, lihat Opsi Mesh Global.

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    defaultConfig:
      terminationDrainDuration: 30s

Aktifkan Log akses

---
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 Cloud Service Mesh pada platform berikut:

  • GKE di Google Cloud
  • GKE Enterprise melakukan cluster lokal jika Anda menginstal dengan certificate authority Cloud Service Mesh
---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    enableTracing: true
  values:
    global:
      proxy:
        tracer: stackdriver

Untuk mengetahui informasi selengkapnya, lihat Mengakses rekaman aktivitas.

Traffic keluar melalui gateway keluar

Sebaiknya Anda menginstal gateway yang dimasukkan seperti yang dijelaskan dalam Menginstal dan mengupgrade gateway.

Antarmuka Jaringan Container Istio

Cara Anda mengaktifkan Istio Container Network Interface (CNI) bergantung pada lingkungan tempat Cloud 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

Aktifkan Log traffic untuk off-Google Cloud

Menginstal Cloud Service Mesh dengan Istio CA di luar Google Cloud akan melaporkan metrik ke Prometheus secara default. Gunakan opsi ini untuk mengaktifkan pelaporan Log traffic, atau Prometheus dan Stackdriver, sehingga Anda dapat menggunakan dasbor Cloud Service Mesh.

Hanya Stackdriver

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  values:
    telemetry:
      enabled: true
      v2:
        enabled: true
        prometheus:
          enabled: false
        stackdriver:
          enabled: true

Stackdriver dan Prometheus

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  values:
    telemetry:
      enabled: true
      v2:
        enabled: true
        prometheus:
          enabled: true
        stackdriver:
          enabled: true

Mengaktifkan load balancer internal

Sebaiknya instal gateway yang dimasukkan seperti yang dijelaskan di bagian Menginstal dan mengupgrade gateway untuk menyiapkan load balancer internal di GKE. Saat mengonfigurasi Layanan gateway, sertakan anotasi: networking.gke.io/load-balancer-type: "Internal"

Pengelolaan sertifikat eksternal di gateway masuk

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