Chào các bạn, mình lại trở lại với một bài viết mới trong series của mình! Hôm nay, chúng ta sẽ cùng nhau khám phá cách thiết lập Nginx Ingress Controller và Cert Manager để tự động hóa việc lấy chứng chỉ HTTPS trên Kubernetes (K8S). Bài viết bao gồm hướng dẫn từng bước để bạn có thể triển khai một ứng dụng Todo list đơn giản với các thành phần: frontend, backend và MySQL database trên K8S.
Nội Dung Bài Viết
- Giới thiệu tổng quát về Ingress trong Kubernetes
- Cách cài đặt và cấu hình Nginx Ingress Controller
- Triển khai ứng dụng Todo list
- Cấu hình Cert Manager để tự động hóa việc cấp chứng chỉ HTTPS
- Những câu hỏi thường gặp về Ingress và Cert Manager
1. Giới Thiệu Về Ingress
Ingress là một thành phần trong Kubernetes giúp quản lý luồng lưu lượng truy cập từ bên ngoài vào các dịch vụ (Service) bên trong cluster. Nó hoạt động như một traffic router, cho phép bạn định nghĩa các quy tắc để chuyển hướng yêu cầu HTTP đến các dịch vụ cụ thể. Điều này giúp việc quản lý lưu lượng dễ dàng và hiệu quả hơn.
2. Cài Đặt Nginx Ingress Controller
Để sử dụng Ingress, trước tiên bạn cần cài đặt Ingress Controller. Trong bài viết này, chúng ta sẽ cài đặt Nginx Ingress Controller. Quá trình cài đặt rất đơn giản, chỉ cần áp dụng file YAML do Nginx cung cấp:
bash
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/cloud/deploy.yaml
Sau khi cài đặt thành công, bạn có thể kiểm tra các dịch vụ và pod đã được triển khai:
bash
kubectl get svc -n ingress-nginx
3. Triển Khai Ứng Dụng Todo List Bạn Nên Sử Dụng Docker Compose
Trước khi triển khai trên K8S, bạn hãy chạy thử ứng dụng Todo list bằng Docker Compose. Ví dụ về tệp cấu hình docker-compose.yml
:
yaml
version: '3.7'
services:
frontend:
image: maitrungduc1410/k8s-ingress-demo-frontend
ports:
- 3002:80
backend:
image: maitrungduc1410/k8s-ingress-demo-backend
db:
image: mysql:8
environment:
MYSQL_DATABASE: todo_app
MYSQL_USER: myuser
MYSQL_PASSWORD: mypassword
Sau khi cấu hình xong, bạn có thể chạy lệnh sau để khởi động ứng dụng:
bash
docker-compose up -d
4. Cấu Hình Cert Manager để Lấy HTTPS
Cert Manager giúp tự động cấp phát chứng chỉ TLS từ Let's Encrypt. Đầu tiên, bạn cần cài đặt Cert Manager với lệnh sau:
bash
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/latest/download/cert-manager.yaml
Tiếp theo, bạn tạo file cấu hình issuer.yml
để cấu hình Issuer thể hiện rằng bạn muốn lấy chứng chỉ từ Let's Encrypt:
yaml
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: letsencrypt-prod
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
email: your-email@example.com
privateKeySecretRef:
name: letsencrypt-prod
solvers:
- http01:
ingress:
class: nginx
Cuối cùng, bạn chỉ cần cập nhật file ingress.yml
để thêm cấu hình TLS:
yaml
tls:
- hosts:
- your-domain.com
secretName: todo-tls
Sau khi cấu hình xong, chạy lệnh để áp dụng thay đổi:
bash
kubectl apply -f ingress.yml
5. Những Câu Hỏi Thường Gặp
- Có thể triển khai nhiều Ingress Controller không?
Có, bạn có thể triển khai nhiều Ingress Controller trong một cluster tùy vào nhu cầu sử dụng và load trên hệ thống. - Cert Manager hoạt động như thế nào?
Cert Manager quản lý việc cấp phát và gia hạn chứng chỉ TLS trong Kubernetes, giúp bạn dễ dàng bảo mật ứng dụng của mình.
Kết Luận
Bài viết này có thể giúp bạn nắm rõ cách bảo mật ứng dụng trên Kubernetes bằng Nginx Ingress Controller và Cert Manager. Hy vọng qua bài viết này, bạn đã có cái nhìn tổng quan và có thể áp dụng vào dự án của mình. Chúc bạn thành công và hẹn gặp lại trong các bài viết tiếp theo!
source: viblo