Bài viết thuộc series “Service Mesh on Kubernetes”
Giới thiệu
Ở bài trước ta đã tìm hiểu về khái niệm Service Mesh và Isito là gì. Từ bài này trở đi chúng ta sẽ đi vào thực hành, ở bài đầu tiên ta sẽ thực hiện cài đặt Istio vào trong Kubernetes.
Series này mình tham khảo từ cuốn Istio In Action, các bạn có thể đọc trước mà không cần phải đợi series của mình nha. Một điểm lưu ý là các bạn cần có một Kubernetes Cluster để làm được series này.
Những cách để cài đặt Istio
Để cài Istio vào Kubernetes ta có thể sử dụng một trong 3 cách:
- Dùng công cụ istioctl
- Dùng istio-operator
- Dùng Helm để cài Istio Helm Chart
Ở bài này chúng ta sẽ dùng istioctl
, vì công cụ istioctl
không chỉ giúp ta cài đặt Istio vào Kubernetes, mà khi ta cài xong thì istioctl
còn giúp ta tương tác với các thành phần của Istio ở trong Kubernetes.
Cài đặt istioctl
Để cài istioctl các bạn truy cập trang Istio Releases và kiểm tra phiên bản mới nhất. Sau đó ở trên máy chủ mà bạn có thể tương tác được với Kubernetes Cluster ta làm các bước như sau.
Dùng curl
để tải phiên bản Istio mới nhất, ở series này mình dùng bản 1.15.1
.
curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.15.1 sh -
Di chuyển istioctl
vào thư mục bin
:
mv istio-1.15.1/bin/istioctl /user/local/bin
Chạy câu lệnh để kiểm tra ta đã cài đặt thành công:
istioctl version
1.15.1
Sử dụng istioctl để cài đặt Istio
Trước khi cài Istio ta chạy câu lệnh sau để kiểm tra Kubernetes Cluster của ta có đủ điều kiện để cài được Isito chưa, chạy câu lệnh sau:
istioctl x precheck
✔ No issues found when checking the cluster. Istio is safe to install or upgrade!
To get started, check out https://istio.io/latest/docs/setup/getting-started/
Nếu kết quả hiện được giống như trên thì Kubernetes Cluster của bạn đã đủ điều kiện, chạy câu lệnh tiếp theo để cài Istio:
istioctl install --set profile=demo -y
✔ Istio core installed
✔ Istiod installed
✔ Egress gateways installed
✔ Ingress gateways installed
✔ Installation complete
Bạn có thể cài Istio với các profile
khác nhau, ở series này mình dùng profile=demo
, sự khác biệt của các profile
.
Sau khi istioctl
chạy xong, bạn gõ câu lệnh kubectl
liệt kê ra toàn bộ Pod ở istio-system namespace
thì sẽ thấy các thành phần của Istio.
kubectl get pod -n istio-system
NAME READY STATUS RESTARTS AGE
istio-egressgateway-65b6c9d675-4gf7d 1/1 Running 0 2m45s
istio-ingressgateway-6984cfd6ff-b7tql 1/1 Running 0 2m45s
istiod-74bd9b9864-t7sn9 1/1 Running 0 3m11s
Hoặc bạn có thể chạy cậu lệnh verify-install
để xác định tất cả các thành phần của Istio đã được cài thành công chưa.
istioctl verify-install
Ta đã thành công trong việc cài đặt Istio vào Kubernetes. Bên cạnh các thành phần có sẵn thì Istio còn có thêm một số thành phần phụ để hỗ trợ ta trong quá trình vận hành và đo đạc ứng dụng, ví dụ như là Prometheus và Jaeger trong Istio.
Jaeger giúp ta đo được thời gian của từng request trong Kuberntes khi sử dụng Istio.
Cài đặt các thành phần phụ
Để dùng cho series này thì ta cài các thành phần phụ ở bản đơn giản nhất, lưu ý là không nên dùng cho môi trường production.
Cài đặt Prometheus Addons:
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.15/samples/addons/prometheus.yaml
Cài đặt Grafana Addons:
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.15/samples/addons/grafana.yaml
Cài đặt Jaeger Addons:
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.15/samples/addons/jaeger.yaml
Các bạn xem cách cài cho môi trường Production ở hướng dẫn này. Sau khi cài xong thì kiến trúc của Istio sẽ như hình minh họa bên dưới.
Bây giờ thì ta đã có thể viết tệp tin cấu hình để tạo các resource của Istio, ví dụ VirtualService ở trong Istio:
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: reviews-route
spec:
hosts:
- reviews.prod.svc.cluster.local
http:
- headers:
request:
set:
test: "true"
route:
- destination:
host: reviews.prod.svc.cluster.local
subset: v2
weight: 25
- destination:
host: reviews.prod.svc.cluster.local
subset: v1
headers:
response:
remove:
- foo
weight: 75
Ở trên là cấu hình của VirtualService cho phép ta thực hiện A/B Testing lên trên Service một cách rất dễ dàng.
Kết luận
Vậy là ta đã cài Istio vào Kuberntes và các thành phần phụ thành công, ở bài tiếp theo ta sẽ bắt đầu tìm hiểu và làm ví dụ đầu tiên về cách sử dụng các resource
của Istio.
Tác giả @Quân Huỳnh
Nếu bài viết có gì sai hoặc cần cập nhật thì liên hệ Admin.
Tham gia nhóm chat của DevOps VN tại Telegram.
Kém tiếng Anh và cần nâng cao trình độ giao tiếp: Tại sao bạn học không hiệu quả?