16/09/2018, 13:13

Cách cài đặt phần mềm trên các cụm Kubernetes với trình quản lý gói Helm

Giới thiệu Helm là một trình quản lý gói cho Kubernetes cho phép các nhà phát triển và các nhà khai thác 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, chúng ta sẽ thiết lập Helm và sử dụng nó để cài đặt, cấu hình lại, khôi phục, sau đó xóa một thể ...

Giới thiệu

Helm là một trình quản lý gói cho Kubernetes cho phép các nhà phát triển và các nhà khai thác 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, chúng ta sẽ thiết lập Helm và sử dụng nó để cài đặt, cấu hình lại, khôi phục, sau đó xóa một thể hiện của ứng dụng Bảng điều khiển Kubernetes. Bảng điều khiển là một Kubernetes GUI dựa trên web chính thức.

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

Điều kiện tiên quyết

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

  • Một cụm Kubernetes 1.8+ với điều khiển truy cập dựa trên vai trò (RBAC) được kích hoạt.
  • Các kubectl công cụ dòng lệnh được cài đặt trên máy cục bộ của bạn, được định 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à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 mình 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 với kubectl, hãy chắc chắn xác minh rằng 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-desktop

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

    kubectl config use-context context-name

Khi bạn được kết nối với cụm chính xác, 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 chúng ta sẽ cài đặt helm tiện ích dòng lệnh trên máy cục bộ của chúng tôi. Helm cung cấp một kịch bản xử lý quá trình cài đặt trên MacOS, Windows hoặc Linux.

Chuyển sang thư mục có thể ghi và tải xuống tập lệnh từ kho lưu trữ 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 chạy được với chmod:

chmod u+x install-helm.sh

Tại thời điểm này, bạn có thể sử dụng trình soạn thảo văn bản yêu thích của mình để mở tập lệnh và kiểm tra nó để đảm bảo nó an toàn. Khi bạn hài lòng, hãy chạy nó:

./install-helm.sh

Bạn có thể được nhắc nhập mật khẩu của bạn. Cung cấp và nhấn ENTER.

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

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

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

Tiller là bạn đồng hành với helm lệnh 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 tạo và xóa tài nguyên thực tế. Để cung cấp cho Tiller các quyền cần thiết để chạy trên cụm, chúng ta sẽ tạo ra một Kubernetes serviceaccount nguồn.

Chú thích: Chúng tôi sẽ ràng buộc điều này serviceaccount đến cluster-admin vai trò nhóm. Điều này sẽ cung cấp cho tiller dịch vụ superuser 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 để khám phá Helm, nhưng bạn có thể muốn có một cấu hình bị khóa hơn cho một cụm Kubernetes sản xuất.

Vui lòng tham khảo trước tài liệu chính thức của Helm RBAC để biết thêm thông tin về việc thiết lập các kịch bản RBAC khác nhau cho Tiller.

Tạo tiller serviceaccount:

kubectl -n kube-system create serviceaccount tiller

Tiếp theo, ràng buộc tiller serviceaccount đến cluster-admin vai trò:

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

Bây giờ chúng ta có thể chạy helm init, cài đặt Tiller trên cụm của chúng tôi, cùng với một số nhiệm vụ vệ sinh cục bộ như tải xuống ổn định chi tiết repo:

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 rằng Tiller đang chạy, hãy liệt kê các nhóm tronghệ thống kube không gian tên:

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 nhóm Tiller bắt đầu bằng tiền tố tiller-deploy-.

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

Bước 3 - Cài đặt mộ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 kho lưu trữ biểu đồ được sắp xếp được gọi là ổn định. Bạn có thể duyệt qua các biểu đồ có sẵn trong repo GitHub của họ. Chúng tôi sẽ cài đặt Bảng điều khiển Kubernetes làm ví dụ.

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

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 ý NAME dòng, được đánh dấu trong đầu ra ví dụ trên. Trong trường hợp này, chúng tôi đã chỉ định tên dashboard-demo. Đây là tên của chúng tôi giải phóng. Một Helm giải phóng là một triển khai duy nhất của một biểu đồ có 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 cách sử dụng --name, Helm sẽ tạo một tên ngẫu nhiên cho bạn.

Chúng tôi có thể yêu cầu Helm cho một 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ờ chúng ta có thể sử dụng kubectl để xác minh rằng 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 ý rằng theo mặc định tên dịch vụ tương ứng với bản phát hành của chúng tôi là sự kết hợp của tên bản phát hành Helm và tên biểu đồ.

Bây giờ chúng 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 triển khai.

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

Các helm upgrade lệnh có thể được sử 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ó.

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

Các kubernetes-dashboard biểu đồ cung cấp fullnameOverride tùy chọn cấu hình để kiểm soát tên dịch vụ. Hãy chạy helm upgrade 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ả đầu ra tương tự như ban đầu helm install bậc thang.

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 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 chúng tôi đã được cập nhật lên giá trị mới.

Chú thích: Tại thời điểm này, bạn có thể thực sự tải Bảng điều khiển 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 cục bộ của bạn. Dựa trên các hướng dẫn trước, dịch vụ trang tổng quan của bạn được đặt tên kubernetes-dashboard và nó đang chạy trong default không gian tên. Bây giờ 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 riêng 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 Bảng điều khiển Kubernetes chính thức để biết thêm thông tin.

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

Bước 5 - Phát hành bản phát hành

Khi chúng tôi cập nhật dashboard-demo phát hành ở bước trước, chúng tôi đã tạo một giây sửa đổi 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 việc phát hành một lần nữa:

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ác REVISION cột cho chúng ta biết rằng đây là phiên bản thứ hai.

Sử dụng helm rollback để quay lại bản sửa đổi đầu tiên:

helm rollback dashboard-demo 1

Bạn sẽ thấy đầu ra sau, cho biết rằng rollback đã thành công:

OutputRollback was a success! Happy Helming!

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

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

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

Các bản phát hành Helm có thể bị xóa với helm delete chỉ huy:

helm delete dashboard-demo

Outputrelease "dashboard-demo" deleted

Mặc dù bản phát hành đã bị xóa và ứng dụng bảng điều khiển 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 một cái mới dashboard-demo phát hành 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 --deleted gắn cờ để 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 xung quanh:

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

Đến có thật không xóa bản phát hành và xóa tất cả các bản sửa đổi cũ, sử dụng --purge gắn cờ với helm delete chỉ huy:

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.

Phần kết luận

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

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

0