istio have supported arm64 since 1.15 release https://istio.io/latest/news/releases/1.15.x/announcing-1.15/#arm64-support.
BTW, istio-1.15.0 bookinfo sample application use image tag 1.16.4
in samples/bookinfo/platform/kube/bookinfo.yaml
which does not support arm64.
maybe it’s a mistake.
root@ubuntu:/home/ubuntu# uname -m
aarch64
root@ubuntu:/home/ubuntu# kubectl get node -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
ubuntu Ready control-plane,master 2m46s v1.22.13 192.168.0.164 <none> Ubuntu 20.04.1 LTS 5.4.0-1015-raspi docker://20.10.12
root@ubuntu:/home/ubuntu/istio-1.16.0# istioctl install --set profile=demo -y
✔ Istio core installed
✔ Istiod installed
✔ Egress gateways installed
✔ Ingress gateways installed
✔ Installation complete Making this installation the default for injection and validation.
Thank you for installing Istio 1.16. Please take a few minutes to tell us about your install/upgrade experience! https://forms.gle/99uiMML96AmsXY5d6
root@ubuntu:/home/ubuntu/istio-1.16.0# kubectl get pod -A
NAMESPACE NAME READY STATUS RESTARTS AGE
istio-system istio-egressgateway-78fb5cf46-qww9j 1/1 Running 0 3m22s
istio-system istio-ingressgateway-77b9d69b74-drksl 1/1 Running 0 3m22s
istio-system istiod-67fcb675b5-2cg8g 1/1 Running 0 6m36s
kube-flannel kube-flannel-ds-qn9jh 1/1 Running 0 9m38s
kube-system coredns-78fcd69978-m82rr 1/1 Running 0 10m
kube-system coredns-78fcd69978-r644g 1/1 Running 0 10m
kube-system etcd-ubuntu 1/1 Running 1 10m
kube-system kube-apiserver-ubuntu 1/1 Running 1 10m
kube-system kube-controller-manager-ubuntu 1/1 Running 10 (111s ago) 10m
kube-system kube-proxy-hx6t5 1/1 Running 0 10m
kube-system kube-scheduler-ubuntu 1/1 Running 10 (107s ago) 10m
root@ubuntu:/home/ubuntu# docker images | grep istio
istio/proxyv2 1.16.0 4e72257ebac7 10 days ago 241MB
istio/pilot 1.16.0 3715561d16a0 10 days ago 179MB
root@ubuntu:/home/ubuntu/istio-1.16.0# docker image inspect 4e72257ebac7 | grep Architecture
"Architecture": "arm64",
root@ubuntu:/home/ubuntu/istio-1.16.0# docker image inspect 3715561d16a0 | grep Architecture
"Architecture": "arm64",
check if bookinfo can work as expected
root@ubuntu:/home/ubuntu/istio-1.16.0# kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
service/details created
serviceaccount/bookinfo-details created
deployment.apps/details-v1 created
service/ratings created
serviceaccount/bookinfo-ratings created
deployment.apps/ratings-v1 created
service/reviews created
serviceaccount/bookinfo-reviews created
deployment.apps/reviews-v1 created
deployment.apps/reviews-v2 created
deployment.apps/reviews-v3 created
service/productpage created
serviceaccount/bookinfo-productpage created
deployment.apps/productpage-v1 created
root@ubuntu:/home/ubuntu/istio-1.16.0# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
details ClusterIP 10.102.124.99 <none> 9080/TCP 30s
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 14m
productpage ClusterIP 10.101.17.75 <none> 9080/TCP 27s
ratings ClusterIP 10.109.145.216 <none> 9080/TCP 30s
reviews ClusterIP 10.110.51.199 <none> 9080/TCP 30s
root@ubuntu:/home/ubuntu/istio-1.16.0# kubectl get pod
NAME READY STATUS RESTARTS AGE
details-v1-6758dd9d8d-vpzvv 2/2 Running 0 15m
productpage-v1-797d845774-kxwr7 2/2 Running 0 15m
ratings-v1-f849dc6d-wwfsb 2/2 Running 0 15m
reviews-v1-74fb8fdbd8-k4c2x 2/2 Running 0 15m
reviews-v2-58d564d4db-54kj5 2/2 Running 0 15m
reviews-v3-55545c459b-6wkzc 2/2 Running 0 15m
root@ubuntu:/home/ubuntu/istio-1.16.0# kubectl exec "$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}')" -c ratings -- curl -sS productpage:9080/productpage | grep -o "<title>.*</title>"
<title>Simple Bookstore App</title>
root@ubuntu:/home/ubuntu/istio-1.16.0# kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml
gateway.networking.istio.io/bookinfo-gateway created
virtualservice.networking.istio.io/bookinfo created
root@ubuntu:/home/ubuntu/istio-1.16.0# istioctl analyze
✔ No validation issues found when analyzing namespace: default.
root@ubuntu:/home/ubuntu/istio-1.16.0# kubectl get svc istio-ingressgateway -n istio-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
istio-ingressgateway LoadBalancer 10.99.213.194 <pending> 15021:30257/TCP,80:31669/TCP,443:32003/TCP,31400:31287/TCP,15443:30060/TCP 31m
root@ubuntu:/home/ubuntu/istio-1.16.0# export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')
root@ubuntu:/home/ubuntu/istio-1.16.0# export SECURE_INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="https")].nodePort}')
root@ubuntu:/home/ubuntu/istio-1.16.0# export INGRESS_HOST=$(kubectl get po -l istio=ingressgateway -n istio-system -o jsonpath='{.items[0].status.hostIP}')
root@ubuntu:/home/ubuntu/istio-1.16.0# export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT
root@ubuntu:/home/ubuntu/istio-1.16.0# echo "$GATEWAY_URL"
192.168.0.164:31669
root@ubuntu:/home/ubuntu/istio-1.16.0# echo "http://$GATEWAY_URL/productpage"
http://192.168.0.164:31669/productpage
check if envoy can access logs
root@ubuntu:/home/ubuntu/istio-1.16.0# kubectl apply -f samples/sleep/sleep.yaml
serviceaccount/sleep created
service/sleep created
deployment.apps/sleep created
root@ubuntu:/home/ubuntu/istio-1.16.0# export SOURCE_POD=$(kubectl get pod -l app=sleep -o jsonpath={.items..metadata.name})
root@ubuntu:/home/ubuntu/istio-1.16.0# kubectl apply -f samples/httpbin/httpbin.yaml
serviceaccount/httpbin created
service/httpbin created
deployment.apps/httpbin created
root@ubuntu:/home/ubuntu/istio-1.16.0# cat telemetry.yaml
apiVersion: telemetry.istio.io/v1alpha1
kind: Telemetry
metadata:
name: mesh-default
namespace: istio-system
spec:
accessLogging:
- providers:
- name: envoy
root@ubuntu:/home/ubuntu/istio-1.16.0# kubectl apply -f telemetry.yaml
telemetry.telemetry.istio.io/mesh-default created
root@ubuntu:/home/ubuntu/istio-1.16.0# kubectl exec "$SOURCE_POD" -c sleep -- curl -sS -v httpbin:8000/status/418
* Trying 10.105.37.52:8000...
* Connected to httpbin (10.105.37.52) port 8000 (#0)
> GET /status/418 HTTP/1.1
> Host: httpbin:8000
> User-Agent: curl/7.86.0-DEV
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 503 Service Unavailable
< content-length: 19
< content-type: text/plain
< date: Tue, 22 Nov 2022 13:04:30 GMT
< server: envoy
<
{ [19 bytes data]
* Connection #0 to host httpbin left intact
no healthy upstream
root@ubuntu:/home/ubuntu/istio-1.16.0# kubectl logs -l app=sleep -c istio-proxy
2024-04-14T13:01:25.322273Z info ads XDS: Incremental Pushing:0 ConnectedEndpoints:2 Version:
2024-04-14T13:01:25.322590Z info cache returned workload trust anchor from cache ttl=23h59m59.677420102s
2024-04-14T13:01:25.322585Z info cache returned workload trust anchor from cache ttl=23h59m59.677434565s
2024-04-14T13:01:25.322902Z info cache returned workload certificate from cache ttl=23h59m59.677122269s
2024-04-14T13:01:25.323744Z info ads SDS: PUSH request for node:sleep-784d69f945-lc9gf.default resources:1 size:4.0kB resource:default
2024-04-14T13:01:25.323854Z info ads SDS: PUSH request for node:sleep-784d69f945-lc9gf.default resources:1 size:1.1kB resource:ROOTCA
2024-04-14T13:01:25.324195Z info cache returned workload trust anchor from cache ttl=23h59m59.675829232s
2024-04-14T13:01:26.515121Z info Readiness succeeded in 3.513115609s
2024-04-14T13:01:26.516210Z info Envoy proxy is ready
[2024-04-14T13:04:30.679Z] "GET /status/418 HTTP/1.1" 503 UH no_healthy_upstream - "-" 0 19 0 - "-" "curl/7.86.0-DEV" "b9c7eb47-e19e-9451-af98-8235050ddd54" "httpbin:8000" "-" outbound|8000||httpbin.default.svc.cluster.local - 10.105.37.52:8000 10.244.0.13:38310 - default
root@ubuntu:/home/ubuntu/istio-1.16.0# kubectl logs -l app=httpbin -c istio-proxy
2024-04-14T13:06:29.293568Z info cache Root cert has changed, start rotating root cert
2024-04-14T13:06:29.293617Z info ads XDS: Incremental Pushing:0 ConnectedEndpoints:2 Version:
2024-04-14T13:06:29.293842Z info cache returned workload certificate from cache ttl=23h59m59.706182487s
2024-04-14T13:06:29.293892Z info cache returned workload trust anchor from cache ttl=23h59m59.706117395s
2024-04-14T13:06:29.294115Z info cache returned workload trust anchor from cache ttl=23h59m59.705898858s
2024-04-14T13:06:29.294766Z info ads SDS: PUSH request for node:httpbin-74fb669cc6-tbxnk.default resources:1 size:4.0kB resource:default
2024-04-14T13:06:29.294914Z info ads SDS: PUSH request for node:httpbin-74fb669cc6-tbxnk.default resources:1 size:1.1kB resource:ROOTCA
2024-04-14T13:06:29.295187Z info cache returned workload trust anchor from cache ttl=23h59m59.704838858s
2024-04-14T13:06:31.346792Z info Readiness succeeded in 3.531184609s
2024-04-14T13:06:31.347862Z info Envoy proxy is ready