- vừa được xem lúc

Cấu hình Traefik Ingress Controller cho cụm k3s

0 0 21

Người đăng: Dao Thai Son

Theo Viblo Asia

Giới thiệu về Traefik

Traefik là một công cụ định tuyến dịch vụ ngang hàng (reverse proxy) và định tuyến lưu lượng (traffic routing) cho các ứng dụng chạy trên các môi trường máy chủ khác nhau, bao gồm các môi trường đám mây (cloud) và hệ thống máy chủ truyền thống. Traefik cho phép bạn cấu hình định tuyến và xử lý lưu lượng truy cập dựa trên các nguồn dữ liệu khác nhau, bao gồm các máy chủ mạng, các tài nguyên cụ thể trên máy chủ và các hệ thống khác nhau như Kubernetes.

Traefik có các tính năng khác nhau, bao gồm:

  • Định tuyến dựa trên nhiều nguồn dữ liệu, bao gồm cả Kubernetes, Docker, Mesos, Consul, Zookeeper, Amazon ECS và nhiều hơn nữa.
  • Hỗ trợ các giao thức HTTP, HTTPS, TCP và UDP.
  • Hỗ trợ TLS để bảo mật lưu lượng truy cập.
  • Có thể tự động phát hiện các dịch vụ mới và định tuyến chúng.
  • Hỗ trợ định tuyến trên nhiều máy chủ, cho phép cân bằng tải giữa các máy chủ khác nhau.
  • Hỗ trợ nhiều định dạng tệp cấu hình, bao gồm TOML, YAML và JSON.

Với các tính năng mạnh mẽ và khả năng tích hợp tốt với các công nghệ khác, Traefik là một công cụ định tuyến dịch vụ rất phổ biến và đang được sử dụng rộng rãi trong cộng đồng phát triển ứng dụng.

Cấu hình Traefik Ingress Controller cho cụm k3s

Cài đặt k3s

k3s là một phiên bản nhẹ của Kubernetes. Với k3s, người dùng có thể tạo và quản lý các cụm Kubernetes trên các máy chủ nhỏ hơn, điều này hữu ích cho các ứng dụng đòi hỏi tính di động cao hoặc phải chạy trên các môi trường đặc biệt như IoT (Internet of Things).

Các tính năng của k3s bao gồm:

  • Tích hợp với các công cụ như Helm và kubectl để quản lý các ứng dụng Kubernetes.
  • Hỗ trợ triển khai và quản lý các ứng dụng chạy trên Kubernetes, bao gồm cả các ứng dụng đòi hỏi tính di động cao và các ứng dụng được triển khai trên các môi trường nhúng.
  • Tích hợp sẵn với một số cơ sở dữ liệu như SQLite, MySQL và PostgreSQL để lưu trữ các tài nguyên Kubernetes.
  • Tích hợp sẵn với các giải pháp lưu trữ như NFS, GlusterFS và ceph để lưu trữ dữ liệu cho các ứng dụng chạy trên Kubernetes.
  • Hỗ trợ tính năng cài đặt và cấu hình đơn giản, với khả năng triển khai k3s trong vòng vài phút.

Với các tính năng đơn giản và hiệu quả, k3s đã trở thành một giải pháp phổ biến cho việc triển khai và quản lý các ứng dụng chạy trên Kubernetes trên các môi trường có tài nguyên hạn chế.

Để cài đặt K3s, bạn có thể làm theo các bước sau:

$ curl -sfL https://get.k3s.io | INSTALL_K3S_VERSION="v1.25.6+k3s1" sh -

Sau khi cài đặt xong, chúng ta có thể kiểm tra xem K3s đã hoạt động chưa thông qua command

➜ ~ sudo service k3s status
● k3s.service - Lightweight Kubernetes Loaded: loaded (/etc/systemd/system/k3s.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2023-03-21 15:52:48 +07; 1 day 18h ago Docs: https://k3s.io Process: 2482 ExecStartPre=/bin/sh -xc ! /usr/bin/systemctl is-enabled --quiet nm-cloud-setup.service (code=exited, status=0/SUCCESS) Process: 2489 ExecStartPre=/sbin/modprobe br_netfilter (code=exited, status=0/SUCCESS) Process: 2490 ExecStartPre=/sbin/modprobe overlay (code=exited, status=0/SUCCESS)

trạng thái active (running) là ok. Từ bây giờ bạn có thể sử dụng k3s kubectl để tương tác với K8S cluster ở trên máy.

Bật Traefik Dashboard

Để bật Traefik Dashboard, phục vụ cho việc theo dõi các cấu hình Service, Route, Midleware trên cluster chúng ta cần bật tính năng và cấu hình domain cho nó. Đầu tiên chúng ta cần xác minh xem Traefik đã được cài đặt trên cluster chưa

➜ ~ k3s kubectl get pods -n kube-system NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
helm-install-traefik-crd-2wgm2 0/1 Completed 0 24d 10.42.0.2 b121245-pc <none> <none>
helm-install-traefik-tnxpz 0/1 Completed 0 8d 10.42.0.8 b121245-pc <none> <none>
svclb-traefik-479c1118-l5scr 2/2 Running 12 (42h ago) 24d 10.42.0.78 b121245-pc <none> <none>
local-path-provisioner-79f67d76f8-mpwzs 1/1 Running 8 (42h ago) 24d 10.42.0.80 b121245-pc <none> <none>
traefik-66c46d954f-v4prn 1/1 Running 6 (42h ago) 20d 10.42.0.79 b121245-pc <none> <none>

Pod traefik ở trạng thái running và các CRD đã được cài vào cluster là ok.

Tiếp theo chúng ta bổ sung file cấu hình cho Traefik vào k3s

apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata: name: traefik namespace: kube-system
spec: valuesContent: |- dashboard: enabled: true domain: "traefik.localhost"

Sau đó tiến hành restart k3s để k3s nhận file cấu hình mới này và chúng ta có thể truy cập http://traefik.localhost/dashboard/#/ để theo dõi các cấu hình Traefik

Test thử cấu hình Traefik Ingress Controller cho ứng dụng

Mình sẽ deploy 1 server Prometheus và chỏ 1 domain tới ứng dụng của mình để test hoạt động của Traefik

// Đầu tiên, cần thêm Helm chart repo của Prometheus
$ helm repo add prometheus-community https://prometheus-community.github.io/helm-charts

Tạo file values.yaml để cấu hình cho Prometheus

configmapReload: prometheus: ## If false, the configmap-reload container will not be deployed ## enabled: false
server: prefixURL: /prometheus ingress: enabled: true hosts: - 192.168.0.6.traefik.me path: /prometheus annotations: kubernetes.io/ingress.class: traefik traefik.ingress.kubernetes.io/router.entrypoints: web resources: limits: cpu: 500m memory: 512Mi requests: cpu: 500m memory: 512Mi persistentVolume: enabled: false nodeExporter: enabled: false
pushgateway: enabled: false
alertmanager: enabled: false
kubeStateMetrics: enabled: false

sau đó install helm chart này vào k8s cluster của mình bằng command

$ helm upgrade --install -n argocd prometheus prometheus-community/prometheus -f values.yaml --version=15.6.0
Release "prometheus" does not exist. Installing it now.
NAME: prometheus
LAST DEPLOYED: Thu Mar 23 11:24:37 2023
NAMESPACE: argocd
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
The Prometheus server can be accessed via port 80 on the following DNS name from within your cluster:
prometheus-server.argocd.svc.cluster.local From outside the cluster, the server URL(s) are:
http://192.168.0.6.traefik.me
#################################################################################
###### WARNING: Persistence is disabled!!! You will lose your data when #####
###### the Server pod is terminated. #####
################################################################################# #################################################################################
###### WARNING: Pod Security Policy has been moved to a global property. #####
###### use .Values.podSecurityPolicy.enabled with pod-based #####
###### annotations #####
###### (e.g. .Values.nodeExporter.podSecurityPolicy.annotations) #####
################################################################################# For more information on running Prometheus, visit:
https://prometheus.io/

Kiểm tra xem Ingress của ứng dụng

$ kubectl get ing
NAME CLASS HOSTS ADDRESS PORTS AGE
prometheus-server <none> 192.168.0.6.traefik.me 10.0.37.90 80 46m

như vậy là ok chúng ta đã cho phép Prometheus truy cập từ bên ngoài vào cluster thông qua domain http://192.168.0.6.traefik.me

Trên Traefik Dashboard cũng đã hiện thông tin về cấu hình này

Bình luận

Bài viết tương tự

- vừa được xem lúc

[Kubernetes] Review một số giải pháp triển khai Kubernetes ở local

Một trong những mục đích chính của việc sử dụng Kubernetes là nó lưu trữ các ứng dụng trên một cụm nhiều node máy chủ với các tính năng phân bổ tài nguyên cũng như cân bằng tải phức tạp. Điều này đảm

0 0 102

- vừa được xem lúc

Install k3s on Raspberry Pi Alpine Linux - Part1

English version can be read at Eng-ver. Mới dọn nhà và phát hiện ra mình có 2 con Raspberry Pi.

0 0 38

- vừa được xem lúc

Triển khai Kubernetes Cluster với K3s trên MacOS

1. Lời mở đầu. Xin chào mọi người . Tiếp tục chuỗi bài Mayfest2023 thì mình sẽ chia sẻ với mọi người một phiên bản của Kubernetes mang tên K3s.

0 0 35

- vừa được xem lúc

Golang Data Structures and Algorithms - Stack

Giới thiệu. Series về cấu trúc dữ liệu và thuật toán sử dụng Golang.

0 0 37

- vừa được xem lúc

AWS Certified Solutions Architect Professional - Security - Secrets Manager

Introduction. A quick note about AWS Secrets Manager.

0 0 44

- vừa được xem lúc

Golang Data Structures and Algorithms - Queue

Giới thiệu. Series về cấu trúc dữ liệu và thuật toán sử dụng Golang.

0 0 47