Kubernetes, nền tảng điều phối container đột phá, đã trao quyền cho các nhà phát triển xây dựng, triển khai và mở rộng quy mô ứng dụng với tính linh hoạt và hiệu quả chưa từng có trong một thập kỷ. Hãy cùng khám phá 12 công cụ thiết yếu giúp hợp lý hóa quy trình làm việc, tăng hiệu quả và giúp việc quản lý Kubernetes của bạn dễ dàng hơn trong năm 2024.
Nhưng trước hết chúng ta cần tìm hiểu xem:
Tại sao cần đơn giản hóa việc quản lý Kubernetes?
Hãy đối mặt với nó, các ứng dụng hiện đại đang rất cần thiết. Bạn đang xử lý khối lượng công việc được đóng trong container, mở rộng quy mô để sử dụng cao điểm và đảm bảo mọi thứ chạy trơn tru. Đây là lúc các công cụ quản lý hiệu quả phát huy tác dụng, mang lại những lợi ích quan trọng sau:
- Giảm độ phức tạp: Không còn phải vật lộn với các lệnh Kubectl hoặc các tệp cấu hình dài vô tận. Các công cụ này cung cấp giao diện trực quan và các quy trình tự động giúp cuộc sống của bạn dễ dàng hơn.
- Tăng hiệu quả: Hãy thực tế, bạn là một người bận rộn. Các công cụ này tự động hóa các tác vụ lặp đi lặp lại và hợp lý hóa quy trình làm việc, giải phóng bạn để tập trung vào việc giải quyết vấn đề & đổi mới.
- Tăng cường bảo mật: Bảo mật là không thể thương lượng. Các công cụ bảo mật chuyên dụng chủ động quét các lỗ hổng, thực thi chính sách và giúp bạn giữ an toàn cho các ứng dụng và cơ sở hạ tầng của mình khỏi bị tổn hại.
- Cải thiện tối ưu hóa chi phí: Bạn muốn tận dụng tối đa tài nguyên của mình và công cụ phân tích chi phí và tự động mở rộng quy mô giúp bạn tối ưu hóa việc sử dụng tài nguyên, ngăn chặn việc cung cấp quá mức và tiết kiệm tiền cho bạn.
12 Công cụ quản lý Kubernetes thiết yếu nên dùng trong năm 2024
Bây giờ chúng ta đã nhận ra tầm quan trọng của việc quản lý Kubernetes, hãy đi sâu vào 12 công cụ thiết yếu giúp hợp lý hóa việc quản lý Kubernetes.
1. KEDA
Keda (Kubernetes Event-Driven Autoscaling) là tự động mở rộng quy mô theo sự kiện cho khối lượng công việc của Kubernetes. Nói một cách đơn giản, nó có thể mở rộng quy mô ứng dụng dựa trên số lượng sự kiện cần được xử lý.
KEDA có các bước cài đặt được ghi chép đầy đủ trong tài liệu của họ. Bạn có thể cài đặt nó bằng Helm, Operator Hub hoặc khai báo YAML. Trong bài viết này, chúng ta hãy sử dụng helm nhé.
Bước 1: Thêm Helm Repo
helm repo add kedacore https://kedacore.github.io/charts
Bước 2: Cập nhật Helm Repo
helm repo update
Bước 3: Cài đặt KEDA trong Namespace keda
helm install keda kedacore/keda --namespace keda --create-namespace
Khi nào nên sử dụng KEDA?
KEDA là một ví dụ kinh điển về tự động mở rộng quy mô dựa trên các số liệu khác nhau. Khi bạn muốn tự động mở rộng quy mô ứng dụng của mình vượt ra ngoài các số liệu tài nguyên như CPU/Bộ nhớ, bạn có thể sử dụng KEDA. Nó lắng nghe các sự kiện cụ thể như tin nhắn từ hàng đợi tin nhắn, yêu cầu HTTP, số liệu Prometheus tùy chỉnh, độ trễ Kafka, v.v. Để tìm hiểu sâu về KEDA, hãy xem blog này.
2. Karpenter
Được xây dựng trong AWS, Karpenter là một trình tự động mở rộng quy mô cụm Kubernetes hiệu suất cao, linh hoạt, mã nguồn mở. Một trong những tính năng chính của nó là khả năng khởi chạy các phiên bản EC2 dựa trên các yêu cầu khối lượng công việc cụ thể như nhu cầu về lưu trữ, tính toán, tăng tốc và lập lịch biểu.
Cài đặt Karpenter trong cụm Kubernetes bằng biểu đồ Helm. Nhưng trước khi thực hiện việc này, bạn phải đảm bảo có đủ năng lực tính toán. Karpenter yêu cầu quyền cung cấp tài nguyên tính toán dựa trên nhà cung cấp đám mây mà bạn đã chọn.
Bước 1: Cài đặt tiện ích
Karpenter có thể được cài đặt trong các cụm bằng biểu đồ Helm. Cài đặt các công cụ này trước khi tiếp tục:
- AWS CLI
- kubectl - Kubernetes CLI
- eksctl (>= v0.180.0) - CLI cho AWS EKS
- helm - trình quản lý gói cho Kubernetes
Định cấu hình AWS CLI với người dùng có đủ đặc quyền để tạo cụm EKS. Xác minh rằng CLI có thể xác thực đúng cách bằng cách chạy aws sts get-caller-identity.
Bước 2: Đặt biến môi trường
Sau khi cài đặt các phần phụ thuộc, hãy đặt không gian tên Karpenter, phiên bản và phiên bản Kubernetes như sau.
export KARPENTER_NAMESPACE="kube-system"
export KARPENTER_VERSION="0.37.0"
export K8S_VERSION="1.30"
Sau đó, hãy đặt các biến môi trường sau đây sẽ được sử dụng thêm để tạo cụm EKS.
export AWS_PARTITION="aws" # if you are not using standard partitions, you may need to configure to aws-cn / aws-us-gov
export CLUSTER_NAME="${USER}-karpenter-demo"
export AWS_DEFAULT_REGION="us-west-2"
export AWS_ACCOUNT_ID="$(aws sts get-caller-identity --query Account --output text)"
export TEMPOUT="$(mktemp)"
export ARM_AMI_ID="$(aws ssm get-parameter --name /aws/service/eks/optimized-ami/${K8S_VERSION}/amazon-linux-2-arm64/recommended/image_id --query Parameter.Value --output text)"
export AMD_AMI_ID="$(aws ssm get-parameter --name /aws/service/eks/optimized-ami/${K8S_VERSION}/amazon-linux-2/recommended/image_id --query Parameter.Value --output text)"
export GPU_AMI_ID="$(aws ssm get-parameter --name /aws/service/eks/optimized-ami/${K8S_VERSION}/amazon-linux-2-gpu/recommended/image_id --query Parameter.Value --output text)"
Bước 3: Tạo Cụm
Các cấu hình sau sẽ tạo một cụm EKS với người dùng được định cấu hình trong aws-cli có các quyền liên quan để tạo cụm EKS.
curl -fsSL https://raw.githubusercontent.com/aws/karpenter-provider-aws/v"${KARPENTER_VERSION}"/website/content/en/preview/getting-started/getting-started-with-karpenter/cloudformation.yaml > "${TEMPOUT}" \
&& aws cloudformation deploy \ --stack-name "Karpenter-${CLUSTER_NAME}" \ --template-file "${TEMPOUT}" \ --capabilities CAPABILITY_NAMED_IAM \ --parameter-overrides "ClusterName=${CLUSTER_NAME}" eksctl create cluster -f - <<EOF
---
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig
metadata: name: ${CLUSTER_NAME} region: ${AWS_DEFAULT_REGION} version: "${K8S_VERSION}" tags: karpenter.sh/discovery: ${CLUSTER_NAME} iam: withOIDC: true podIdentityAssociations: - namespace: "${KARPENTER_NAMESPACE}" serviceAccountName: karpenter roleName: ${CLUSTER_NAME}-karpenter permissionPolicyARNs: - arn:${AWS_PARTITION}:iam::${AWS_ACCOUNT_ID}:policy/KarpenterControllerPolicy-${CLUSTER_NAME} iamIdentityMappings:
- arn: "arn:${AWS_PARTITION}:iam::${AWS_ACCOUNT_ID}:role/KarpenterNodeRole-${CLUSTER_NAME}" username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes ## If you intend to run Windows workloads, the kube-proxy group should be specified. # For more information, see https://github.com/aws/karpenter/issues/5099. # - eks:kube-proxy-windows managedNodeGroups:
- instanceType: m5.large amiFamily: AmazonLinux2 name: ${CLUSTER_NAME}-ng desiredCapacity: 2 minSize: 1 maxSize: 10 addons:
- name: eks-pod-identity-agent
EOF export CLUSTER_ENDPOINT="$(aws eks describe-cluster --name "${CLUSTER_NAME}" --query "cluster.endpoint" --output text)"
export KARPENTER_IAM_ROLE_ARN="arn:${AWS_PARTITION}:iam::${AWS_ACCOUNT_ID}:role/${CLUSTER_NAME}-karpenter" echo "${CLUSTER_ENDPOINT} ${KARPENTER_IAM_ROLE_ARN}"
Trừ khi tài khoản AWS của bạn đã được tích hợp vào EC2 Spot, bạn sẽ cần tạo vai trò được liên kết với dịch vụ để tránh lỗi ServiceLinkedRoleCreationNotPermitted.
aws iam create-service-linked-role --aws-service-name spot.amazonaws.com || true
# If the role has already been successfully created, you will see:
# An error occurred (InvalidInput) when calling the CreateServiceLinkedRole operation: Service role name AWSServiceRoleForEC2Spot has been taken in this account, please try a different suffix.
Bước 4: Cài đặt Karpenter
# Logout of helm registry to perform an unauthenticated pull against the public ECR
helm registry logout public.ecr.aws helm upgrade --install karpenter oci://public.ecr.aws/karpenter/karpenter --version "${KARPENTER_VERSION}" --namespace "${KARPENTER_NAMESPACE}" --create-namespace \ --set "settings.clusterName=${CLUSTER_NAME}" \ --set "settings.interruptionQueue=${CLUSTER_NAME}" \ --set controller.resources.requests.cpu=1 \ --set controller.resources.requests.memory=1Gi \ --set controller.resources.limits.cpu=1 \ --set controller.resources.limits.memory=1Gi \ --wait
Sau khi cài đặt xong, bạn có thể tạo NodePool và xác định họ phiên bản, kiến trúc và bắt đầu sử dụng Karpenter làm trình tự động mở rộng quy mô cụm của bạn. Để biết thông tin cài đặt chi tiết và cách sử dụng, vui lòng tham khảo tài liệu của nó.
Khi nào nên sử dụng Karpenter?
Karpenter được sử dụng để tự động cung cấp và tối ưu hóa tài nguyên cụm Kubernetes, đảm bảo khả năng mở rộng hiệu quả và tiết kiệm chi phí. Nó tự động điều chỉnh dung lượng nút dựa trên nhu cầu khối lượng công việc, giảm việc cung cấp quá mức và sử dụng chưa hết, do đó nâng cao hiệu suất và giảm chi phí cơ sở hạ tầng đám mây. Hãy xem blog này để hiểu sâu về Karpenter và Cluster Autocaler.
3. Devtron
Devtron là một nền tảng tích hợp công cụ cho Kubernetes và cho phép đóng gói ứng dụng nhanh chóng, triển khai Kubernetes liền mạch và tối ưu hóa hiệu suất cao nhất. Nó tích hợp sâu với các sản phẩm trong suốt vòng đời của microservice, tức là CI/CD, bảo mật, chi phí, gỡ lỗi và khả năng quan sát thông qua một giao diện web trực quan.
Devtron giúp bạn triển khai, quan sát, quản lý & gỡ lỗi các ứng dụng Helm hiện có trong tất cả các cụm của bạn.
Để cài đặt Devtron, bạn hãy chạy lệnh sau để cài đặt phiên bản Devtron mới nhất cùng với mô-đun CI/CD:
helm repo add devtron https://helm.devtron.ai
helm repo update devtron
helm install devtron devtron/devtron-operator \
--create-namespace --namespace devtroncd \
--set installer.modules={cicd}
Khi nào nên sử dụng Devtron?
- Khi bạn cần đơn giản hóa quy trình áp dụng:
- Bảng điều khiển đơn: Cung cấp chế độ xem hợp nhất của tất cả các tài nguyên Kubernetes, cho phép điều hướng dễ dàng và hiểu các thành phần của cụm.
- Giám sát Trạng thái Ứng dụng Theo thời gian thực: Hiển thị tình trạng và trạng thái của các ứng dụng theo thời gian thực, nêu bật các sự cố tiềm ẩn và các thành phần không lành mạnh.
- Gỡ lỗi Đơn giản hóa: Cung cấp các công cụ như nhật ký sự kiện, nhật ký pod và shell tương tác để gỡ lỗi các sự cố trong môi trường Kubernetes.
- Đóng gói Được thực hiện Dễ dàng: Cung cấp các mẫu và tùy chọn để xây dựng hình ảnh vùng chứa, đơn giản hóa quy trình đóng gói cho nhiều loại framework và ngôn ngữ.
- Khi bạn cần tích hợp công cụ hợp lý hóa:
- Thị trường Helm: Tích hợp với kho lưu trữ biểu đồ Helm để dễ dàng triển khai và quản lý các công cụ Kubernetes khác nhau.
- Tích hợp Tích hợp sẵn: Cung cấp tích hợp
- Khi bạn cần đơn giản hóa khối lượng công việc đa cụm/đám mây:
- Khả năng hiển thị tập trung: Cung cấp chế độ xem hợp nhất của các ứng dụng trên nhiều cụm và môi trường đám mây, cho phép quản lý nhất quán.
- Cấu hình cụ thể cho môi trường: Cho phép đặt cấu hình cụ thể cho môi trường, giúp dễ dàng quản lý các ứng dụng trong các môi trường đa dạng.
- Khi bạn cần đơn giản hóa DevSecOps:
- Kiểm soát truy cập chi tiết: Cho phép kiểm soát chi tiết quyền của người dùng đối với các tài nguyên Kubernetes, đảm bảo truy cập an toàn.
- Quét bảo mật và chính sách: Cung cấp tính năng quét bảo mật tích hợp sẵn với Trivy và cho phép định cấu hình chính sách để thực thi các phương pháp bảo mật tốt nhất.
4. K9s
K9s là một UI dựa trên terminal để tương tác với các cụm Kubernetes của bạn. Dự án này nhằm mục đích giúp bạn dễ dàng điều hướng, quan sát và quản lý các ứng dụng đã triển khai của mình trong tự nhiên. K9s liên tục theo dõi Kubernetes để tìm các thay đổi và cung cấp các lệnh tiếp theo để tương tác với các tài nguyên được quan sát của bạn.
K9s khả dụng trên các nền tảng Linux, macOS và Windows. Bạn có thể tải xuống các tệp nhị phân mới nhất cho các kiến trúc và hệ điều hành khác nhau từ các bản phát hành trên GitHub.
Đối với MacOS/ Linux:
# Via Homebrew brew install derailed/k9s/k9s
Đối với Windows
# Via chocolatey
choco install k9s
Để biết các cách cài đặt khác, bạn vui lòng xem thêm tài liệu của K9s.
Vậy khi nào nên sử dụng K9s?
K9s giúp quản lý và điều phối các ứng dụng trên Kubernetes dễ dàng hơn nhiều so với các ứng dụng khách Kubernetes khác như kubectl. Bạn nhận được GUI dựa trên terminal giúp bạn quản lý tài nguyên của mình,
- Giám sát và khả năng hiển thị tài nguyên: Nó cung cấp khả năng giám sát liên tục cụm Kubernetes của bạn, cung cấp chế độ xem rõ ràng về trạng thái tài nguyên. Nó giúp bạn hiểu cụm K8s của mình bằng cách hiển thị thông tin về pod, triển khai, dịch vụ, nút, v.v. Với K9s, bạn có thể dễ dàng điều hướng qua các tài nguyên cụm, đảm bảo khả năng hiển thị và nhận thức tốt hơn.
- Tương tác và quản lý tài nguyên: K9s cho phép bạn tương tác với tài nguyên trực tiếp từ terminal. Bạn có thể xem, chỉnh sửa và xóa tài nguyên mà không cần chuyển sang một công cụ quản lý riêng biệt. Các thao tác phổ biến bao gồm mở rộng quy mô triển khai, khởi động lại pod và kiểm tra nhật ký. Bạn cũng có thể bắt đầu chuyển tiếp cổng để truy cập các dịch vụ đang chạy trong pod.
- Quản lý Không gian tên: Điều này cho phép bạn tập trung vào các không gian tên cụ thể trong cụm của mình. Bạn có thể chuyển đổi giữa các không gian tên một cách liền mạch, giúp bạn dễ dàng làm việc với các môi trường biệt lập. Bằng cách lọc tài nguyên dựa trên không gian tên, bạn có thể tránh lộn xộn và giữ ngăn nắp.
- Các tính năng nâng cao: Nó cũng cung cấp các khả năng nâng cao, chẳng hạn như mở shell trong vùng chứa trực tiếp từ UI. Nó hỗ trợ chuyển đổi ngữ cảnh giữa các cụm khác nhau, giúp thuận tiện cho môi trường đa cụm. Ngoài ra, K9s tích hợp với các công cụ quét lỗ hổng, nâng cao các phương pháp bảo mật.
5. Winter Soldier
Winter Soldier là một công cụ mã nguồn mở từ Devtron, cho phép mở rộng quy mô dựa trên thời gian cho khối lượng công việc của Kubernetes. Việc mở rộng quy mô dựa trên thời gian với Winter Soldier giúp chúng tôi giảm chi phí đám mây, nó có thể được triển khai để thực hiện những việc như:
- Xóa hàng loạt các tài nguyên không sử dụng
- Mở rộng quy mô khối lượng công việc của Kubernetes
Khi nào nên sử dụng Winter Soldier?
Winter Soldier là một công cụ có giá trị cho bất kỳ ai muốn:
- Tối ưu hóa chi phí đám mây: Bằng cách tự động mở rộng quy mô khối lượng công việc của Kubernetes dựa trên thời gian, Winter Soldier giúp giảm việc sử dụng tài nguyên không cần thiết, giảm hóa đơn đám mây.
- Tự động hóa các tác vụ thường xuyên: Các tác vụ như xóa tài nguyên không sử dụng hoặc mở rộng quy mô khối lượng công việc vào những thời điểm cụ thể có thể được tự động hóa, giải phóng thời gian cho các sáng kiến khác.
- Cải thiện việc sử dụng tài nguyên: Bằng cách đảm bảo tài nguyên chỉ được phân bổ khi cần, Winter Soldier tối đa hóa việc sử dụng tài nguyên và cải thiện hiệu quả tổng thể.
- Thực hiện mở rộng quy mô dựa trên thời gian: Nó lý tưởng cho các tình huống mà khối lượng công việc có kiểu sử dụng có thể dự đoán được (ví dụ: một trang web có lưu lượng truy cập lớn trong những giờ cụ thể) hoặc khi cần điều chỉnh tài nguyên dựa trên thời gian.
6. Silver Surfer
Hiện tại, không có cách nào dễ dàng để nâng cấp các đối tượng Kubernetes trong trường hợp nâng cấp Kubernetes. Đó là một nhiệm vụ tẻ nhạt để biết liệu ApiVersion hiện tại của Đối tượng bị Xóa, Không dùng nữa hay Không thay đổi. Nó cung cấp chi tiết về các vấn đề với đối tượng Kubernetes trong trường hợp chúng được di chuyển sang một cụm có phiên bản Kubernetes mới hơn.
Chỉ với một vài lệnh, nó đã sẵn sàng phục vụ cụm của bạn.
git clone https://github.com/devtron-labs/silver-surfer.git
cd silver-surfer
go mod vendor
go mod download
make
Như vậy là đã xong. Một thư mục bin có thể đã được tạo với lệnh ./kubedd đã sẵn sàng để sử dụng nhị phân.
Nó phân loại các đối tượng Kubernetes dựa trên những thay đổi trong ApiVersion. Các danh mục là:
- ApiVersion đã bị xóa
- ApiVersion không dùng nữa
- ApiVersion mới hơn
- ApiVersion không thay đổi
Trong mỗi danh mục, nó xác định đường dẫn di chuyển đến Phiên bản API mới hơn, các đường dẫn có thể có là:
- Nó không thể được di chuyển vì không có ApiVersion chung nào giữa phiên bản Kubernetes nguồn và đích
- Nó có thể được di chuyển nhưng có một số vấn đề cần được giải quyết
- Nó có thể được di chuyển chỉ với một thay đổi ApiVersion
Hoạt động này được thực hiện cho cả ApiVersion hiện tại và mới nhất.
Khi nào nên sử dụng Silver Surfer?
Nên sử dụng Silver Surfer khi bạn cần:
- Lập kế hoạch trước khi nâng cấp: Silver Surfer giúp bạn xác định các sự cố tiềm ẩn trước khi nâng cấp, cho bạn thời gian để lên kế hoạch và giải quyết chúng.
- Hợp lý hóa quy trình nâng cấp: Công cụ cung cấp hướng dẫn chi tiết, giảm thiểu thời gian chết và lỗi trong quá trình nâng cấp.
- Quản lý đối tượng Kubernetes: Silver Surfer cung cấp khả năng hiển thị tốt hơn về khả năng tương thích của các đối tượng của bạn với các phiên bản Kubernetes khác nhau, hỗ trợ quản lý cụm của bạn.
7. Trivy
Trivy là một trình quét lỗ hổng đơn giản và toàn diện cho vùng chứa và các tạo tác khác. Lỗ hổng phần mềm là lỗi, sai sót hoặc điểm yếu hiện diện trong phần mềm hoặc trong Hệ điều hành. Trivy phát hiện các lỗ hổng của các gói Hệ điều hành (Alpine, RHEL, CentOS, v.v.) và các phần phụ thuộc của ứng dụng (Bundler, Composer, npm, yarn, v.v.). Trivy rất dễ sử dụng. Chỉ cần cài đặt tệp nhị phân và bạn đã sẵn sàng để quét. Tất cả những gì bạn cần làm để quét là chỉ định một mục tiêu chẳng hạn như tên hình ảnh của vùng chứa.
Để cài đặt Trivy, bạn cần cài đặt từ kho lưu trữ biểu đồ Aqua:
helm repo add aquasecurity https://aquasecurity.github.io/helm-charts/ helm repo update helm search repo trivy helm install my-trivy aquasecurity/trivy
Để cài đặt biểu đồ với tên bản phát hành my-release:
helm install my-release .
Lệnh triển khai Trivy trên cụm Kubernetes trong cấu hình mặc định. Phần tham số liệt kê các tham số có thể được định cấu hình trong quá trình cài đặt.
Vậy khi nào nên sử dụng Trivy?
- Tích hợp DevSecOps: Trivy tích hợp liền mạch vào các đường ống CI/CD của bạn, xác định các lỗ hổng từ sớm trong quy trình phát triển và cho phép khắc phục tự động.
- Triển khai vùng chứa an toàn: Nó đảm bảo chỉ những hình ảnh vùng chứa an toàn mới được triển khai lên sản xuất bằng cách quét chúng trước khi triển khai và tích hợp với các sổ đăng ký vùng chứa để quét liên tục.
- Giám sát bảo mật liên tục: Cho phép quét lỗ hổng thường xuyên và cung cấp báo cáo chi tiết, cho phép bảo trì bảo mật chủ động và theo dõi các nỗ lực khắc phục.
- Vượt ra ngoài vùng chứa: Mở rộng đánh giá bảo mật cho hệ điều hành, cấu hình máy chủ và các thành phần cơ sở hạ tầng khác.
- Phân tích chuỗi cung ứng phần mềm: Phân tích toàn bộ chuỗi cung ứng phần mềm của bạn, từ nguồn đến triển khai, để xác định và giải quyết các lỗ hổng ở mọi giai đoạn.
8. Cert - Manager
Cert Manager là một công cụ mã nguồn mở được thiết kế để tự động hóa việc quản lý và cung cấp chứng chỉ kỹ thuật số trong môi trường Kubernetes. Nó giải quyết thách thức xử lý chứng chỉ TLS/SSL cho các ứng dụng chạy trên Kubernetes bằng cách đơn giản hóa quy trình lấy, gia hạn và phân phối chứng chỉ. Cert Manager tăng cường bảo mật và giảm bớt sự phức tạp trong vận hành, đảm bảo rằng các ứng dụng có chứng chỉ hợp lệ và cập nhật để liên lạc an toàn.
Nó tự động hóa vòng đời của chứng chỉ TLS của bạn! Không còn gia hạn thủ công nữa!
Bạn không cần điều chỉnh bất kỳ tham số cài đặt cert-manager nào.
Cấu hình tĩnh mặc định có thể được cài đặt như sau:
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.15.1/cert-manager.yaml
Trường hợp nào nên sử dụng Cert - Manager?
- Tự động lấy và gia hạn chứng chỉ: Dễ dàng lấy và gia hạn chứng chỉ từ các nhà cung cấp như Let's Encrypt, loại bỏ nỗ lực thủ công và đảm bảo bảo mật liên tục.
- Bộ điều khiển Ingress an toàn: Tự động cung cấp chứng chỉ cho bộ điều khiển Ingress, cho phép giao tiếp HTTPS an toàn cho các dịch vụ được hiển thị thông qua Ingress.
- Quản lý chứng chỉ tập trung: Quản lý tất cả chứng chỉ của bạn từ một điểm kiểm soát duy nhất, đơn giản hóa việc cấp phát, gia hạn và thu hồi.
- Nâng cao bảo mật ứng dụng: Tăng cường mã hóa và bảo vệ dữ liệu nhạy cảm bằng cách đảm bảo chứng chỉ TLS/SSL hợp lệ và cập nhật.
- Hợp lý hóa hoạt động: Giảm chi phí vận hành, giảm thiểu thời gian chết và đảm bảo ứng dụng khả dụng liên tục bằng cách tự động hóa việc quản lý chứng chỉ.
9. Istio
Istio mở rộng Kubernetes để thiết lập một mạng có thể lập trình, nhận biết ứng dụng. Hoạt động với cả khối lượng công việc Kubernetes và khối lượng công việc truyền thống, Istio mang đến khả năng quản lý lưu lượng, khả năng telemetry và bảo mật tiêu chuẩn, phổ quát cho các triển khai phức tạp.
Bạn có thể tham khảo thêm một số tài liệu về Istio trên website của họ để nắm rõ cách cài đặt nhé.
Một số lợi ích khi sử dụng Istio:
- Đơn giản hóa giao tiếp Microservice:
- Istio trừu tượng hóa các mối quan tâm về mạng phức tạp như khám phá dịch vụ, định tuyến và cân bằng tải.
- Các nhà phát triển có thể tập trung vào logic kinh doanh trong khi Istio xử lý giao tiếp giữa các microservice.
- Nâng cao bảo mật:
- Triển khai xác thực, ủy quyền và mã hóa nhất quán trên tất cả các dịch vụ bằng Istio.
- Nó giảm thiểu rủi ro bảo mật bằng cách thực thi các chính sách bảo mật trong toàn bộ mạng lưới.
Quản lý Lưu lượng truy cập:
- Istio cho phép thử nghiệm A/B, triển khai canary và triển khai xanh lam.
- Bạn có thể kiểm soát định tuyến lưu lượng, thời gian chờ và tiêm lỗi một cách liền mạch.
Khả năng quan sát và Giám sát:
- Giám sát hành vi dịch vụ, theo dõi số liệu hiệu suất và khắc phục sự cố với Istio.
- Nó tích hợp với các công cụ quan sát để có cái nhìn sâu sắc hơn về các microservice của bạn.
10. KRR
Robusta KRR (Kubernetes Resource Recommender) là một công cụ CLI để tối ưu hóa việc phân bổ tài nguyên trong các cụm Kubernetes. Nó thu thập dữ liệu sử dụng pod từ Prometheus và đề xuất các yêu cầu và giới hạn cho CPU và bộ nhớ. Điều này làm giảm chi phí và cải thiện hiệu suất.
Việc cài đặt khá đơn giản. Bạn có thể cài đặt tệp nhị phân trực tiếp từ các bản phát hành của họ. Để cài đặt CLI, tùy thuộc vào hệ điều hành của bạn, bạn có thể cài đặt KRR cli và sử dụng nó để tối ưu hóa tài nguyên. Bạn có thể sử dụng brew để cài đặt trên mac:
brew tap robusta-dev/homebrew-krr brew install krr
Trường hợp nào nên sử dụng KRR?
- Tiết kiệm chi phí: Giảm hóa đơn đám mây bằng cách đề xuất các yêu cầu về tài nguyên tối ưu và loại bỏ việc cung cấp quá mức.
- Tăng cường hiệu suất: Cải thiện khả năng phản hồi của ứng dụng bằng cách ngăn chặn tranh chấp tài nguyên và đảm bảo đủ tài nguyên.
- Thông tin chi tiết dựa trên dữ liệu: Thu thập thông tin chi tiết về các kiểu sử dụng tài nguyên để lập kế hoạch và mở rộng quy mô tốt hơn.
- Tối ưu hóa tự động: Tích hợp với các đường ống CI/CD để tự động điều chỉnh phân bổ tài nguyên để tối ưu hóa liên tục.
11. Kyverno
Kyverno là một công cụ chính sách gốc của Kubernetes được thiết kế cho các nhóm kỹ thuật nền tảng Kubernetes. Nó cho phép bảo mật, tự động hóa, tuân thủ và quản trị bằng cách sử dụng chính sách như mã.
Kyverno có thể xác thực, biến đổi, tạo và dọn dẹp cấu hình bằng cách sử dụng kiểm soát quyền truy cập Kubernetes, quét nền và quét kho lưu trữ mã nguồn trong thời gian thực. Chính sách Kyverno có thể được quản lý như các tài nguyên Kubernetes và không yêu cầu học một ngôn ngữ mới.
Kyverno được thiết kế để hoạt động tốt với các công cụ bạn đã sử dụng như kubectl, kustomize và Git.
Để cài đặt Kyverno bằng Helm, trước tiên hãy thêm kho lưu trữ Kyverno Helm.
helm repo add kyverno https://kyverno.github.io/kyverno/
Quét kho lưu trữ mới để tìm biểu đồ.
helm repo update
Tùy chọn, hiển thị tất cả các phiên bản biểu đồ có sẵn cho Kyverno.
helm search repo kyverno -l
Các trường hợp nên sử dụng Kyverno:
- Bảo mật: Thực thi các chính sách để ngăn chặn việc triển khai với quyền root, hạn chế yêu cầu tài nguyên, kiểm soát quyền truy cập mạng và bảo mật dữ liệu nhạy cảm.
- Tuân thủ: Triển khai các chính sách kiểm tra, dán nhãn và kiểm soát truy cập để đáp ứng các yêu cầu theo quy định.
- Phương pháp hay nhất: Tự động xác thực tài nguyên, thực thi quy ước đặt tên và quản lý vòng đời tài nguyên.
- Mở rộng Kubernetes: Tùy chỉnh kiểm soát quyền truy cập và xác thực tài nguyên tùy chỉnh.
12. OpenCost
OpenCost là một dự án nguồn mở trung lập với nhà cung cấp để đo lường và phân bổ chi phí cơ sở hạ tầng đám mây và container. Nó được xây dựng để theo dõi chi phí Kubernetes nhằm hỗ trợ theo dõi chi phí theo thời gian thực, hiển thị và tính phí lại. Đây là một dự án thử nghiệm với Cloud Native Computing Foundation (CNCF).
Để có thể cài đặt OpenCost, bạn có thể truy cập website sản phẩm và tìm đọc hướng dẫn chi tiết nhé.
Khi nào nên sử dụng OpenCost?
- Xác định khối lượng công việc tốn kém: Xác định các nhóm hoặc triển khai cụ thể tiêu tốn quá nhiều tài nguyên và thực hiện các bước để tối ưu hóa việc phân bổ tài nguyên của chúng.
- Phân bổ chi phí cho các nhóm: Sử dụng OpenCost để tạo báo cáo chi tiết hiển thị chi phí phát sinh của từng nhóm hoặc dự án khi sử dụng cụm Kubernetes của bạn.
- Phân bổ tài nguyên hợp lý: Tối ưu hóa yêu cầu tài nguyên và giới hạn cho các nhóm dựa trên mức sử dụng thực tế, giảm phân bổ tài nguyên không cần thiết và tiết kiệm chi phí.
- Quản lý chi phí dự đoán: Dự báo chi phí trong tương lai dựa trên dữ liệu lịch sử và xác định các mức tăng đột biến trong mức tiêu thụ tài nguyên để chủ động điều chỉnh phân bổ tài nguyên hoặc ngân sách.
Như vậy qua bài viết vừa rồi, hy vọng các bạn sẽ có thêm cho mình những công cụ hữu ích để quản lý Kubernetes thuận tiện và dễ dàng hơn nhé.