Thứ tư, 15/08/2018 | 00:00 GMT+7

Cách cài đặt phần mềm trên Kubernetes Cluster bằng Trình quản lý gói Helm 2

Helm là trình quản lý gói cho Kubernetes cho phép các nhà phát triển và nhà điều hành dễ dàng cấu hình và triển khai các ứng dụng trên các cụm Kubernetes.

Trong hướng dẫn này, ta sẽ cài đặt Helm và sử dụng nó để cài đặt, cấu hình lại, khôi phục, sau đó xóa một version của ứng dụng Control panel Kubernetes . Control panel là một Kubernetes GUI chính thức dựa trên web.

Để có cái nhìn tổng quan về khái niệm Helm và hệ sinh thái đóng gói của nó, vui lòng đọc bài viết Giới thiệu về Helm của ta .

Lưu ý: Hướng dẫn này bao gồm quy trình làm việc để cài đặt phần mềm trên các cụm Kubernetes với version 2 của trình quản lý gói Helm, yêu cầu Tiller. Nếu bạn đang làm việc với version 3 của Helm, hãy làm theo hướng dẫn của ta Cách cài đặt phần mềm trên Kubernetes Cluster bằng Trình quản lý gói Helm 3 .

Yêu cầu

Đối với hướng dẫn này, bạn cần :

  • Một cụm Kubernetes 1.8+ có bật kiểm soát truy cập dựa trên role (RBAC).
  • Công cụ dòng lệnh kubectl được cài đặt trên máy local của bạn, được cấu hình để kết nối với cụm của bạn. Bạn có thể đọc thêm về cách cài đặt kubectl trong tài liệu chính thức .

    Bạn có thể kiểm tra kết nối của bạn bằng lệnh sau:

    • kubectl cluster-info

    Nếu bạn không thấy lỗi, bạn đã kết nối với cụm. Nếu bạn truy cập nhiều cụm bằng kubectl , hãy đảm bảo xác minh bạn đã chọn đúng ngữ cảnh cụm:

    • kubectl config get-contexts
    Output
    CURRENT NAME CLUSTER AUTHINFO NAMESPACE * do-nyc1-k8s-example do-nyc1-k8s-example do-nyc1-k8s-example-admin docker-for-desktop docker-for-desktop-cluster docker-for-desktop

    Trong ví dụ này, dấu hoa thị ( * ) cho biết ta được kết nối với cụm do-nyc1-k8s-example . Để chuyển cụm chạy:

    • kubectl config use-context context-name

Khi bạn đã kết nối với đúng cụm, hãy tiếp tục Bước 1 để bắt đầu cài đặt Helm.

Bước 1 - Cài đặt Helm

Đầu tiên, ta sẽ cài đặt tiện ích dòng lệnh helm trên máy local của ta . Helm cung cấp một tập lệnh xử lý quá trình cài đặt trên MacOS, Windows hoặc Linux.

Thay đổi thành folder có thể ghi và download tập lệnh từ repository GitHub của Helm:

  • cd /tmp
  • curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get > install-helm.sh

Làm cho tập lệnh có thể thực thi được với chmod :

  • chmod u+x install-helm.sh

Đến đây, bạn có thể sử dụng editor yêu thích của bạn để mở tập lệnh và kiểm tra đảm bảo rằng nó an toàn. Khi thấy ổn , hãy chạy nó:

  • ./install-helm.sh

Bạn có thể được yêu cầu nhập password của bạn . Cung cấp nó và nhấn ENTER .

Output
helm installed into /usr/local/bin/helm Run 'helm init' to configure helm.

Tiếp theo, ta sẽ kết thúc cài đặt bằng cách cài đặt một số thành phần Helm trên cụm của ta .

Bước 2 - Cài đặt Tiller

Tiller là bạn đồng hành với lệnh helm chạy trên cụm của bạn, nhận lệnh từ helm và giao tiếp trực tiếp với Kubernetes API để thực hiện công việc thực tế là tạo và xóa tài nguyên. Để cung cấp cho Tiller các quyền cần thiết để chạy trên cụm, ta sẽ tạo một tài nguyên account serviceaccount Kubernetes.

Lưu ý: Ta sẽ ràng buộc account serviceaccount này với role cụm administrator cụm. Điều này sẽ cung cấp cho user siêu user dịch vụ tiller quyền truy cập vào cụm và cho phép nó cài đặt tất cả các loại tài nguyên trong tất cả các không gian tên. Điều này là tốt cho việc khám phá Helm, nhưng bạn có thể cần có một cấu hình khóa hơn cho một cụm Kubernetes production .

Vui lòng tham khảo tài liệu Helm RBAC chính thức để biết thêm thông tin về cách cài đặt các tình huống RBAC khác nhau cho Tiller.

Tạo account serviceaccount xới đất :

  • kubectl -n kube-system create serviceaccount tiller

Tiếp theo, ràng buộc các cày serviceaccount đến role cụm-admin:

  • kubectl create clusterrolebinding tiller --clusterrole cluster-admin --serviceaccount=kube-system:tiller

Bây giờ ta có thể chạy helm init , cài đặt Tiller trên cụm của ta , cùng với một số tác vụ quản lý local chẳng hạn như download chi tiết repo ổn định :

  • helm init --service-account tiller
Output
. . . Tiller (the Helm server-side component) has been installed into your Kubernetes Cluster. Please note: by default, Tiller is deployed with an insecure 'allow unauthenticated users' policy. For more information on securing your installation see: https://docs.helm.sh/using_helm/#securing-your-helm-installation Happy Helming!

Để xác minh Tiller đang chạy, hãy liệt kê các group trong không gian tên hệ thống kube :

  • kubectl get pods --namespace kube-system
Output
NAME READY STATUS RESTARTS AGE . . . kube-dns-64f766c69c-rm9tz 3/3 Running 0 22m kube-proxy-worker-5884 1/1 Running 1 21m kube-proxy-worker-5885 1/1 Running 1 21m kubernetes-dashboard-7dd4fc69c8-c4gwk 1/1 Running 0 22m tiller-deploy-5c688d5f9b-lccsk 1/1 Running 0 40s

Tên group Tiller bắt đầu bằng tiền tố tiller-deploy- .

Bây giờ ta đã cài đặt cả hai thành phần Helm, ta đã sẵn sàng sử dụng helm để cài đặt ứng dụng đầu tiên của bạn .

Bước 3 - Cài đặt Biểu đồ Helm

Gói phần mềm Helm được gọi là biểu đồ . Helm được cấu hình sẵn với một repository biểu đồ được quản lý có tên là ổn định . Bạn có thể duyệt qua các biểu đồ có sẵn trong repo GitHub của họ . Ta sẽ cài đặt Kubernetes Dashboard làm ví dụ.

Sử dụng helm để cài đặt gói kubernetes-dashboard từ repo stable :

  • helm install stable/kubernetes-dashboard --name dashboard-demo
Output
NAME: dashboard-demo LAST DEPLOYED: Wed Aug 8 20:11:07 2018 NAMESPACE: default STATUS: DEPLOYED . . .

Lưu ý dòng NAME , được đánh dấu trong kết quả ví dụ trên. Trong trường hợp này, ta đã chỉ định tên dashboard-demo . Đây là tên của bản phát hành của ta . Bản phát hành Helm là một triển khai đơn lẻ của một biểu đồ với một cấu hình cụ thể. Bạn có thể triển khai nhiều bản phát hành của cùng một biểu đồ, mỗi bản có cấu hình riêng.

Nếu bạn không chỉ định tên bản phát hành của riêng mình bằng --name , Helm sẽ tạo một tên ngẫu nhiên cho bạn.

Ta có thể yêu cầu Helm cung cấp danh sách các bản phát hành trên cụm này:

  • helm list
Output
NAME REVISION UPDATED STATUS CHART NAMESPACE dashboard-demo 1 Wed Aug 8 20:11:11 2018 DEPLOYED kubernetes-dashboard-0.7.1 default

Bây giờ ta có thể sử dụng kubectl để xác minh một dịch vụ mới đã được triển khai trên cụm:

  • kubectl get services
Output
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE dashboard-demo-kubernetes-dashboard ClusterIP 10.32.104.73 <none> 443/TCP 51s kubernetes ClusterIP 10.32.0.1 <none> 443/TCP 34m

Lưu ý theo mặc định, tên dịch vụ tương ứng với bản phát hành của ta là sự kết hợp giữa tên bản phát hành Helm và tên biểu đồ.

Bây giờ ta đã triển khai ứng dụng, hãy sử dụng Helm để thay đổi cấu hình của nó và cập nhật việc triển khai.

Bước 4 - Cập nhật bản phát hành

Lệnh helm upgrade được dùng để nâng cấp bản phát hành với biểu đồ mới hoặc cập nhật hoặc cập nhật các tùy chọn cấu hình của nó.

Ta sẽ thực hiện một thay đổi đơn giản đối với dashboard-demo phát hành dashboard-demo mình để chứng minh quá trình cập nhật và khôi phục: ta sẽ cập nhật tên của dịch vụ trang tổng quan thành chỉ dashboard , thay vì dashboard-demo-kubernetes-dashboard .

Biểu đồ kubernetes-dashboard cung cấp tùy chọn cấu hình fullnameOverride để kiểm soát tên dịch vụ. Hãy chạy helm upgrade hệ điều hành với bộ tùy chọn này:

  • helm upgrade dashboard-demo stable/kubernetes-dashboard --set fullnameOverride="dashboard"

Bạn sẽ thấy kết quả tương tự như bước helm install hướng helm install đầu tiên.

Kiểm tra xem các dịch vụ Kubernetes của bạn có phản ánh các giá trị được cập nhật hay không:

  • kubectl get services
Output
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.32.0.1 <none> 443/TCP 36m dashboard ClusterIP 10.32.198.148 <none> 443/TCP 40s

Tên dịch vụ của ta đã được cập nhật lên giá trị mới.

Lưu ý: Đến đây, bạn có thể cần thực sự tải Control panel Kubernetes trong trình duyệt của bạn và kiểm tra nó. Để làm như vậy, trước tiên hãy chạy lệnh sau:

  • kubectl proxy

Điều này tạo ra một proxy cho phép bạn truy cập tài nguyên cụm từ xa từ máy tính local của bạn. Dựa trên các hướng dẫn trước, dịch vụ console của bạn được đặt tên là kubernetes-dashboard và nó đang chạy trong không gian tên default . Đến đây bạn có thể truy cập trang tổng quan tại url sau:

http://localhost:8001/api/v1/namespaces/default/services/https:dashboard:/proxy/ 

Nếu cần, hãy thay thế tên dịch vụ và không gian tên của bạn cho các phần được đánh dấu. Hướng dẫn thực sự sử dụng trang tổng quan nằm ngoài phạm vi của hướng dẫn này, nhưng bạn có thể đọc tài liệu Trang tổng quan Kubernetes chính thức để biết thêm thông tin.

Tiếp theo, ta sẽ xem xét khả năng khôi phục các bản phát hành của Helm.

Bước 5 - Quay lại bản phát hành

Khi ta cập nhật dashboard-demo phát hành dashboard-demo ở bước trước, ta đã tạo bản sửa đổi thứ hai của bản phát hành. Helm giữ lại tất cả các chi tiết của các bản phát hành trước trong trường hợp bạn cần quay lại cấu hình hoặc biểu đồ trước đó.

Sử dụng helm list để kiểm tra lại bản phát hành:

  • helm list
Output
NAME REVISION UPDATED STATUS CHART NAMESPACE dashboard-demo 2 Wed Aug 8 20:13:15 2018 DEPLOYED kubernetes-dashboard-0.7.1 default

Cột REVISION cho ta biết rằng đây là bản sửa đổi thứ hai.

Sử dụng tính năng helm rollback hướng dẫn để quay trở lại bản sửa đổi đầu tiên:

  • helm rollback dashboard-demo 1

Bạn sẽ thấy kết quả sau, cho biết rằng quá trình khôi phục đã thành công:

Output
Rollback was a success! Happy Helming!

Đến đây, nếu bạn chạy lại kubectl get services , bạn sẽ nhận thấy rằng tên dịch vụ đã thay đổi về giá trị trước đó. Helm đã triển khai lại ứng dụng với cấu hình của bản sửa đổi 1.

Tiếp theo, ta sẽ xem xét việc xóa các bản phát hành với Helm.

Bước 6 - Xóa bản phát hành

Có thể xóa các bản phát hành Helm bằng lệnh helm delete Helm:

  • helm delete dashboard-demo
Output
release "dashboard-demo" deleted

Mặc dù bản phát hành đã bị xóa và ứng dụng console không còn chạy nữa, Helm lưu tất cả thông tin sửa đổi trong trường hợp bạn muốn triển khai lại bản phát hành. Nếu bạn đã cố gắng helm install dashboard-demo phát hành dashboard-demo mới ngay bây giờ, bạn sẽ gặp lỗi:

Error: a release named dashboard-demo already exists. 

Nếu bạn sử dụng cờ --deleted để liệt kê các bản phát hành đã xóa của bạn , bạn sẽ thấy rằng bản phát hành vẫn còn tồn tại:

  • helm list --deleted
Output
NAME REVISION UPDATED STATUS CHART NAMESPACE dashboard-demo 3 Wed Aug 8 20:15:21 2018 DELETED kubernetes-dashboard-0.7.1 default

Để thực sự xóa bản phát hành và xóa tất cả các bản sửa đổi cũ, hãy sử dụng cờ --purge với lệnh helm delete :

  • helm delete dashboard-demo --purge

Bây giờ bản phát hành đã thực sự bị xóa và bạn có thể sử dụng lại tên bản phát hành.

Kết luận

Trong hướng dẫn này, ta đã cài đặt helm công cụ dòng lệnh và nó tiller phục vụ đồng hành. Ta cũng đã khám phá cách cài đặt, nâng cấp, khôi phục và xóa các bản phát hành và biểu đồ Helm.

Để biết thêm thông tin về Helm và biểu đồ Helm, vui lòng xem tài liệu chính thức của Helm .


Tags:

Các tin liên quan