Mengaktifkan fitur opsional pada bidang kontrol dalam cluster
Halaman ini menjelaskan cara mengaktifkan fitur opsional di bidang kontrol dalam cluster. Untuk mengetahui informasi tentang bidang kontrol terkelola, lihat Mengonfigurasi Anthos Service Mesh 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 |
---|---|
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 paketanthos-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.
Gambar proxy tanpa distro
Sebagai praktik terbaik, Anda harus membatasi konten runtime container hanya ke paket yang diperlukan. Pendekatan ini meningkatkan keamanan serta rasio sinyal terhadap derau untuk pemindai Kerentanan dan Eksposur Umum (CVE). Istio menyediakan image proxy berdasarkan image dasar serverless.
Konfigurasi berikut mengaktifkan image tanpa distro untuk seluruh Anthos Service Mesh. Perubahan jenis gambar 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 tanpa distro tidak berisi biner selain proxy. Oleh karena itu, Anda tidak dapat melakukan exec
shell atau menggunakan curl
, ping
, atau utilitas debug lainnya di dalam container. Jika Anda mencoba menjalankan shell, Anda akan melihat kesalahan 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: 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 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 Anthos Service Mesh dari container registry kustom. Contoh:
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
hub: {private_registry_url}
Berikut adalah daftar image untuk Anthos Service Mesh yang perlu Anda duplikasi ke container registry kustom:
- Install-cni -
gcr.io/gke-release/asm/install-cni:1.13.9-asm.10
- Paket Data Terkelola -
gcr.io/gke-release/asm/mdp:1.13.9-asm.10
- Uji coba -
gcr.io/gke-release/asm/pilot:1.13.9-asm.10
- Proxyv2 -
gcr.io/gke-release/asm/proxyv2:1.13.9-asm.10
Menambahkan image ke registry pribadi
Untuk mengirim image Anthos Service Mesh ke registry pribadi, selesaikan langkah-langkah berikut.
-
Ambil image Anthos Service Mesh:
docker pull gcr.io/gke-release/asm/install-cni:1.13.9-asm.10 docker pull gcr.io/gke-release/asm/mdp:1.13.9-asm.10 docker pull gcr.io/gke-release/asm/pilot:1.13.9-asm.10 docker pull gcr.io/gke-release/asm/proxyv2:1.13.9-asm.10 docker pull gcr.io/gke-release/asm/vaultclient:1.13.9-asm.10
-
Buat variabel untuk URL registry pribadi Anda:
export PRIVATE_REGISTRY_URL=PRIVATE_REGISTRY_URL
GantiPRIVATE_REGISTRY_URL
dengan URL registry pribadi Anda. -
Beri tag pada image dengan URL registry pribadi Anda:
docker tag gcr.io/gke-release/asm/install-cni:1.13.9-asm.10 \ ${PRIVATE_REGISTRY_URL}/gcr.io/gke-release/asm/install-cni:1.13.9-asm.10 docker tag gcr.io/gke-release/asm/mdp:1.13.9-asm.10 \ ${PRIVATE_REGISTRY_URL}/gcr.io/gke-release/asm/mdp:1.13.9-asm.10 docker tag gcr.io/gke-release/asm/pilot:1.13.9-asm.10 \ ${PRIVATE_REGISTRY_URL}/gcr.io/gke-release/asm/pilot:1.13.9-asm.10 docker tag gcr.io/gke-release/asm/proxyv2:1.13.9-asm.10 \ ${PRIVATE_REGISTRY_URL}/gcr.io/gke-release/asm/proxyv2:1.13.9-asm.10 docker tag gcr.io/gke-release/asm/vaultclient:1.13.9-asm.10 \ ${PRIVATE_REGISTRY_URL}/gcr.io/gke-release/asm/vaultclient:1.13.9-asm.10
- Kirim image yang diberi tag ke registry pribadi Anda:
docker push ${PRIVATE_REGISTRY_URL}/gcr.io/gke-release/asm/install-cni:1.13.9-asm.10 docker push ${PRIVATE_REGISTRY_URL}/gcr.io/gke-release/asm/mdp:1.13.9-asm.10 docker push ${PRIVATE_REGISTRY_URL}/gcr.io/gke-release/asm/pilot:1.13.9-asm.10 docker push ${PRIVATE_REGISTRY_URL}/gcr.io/gke-release/asm/proxyv2:1.13.9-asm.10 docker push ${PRIVATE_REGISTRY_URL}/gcr.io/gke-release/asm/vaultclient:1.13.9-asm.10
- (Opsional) Jika Anda menggunakan layanan kanonis, tambahkan image layanan kanonis ke registry pribadi Anda.
- Ambil image layanan kanonis Anthos Service Mesh:
docker pull gcr.io/kubebuilder/kube-rbac-proxy:v0.5.0 docker pull gcr.io/gke-release/asm/canonical-service-controller:1.10.3-asm.16
- Beri tag pada image dengan URL registry pribadi Anda:
docker tag gcr.io/kubebuilder/kube-rbac-proxy:v0.5.0 \ ${PRIVATE_REGISTRY_URL}/gcr.io/kubebuilder/kube-rbac-proxy:v0.5.0 docker tag gcr.io/gke-release/asm/canonical-service-controller:1.10.3-asm.16 \ ${PRIVATE_REGISTRY_URL}/gcr.io/gke-release/asm/canonical-service-controller:1.10.3-asm.16
- Kirim image yang diberi tag ke registry pribadi Anda:
docker push ${PRIVATE_REGISTRY_URL}/gcr.io/gke-release/asm/kube-rbac-proxy:v0.5.0 docker push ${PRIVATE_REGISTRY_URL}/gcr.io/gke-release/asm/canonical-service-controller:1.10.3-asm.16
- Ambil image layanan kanonis Anthos Service Mesh:
Jika Anda dapat mengambil image yang diberi tag dari registry pribadi, berarti prosedurnya berhasil.
Mengarahkan Envoy ke 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.
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.
Pilih file overlay yang cocok dengan platform Anda.
Mengaktifkan CNI di GKE
Aktifkan CNI lokal
Mengaktifkan Kemampuan Observasi Google Cloud untuk di luar Google Cloud
Menginstal Anthos Service Mesh dengan Istio CA di luar Google Cloud akan melaporkan metrik ke Prometheus secara default. Gunakan opsi ini untuk mengaktifkan metrik pelaporan ke Google Cloud Observability, atau Prometheus dan Stackdriver, sehingga Anda dapat menggunakan dasbor Anthos Service Mesh.
Hanya Stackdriver
Stackdriver dan Prometheus
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: networking.gke.io/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.