Ngày 53 - Tổng quan về Rancher - Thực hành
Trong bài viết này, chúng ta sẽ đề cập tới Rancher - công cụ quản lý cluster với giao diện người dùng để các nhóm vận hành có thể quản lý các cluster một cách tốt hơn.
Nội dung
- 90 Ngày DevOps 🚀
- Ngày 1 - Giới thiệu
- Ngày 2 - Trách nhiệm của kỹ sư DevOps
- Ngày 3 - Vòng đời DevOps - Tập trung vào ứng dụng
- Ngày 4 - DevOps & Agile
- Ngày 5 - Kế hoạch > Viết mã > Xây dựng > Kiểm thử > Phát hành > Triển khai > Vận hành > Giám sát >
- Ngày 6 - DevOps - Những câu chuyện thực tế
- Ngày 7 - Bức tranh toàn cảnh: DevOps & Học một ngôn ngữ lập trình
- Ngày 8 - Thiết lập môi trường DevOps cho Go & Hello World
- Ngày 9 - Giải thích mã Hello World
- Ngày 10 - Không gian làm việc của Go
- Ngày 11 - Biến, hằng số & kiểu dữ liệu
- Ngày 12 - Nhận thông tin đầu vào sử dụng con trỏ và chương trình hoàn thiện
- Ngày 13 - Tweet tiến trình của bạn với ứng dụng mới của chúng ta
- Ngày 14 - Bức tranh lớn: DevOps và Linux
- Ngày 15 - Các lệnh Linux cho DevOps (thực tế là tất cả mọi người)
- Ngày 16 - Quản lý Hệ thống Linux, Hệ thống Tệp & Lưu trữ
- Ngày 17 - Text Editors - nano vs vim
- Ngày 18 - SSH & máy chủ web (LAMP)
- Ngày 19 - Tự động hóa các tác vụ với các tập lệnh bash
- Ngày 20 - Thiết lập máy trạm phát triển - những điều tuyệt vời
- Ngày 21 - Bức tranh toàn cảnh: DevOps và Mạng máy tính
- Ngày 22 - Mô hình 7 Lớp OSI
- Ngày 23 - Giao thức mạng
- Ngày 24 - Tự Động Hóa Thiết Lập Mạng
- Ngày 25 - Lập trình Python trong tự động hóa mạng
- Ngày 26 - Xây dựng Lab
- Ngày 27 - Thực hành với Python
- Ngày 28 - Bức tranh toàn cảnh: DevOps & The Cloud
- Ngày 29 - Kiến thức cơ bản về Microsoft Azure
- Ngày 30 - Mô hình bảo mật Microsoft Azure
- Ngày 31 - Mô hình Điện toán Microsoft Azure
- Ngày 32 - Mô hình lưu trữ và cơ sở dữ liệu Microsoft Azure
- Ngày 33 - Mô hình Mạng Microsoft Azure + Quản lý Azure
- Ngày 34 - Thực hành với Microsoft Azure
- Ngày 35 - Bức tranh toàn cảnh: Git - Quản lý phiên bản
- Ngày 36 - Cài đặt & Cấu hình Git
- Ngày 37 - Giới thiệu về Git
- Ngày 38 - Staging & Changing
- Ngày 39 - Xem, unstaging, loại bỏ & khôi phục
- Ngày 40 - Mạng xã hội dành cho code
- Ngày 41 - Quy trình làm việc với mã nguồn mở
- Ngày 42 - Bức tranh toàn cảnh: Containers
- Ngày 43 - Docker là gì & Cài đặt
- Ngày 44 - Docker image & Thực hành với Docker Desktop
- Ngày 45 - Phân tích một Docker Image
- Ngày 46 - Docker Compose
- Ngày 47 - Docker Networking & Security
- Ngày 48 - Các lựa chọn thay thế cho Docker
- Ngày 49 - Bức tranh toàn cảnh: Kubernetes
- Ngày 50 - Chọn nền tảng chạy Kubernetes
- Ngày 51 - Triển khai Kubernetes cluster đầu tiên
- Ngày 52 - Thiết lập Kubernetes cluster đa node
- Ngày 53 - Tổng quan về Rancher - Thực hành
- Ngày 54 - Triển khai ứng dụng Kubernetes
- Ngày 55 - State và Ingress trong Kubernetes
- Ngày 56 - Bức tranh toàn cảnh: Cơ sở hạ tầng dưới dạng mã (IaC)
- Ngày 57 - Giới thiệu về Terraform
- Ngày 58 - Ngôn ngữ cấu hình HashiCorp (HCL)
- Ngày 59 - Tạo máy ảo với Terraform và biến
- Ngày 60 - Docker Containers, Provisioners & Modules
- Ngày 61 - Kubernetes & Đa môi trường
- Ngày 62 - Kiểm thử, Công cụ và Các phương pháp thay thế
- Ngày 63 - Bức tranh toàn cảnh: Quản lý cấu hình
- Ngày 64 - Ansible: Bắt đầu
- Ngày 65 - Ansible Playbooks
- Ngày 66 - Tiếp tục với Ansible Playbooks...
- Ngày 67 - Sử dụng Role & Triển khai Loadbalancer
- Ngày 68 - Tags, Variables, Inventory & Database Server config
- Ngày 69 - Tất cả những thứ còn lại của Ansible - Automation Controller, AWX, Vault
- Ngày 70 - Bức tranh toàn cảnh: CI/CD Pipelines
- Ngày 71 - Jenkins là gì?
- Ngày 72 - Làm quen với Jenkins
- Ngày 73 - Xây dựng Jenkins pipeline
- Ngày 74 - Hello World - Jenkinsfile App Pipeline
- Ngày 75 - Tổng quan về GitHub Actions
- Ngày 76 - Tổng quan về ArgoCD
- Ngày 77 - Bức tranh toàn cảnh: Giám sát
- Ngày 78 - Thực hành với công cụ giám sát
- Ngày 79 - Bức tranh toàn cảnh: Quản lý log
- Ngày 80 - ELK Stack
- Ngày 81 - Fluentd & FluentBit
- Ngày 82 - EFK Stack
- Ngày 83 - Trực quan hóa dữ liệu - Grafana
- Ngày 84 - Bức tranh toàn cảnh: Quản lý dữ liệu
- Ngày 85 - Dịch vụ dữ liệu
- Ngày 86 - Sao lưu tất cả các nền tảng
- Ngày 87 - Thực hành với sao lưu & phục hồi
- Ngày 88 - Sao lưu theo hướng tập trung vào ứng dụng
- Ngày 89 - Khôi phục thảm họa (DR)
- Ngày 90 - Dữ liệu & ứng dụng: Tính di động
Nội dung khoá học
- 90 Ngày DevOps 🚀
- Ngày 1 - Giới thiệu
- Ngày 2 - Trách nhiệm của kỹ sư DevOps
- Ngày 3 - Vòng đời DevOps - Tập trung vào ứng dụng
- Ngày 4 - DevOps & Agile
- Ngày 5 - Kế hoạch > Viết mã > Xây dựng > Kiểm thử > Phát hành > Triển khai > Vận hành > Giám sát >
- Ngày 6 - DevOps - Những câu chuyện thực tế
- Ngày 7 - Bức tranh toàn cảnh: DevOps & Học một ngôn ngữ lập trình
- Ngày 8 - Thiết lập môi trường DevOps cho Go & Hello World
- Ngày 9 - Giải thích mã Hello World
- Ngày 10 - Không gian làm việc của Go
- Ngày 11 - Biến, hằng số & kiểu dữ liệu
- Ngày 12 - Nhận thông tin đầu vào sử dụng con trỏ và chương trình hoàn thiện
- Ngày 13 - Tweet tiến trình của bạn với ứng dụng mới của chúng ta
- Ngày 14 - Bức tranh lớn: DevOps và Linux
- Ngày 15 - Các lệnh Linux cho DevOps (thực tế là tất cả mọi người)
- Ngày 16 - Quản lý Hệ thống Linux, Hệ thống Tệp & Lưu trữ
- Ngày 17 - Text Editors - nano vs vim
- Ngày 18 - SSH & máy chủ web (LAMP)
- Ngày 19 - Tự động hóa các tác vụ với các tập lệnh bash
- Ngày 20 - Thiết lập máy trạm phát triển - những điều tuyệt vời
- Ngày 21 - Bức tranh toàn cảnh: DevOps và Mạng máy tính
- Ngày 22 - Mô hình 7 Lớp OSI
- Ngày 23 - Giao thức mạng
- Ngày 24 - Tự Động Hóa Thiết Lập Mạng
- Ngày 25 - Lập trình Python trong tự động hóa mạng
- Ngày 26 - Xây dựng Lab
- Ngày 27 - Thực hành với Python
- Ngày 28 - Bức tranh toàn cảnh: DevOps & The Cloud
- Ngày 29 - Kiến thức cơ bản về Microsoft Azure
- Ngày 30 - Mô hình bảo mật Microsoft Azure
- Ngày 31 - Mô hình Điện toán Microsoft Azure
- Ngày 32 - Mô hình lưu trữ và cơ sở dữ liệu Microsoft Azure
- Ngày 33 - Mô hình Mạng Microsoft Azure + Quản lý Azure
- Ngày 34 - Thực hành với Microsoft Azure
- Ngày 35 - Bức tranh toàn cảnh: Git - Quản lý phiên bản
- Ngày 36 - Cài đặt & Cấu hình Git
- Ngày 37 - Giới thiệu về Git
- Ngày 38 - Staging & Changing
- Ngày 39 - Xem, unstaging, loại bỏ & khôi phục
- Ngày 40 - Mạng xã hội dành cho code
- Ngày 41 - Quy trình làm việc với mã nguồn mở
- Ngày 42 - Bức tranh toàn cảnh: Containers
- Ngày 43 - Docker là gì & Cài đặt
- Ngày 44 - Docker image & Thực hành với Docker Desktop
- Ngày 45 - Phân tích một Docker Image
- Ngày 46 - Docker Compose
- Ngày 47 - Docker Networking & Security
- Ngày 48 - Các lựa chọn thay thế cho Docker
- Ngày 49 - Bức tranh toàn cảnh: Kubernetes
- Ngày 50 - Chọn nền tảng chạy Kubernetes
- Ngày 51 - Triển khai Kubernetes cluster đầu tiên
- Ngày 52 - Thiết lập Kubernetes cluster đa node
- Ngày 53 - Tổng quan về Rancher - Thực hành
- Ngày 54 - Triển khai ứng dụng Kubernetes
- Ngày 55 - State và Ingress trong Kubernetes
- Ngày 56 - Bức tranh toàn cảnh: Cơ sở hạ tầng dưới dạng mã (IaC)
- Ngày 57 - Giới thiệu về Terraform
- Ngày 58 - Ngôn ngữ cấu hình HashiCorp (HCL)
- Ngày 59 - Tạo máy ảo với Terraform và biến
- Ngày 60 - Docker Containers, Provisioners & Modules
- Ngày 61 - Kubernetes & Đa môi trường
- Ngày 62 - Kiểm thử, Công cụ và Các phương pháp thay thế
- Ngày 63 - Bức tranh toàn cảnh: Quản lý cấu hình
- Ngày 64 - Ansible: Bắt đầu
- Ngày 65 - Ansible Playbooks
- Ngày 66 - Tiếp tục với Ansible Playbooks...
- Ngày 67 - Sử dụng Role & Triển khai Loadbalancer
- Ngày 68 - Tags, Variables, Inventory & Database Server config
- Ngày 69 - Tất cả những thứ còn lại của Ansible - Automation Controller, AWX, Vault
- Ngày 70 - Bức tranh toàn cảnh: CI/CD Pipelines
- Ngày 71 - Jenkins là gì?
- Ngày 72 - Làm quen với Jenkins
- Ngày 73 - Xây dựng Jenkins pipeline
- Ngày 74 - Hello World - Jenkinsfile App Pipeline
- Ngày 75 - Tổng quan về GitHub Actions
- Ngày 76 - Tổng quan về ArgoCD
- Ngày 77 - Bức tranh toàn cảnh: Giám sát
- Ngày 78 - Thực hành với công cụ giám sát
- Ngày 79 - Bức tranh toàn cảnh: Quản lý log
- Ngày 80 - ELK Stack
- Ngày 81 - Fluentd & FluentBit
- Ngày 82 - EFK Stack
- Ngày 83 - Trực quan hóa dữ liệu - Grafana
- Ngày 84 - Bức tranh toàn cảnh: Quản lý dữ liệu
- Ngày 85 - Dịch vụ dữ liệu
- Ngày 86 - Sao lưu tất cả các nền tảng
- Ngày 87 - Thực hành với sao lưu & phục hồi
- Ngày 88 - Sao lưu theo hướng tập trung vào ứng dụng
- Ngày 89 - Khôi phục thảm họa (DR)
- Ngày 90 - Dữ liệu & ứng dụng: Tính di động
Mục lục
Tổng quan về Rancher - Thực hành
Trong bài viết này, chúng ta sẽ đề cập tới Rancher, cho đến giờ, mọi thứ chúng ta làm đều dưới giao diện dòng lệnh sử dụng kubectl nhưng chứng ta có một số công cụ quản lý cluster với giao diện người dùng để các nhóm vận hành có thể quản lý các cluster một cách tốt hơn.
Rancher theo như trang web của họ
Rancher là phần mềm hoàn chỉnh dành cho các nhóm sử dụng containers. Nó giải quyết các vấn đề về vận hành và bảo mật trong việc quản lý các Kubernetes cluster trên bất kỳ cơ sở hạ tầng nào đồng thời cung cấp cho các nhóm DevOps các công cụ tích hợp để chạy các containerized workloads.
Rancher cho phép chúng ta triển khai các cụm Kubernetes theo tiêu chuẩn của môi trường production và sau đó cung cấp xác thực tập trung, kiểm soát truy cập và khả năng quan sát. Tôi đã đề cập trong phần trước rằng có rất nhiều lựa chọn khi nói đến Kubernetes và nơi bạn nên hoặc có thể chạy chúng, khi sử dụng Rancher, việc chạy chúng ở đâu không quan trọng.
Triển khai Rancher
Điều đầu tiên chúng ta cần làm là triển khai Rancher trên máy trạm cục bộ của mình, có một số cách và vị trí bạn có thể chọn để làm điều này. Đối với tôi, tôi muốn sử dụng máy tính cá nhân của mình và chạy Rancher bằng một docker container. Bằng cách chạy lệnh bên dưới, chúng ta sẽ kéo container image và sau đó có quyền truy cập vào giao diện người dùng của Rancher.
Các phương pháp triển khai Rancher khác có tại Rancher Quick-Start-Guide
sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 --privileged rancher/rancher
Như bạn có thể thấy trong Docker Desktop của chúng ta, có một Rancher container đang chạy.
Truy cập Rancher UI
Với container ở trên đang chạy, chúng ta có thể điều hướng tới nó thông qua một trang web. https://localhost
sẽ hiển thị trang đăng nhập như ở dưới.
Thực hiện theo các hướng dẫn dưới đây để có được mật khẩu cần thiết. Vì tôi đang sử dụng Windows nên tôi đã chọn bash vì chúng ta cần lệnh grep.
Sau đó, chúng ta có thể lấy mật khẩu ở trên và đăng nhập, trang tiếp theo là nơi chúng ta có thể xác định mật khẩu mới.
Khi chúng ta đã làm những điều trên, chúng ta sẽ đăng nhập và có thể thấy màn hình sau. Là một phần của triển khai Rancher, chúng ta cũng thấy một K3s cluster được tạo.
Sử dụng rancher
Điều đầu tiên để chúng ta xem xét là K3S cluster được triển khai. Bạn có thể thấy như bên dưới để chúng ta có thể có được cái nhìn rõ ràng về những gì đang xảy ra bên trong cluster của chúng ta. Đây là triển khai mặc định và chúng ta chưa triển khai bất cứ thứ gì cho cluster này. Bạn có thể thấy nó được tạo thành từ 1 node và có 5 deployments. Sau đó, bạn cũng có thể thấy rằng có một số thông số về pods, cores và memory.
Trên menu bên trái, chúng ta cũng có tab "Apps & Marketplace", điều này cho phép chúng ta chọn các ứng dụng mà chúng ta muốn chạy trên các cluster của mình, như đã đề cập, Rancher cung cấp cho chúng ta khả năng chạy hoặc quản lý các clusters khác nhau. Với marketplace, chúng ta có thể triển khai các ứng dụng của mình rất dễ dàng.
Một điều khác cần đề cập tới là nếu bạn cần có quyền truy cập vào bất cứ cluster nào do Rancher quản lý, ở trên cùng bên phải, bạo có thể mở một kubectl shell tới cluster mà bạn chọn.
Tạo một cluster mới
Trong hai ngày vừa qua, chúng ta đã tạo một minikube cluster và đã sử dụng Vagrant với VirtualBox để tạo một Kubernetes cluster gồm 3 nodes. Với Rancher, chúng ta cũng có thể tạo cluster. Trong thư mục Rancher bạn sẽ thấy các tệp vagrant tạo ra 3 nodes giống nhau nhưng không có các bước tạo Kubernetes cluster của chúng ta (chúng ta muốn Rancher làm điều này cho chúng ta)
Tuy nhiên, chúng ta muốn cài đặt docker và cập nhật hệ điều hành nên bạn vẫn sẽ thấy common.sh
chạy trên các nodes của chúng ta. Nó cũng sẽ căif đặt Kubeadm, Kubectl,... Nhưng nó sẽ không chạy các lệnh Kubeadm để tạo và nối các nodes của chúng ta thành một cluster.
Chúng ta có thể điều hướng đến vị trì thư mục vagrant và chỉ cần chạy vagrant up
và điều này sẽ bắt đầu quá trình tạo 3 máy ảo của chúng ta trong VirtualBox.
Bây giờ chúng ta đã có các nodes hoặc máy ảo sẵn sàng, sau đó chúng ta có thể sử dụng Rancher để tạo Kubernetes cluster mới của mình. Màn hình đầu tiên để tạo cluster của bạn cung cấp cho bạn một số tuỳ chọn về vị trí của cluster, ví dụ như các dịch vụ Kubernetes được quản lý trên đám mây công cộng, vSphere hoặc lựa chọn khác.
Chúng ta sẽ chọn "custom" vì chúng ta không sử dụng một trong các nền tảng được tích hợp. Trang mở đầu là nơi bạn xác định tên cluster của mình (có ghi local ở dưới nhưng bạn không thể sử dụng local, cluster của chúng ta là vagrant). Bạn có thể xác định các phiên bản Kubernetes tại đây, nhà cung cấp mạng và một số tuỳ chọn cấu hình khác để khởi động và chạy cụm Kubernetes của bạn.
Trang tiếp theo sẽ cung cấp cho bạn mã đăng ký cần được chạy trên từng node của bạn với các dịch vụ phù hợp để được kích hoạt. etcd, control-plane và worker. Đối với master node, chúng ta muốn có etcd và control-plan nên có thể nhìn lệnh bên dưới.
sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.6.3 --server https://10.0.0.1 --token mpq8cbjjwrj88z4xmf7blqxcfmwdsmq92bmwjpphdkklfckk5hfwc2 --ca-checksum a81944423cbfeeb92be0784edebba1af799735ebc30ba8cbe5cc5f996094f30b --etcd --controlplane
Nếu mạng được định cấu hình chính xác thì bạn sẽ nhanh chóng thấy thông tin sau trong bảng điều khiển rancher của ình, cho biết rằng master node đầu tiên hiện đang được đăng ký và cluster đang được tạo.
Sau đó, chúng ta có thể lặp lại quy trình này với các worker nodes bằng lệnh sau và sau một lúc, bạn sẽ thiết lập và chạy các ứng dụng của mình và có khả năng tận dụng marketplace để triển khai các ứng dụng của mình.
sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.6.3 --server https://10.0.0.1 --token mpq8cbjjwrj88z4xmf7blqxcfmwdsmq92bmwjpphdkklfckk5hfwc2 --ca-checksum a81944423cbfeeb92be0784edebba1af799735ebc30ba8cbe5cc5f996094f30b --worker
Trong 3 ngày vừa qua, chúng ta đã sử dụng một số cách khác nhau để thiết lập và chạy với Kubernetes cluster, trong những ngày còn lại, chúng ta sẽ xem xét khía cạnh ứng dụng của nền tảng và nó được cho là phần quan trọng nhất. Chúng ta sẽ xem xét các dịch vụ và khả năng cung cấp cũng như sử dụng dịch vụ của chúng ta trong Kubernetes.
Tôi đã được nói rằng các yêu cầu xung quanh việc khởi động các rancher node yêu cầu các máy ảo phải có 4GB ram nếu không chúng sẽ gặp sự cố, tôi đã cập nhật vì các worker nodes của chúng ta chỉ có 2GB.
Những gì chúng ta sẽ đề cập trong loạt bài về Kubernetes
- Kiến trúc Kubernetes
- Các câu lệnh kubectl
- Kubernetes YAML
- Kubernetes Ingress
- Kubernetes Services
- Helm Package Manager
- Lưu trữ liên tục - Persistent Storage
- Ứng dụng có trạng thái - Stateful Apps
Tài liệu tham khảo
- Kubernetes Documentation
- TechWorld with Nana - Kubernetes Tutorial for Beginners [FULL COURSE in 4 Hours]
- TechWorld with Nana - Kubernetes Crash Course for Absolute Beginners
- Kunal Kushwaha - Kubernetes Tutorial for Beginners | What is Kubernetes? Architecture Simplified!
Hẹn gặp lại vào ngày 54.
Các bài viết là bản tiếng Việt của tài liệu 90DaysOfDevOps của Micheal Cade và có qua sửa đổi, bổ sung. Tất cả đều có license [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License][cc-by-nc-sa].