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 đặtkubectltrong 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
 
OutputCURRENT 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-desktopTrong ví dụ này, dấu hoa thị (
*) cho biết ta được kết nối với cụmdo-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 .
Outputhelm 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 
 
OutputNAME                                    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 
 
OutputNAME:   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 
 
OutputNAME            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 
 
OutputNAME                                   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 
 
OutputNAME                   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 
 
OutputNAME            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:
OutputRollback 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 
 
Outputrelease "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 
 
OutputNAME            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 .
Các tin liên quan

