Bài 3: Cài đặt và sử dụng ingress trong bộ tích hợp của Microk8s

Ở bài này thì mình cần thêm 1 VM cài Nginx để loadbalancer ở đây mình sẽ tạo thêm 1 VM ubuntu 22.04 IP Hostname vCPU RAM DISK 127.0.0.1 Host 8 core 32G SSD 500G 192.168.56.2 microk8s-master-1 1 core 2G 50G 192.168.56.3 microk8s-master-2 1 core 2G 50G 192.168.56.4 microk8s-master-3 1 core 2G 50G 192.168.56.5 microk8s-worker-1

Ở bài này thì mình cần thêm 1 VM cài Nginx để loadbalancer ở đây mình sẽ tạo thêm 1 VM ubuntu 22.04

IP Hostname vCPU RAM DISK
127.0.0.1 Host 8 core 32G SSD 500G
192.168.56.2 microk8s-master-1 1 core 2G 50G
192.168.56.3 microk8s-master-2 1 core 2G 50G
192.168.56.4 microk8s-master-3 1 core 2G 50G
192.168.56.5 microk8s-worker-1 1 core 2G 50G
192.168.56.6 microk8s-worker-2 1 core 2G 50G
192.168.56.7 microk8s-worker-3 1 core 2G 50G
192.168.56.8 microk8s-worker-4 1 core 2G 50G

Ta cài đặt theo mô hình
image.png

Cài đặt Nginx trên Ubuntu 22.04

Bước 1 – Cài đặt Nginx

Cập nhật các gói cài đặt apt

sudo apt update

Cài đặt Nginx

sudo apt install nginx -y

Screenshot 2023-01-07 at 1.44.41 PM.png

Bước 2 – Cấp quyền HTTP Firewall

sudo ufw allow 'Nginx HTTP'

Bước 3 – Kiểm tra Máy chủ Web của bạn

Kiểm tra service nginx có hoạt đông không?

image.png

Để tiện cho việc quản trị code trên máy master và test thì mình sẽ cài code-server lên máy microk8s-master-01

Để cài đặt các bạn chạy lệnh:

curl -fsSL https://code-server.dev/install.sh | sh

sudo systemctl enable --now code-server@$USER

sau khi cài đặt xong thì mình vào thư mục config

nano ~/.config/code-server/config.yaml

bind-addr: 0.0.0.0:9999
auth: password
password: 123456
cert: false

sudo service code-server@$USER restart

Screenshot 2023-01-08 at 10.33.28 PM.png

Kích hoạt INGRESS

Để kích hoạt Inpress Controller của Microk8s chúng ta sử dụng lệnh:

microk8s enable ingress

image.png

Sau khi kích hoạt thành công chúng ta sẽ thử tạo tiệp ingress của dashboard

Tiệp: ingress-dashboard.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: https-ingress-dashboard
  namespace: kube-system 
  annotations: 
      kubernetes.io/ingress.class: public
      nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
spec:
  rules:
   - http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: kubernetes-dashboard
            port:
              number: 443

Chạy lệnh microk8s kubectl apply -f ingress-dashboard.yaml

image.png

Khi thành công ta vào đường dẫn https://10.19.2.92/ để kiểm tra

image.png

Cấu hình nginx Reverse Proxy

Bước 1: bạn vào file hosts để thêm 1 dòng ở cuối ở máy bạn đang sử dụng, ở đây mình sử dụng Ubuntu (Máy Host)

Windows Path: C:WindowsSystem32driversetchosts

MacOS & Linux Path: /etc/hosts

127.0.0.1 microk8s-dashboard.localhost

image.png

Bước 2: Cấu hình nginx

đi đến thư mục: /etc/nginx/sites-enabled

cd /etc/nginx/sites-enabled

tạo file microk8s-dashboard.localhost

sudo nano microk8s-dashboard.localhost

copy đoạn config thêm vào file microk8s-dashboard.localhost.conf


upstream host_mircok8s_worker {
    server 192.168.56.5;
    server 192.168.56.6;
    server 192.168.56.7;
    server 192.168.56.8;
}


server {

    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    server_name microk8s-dashboard.localhost;
  
    ssl_certificate /etc/nginx/ssl/localhost.crt;
    ssl_certificate_key /etc/nginx/ssl/localhost.key;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    
    location / {
        proxy_pass http://host_mircok8s_worker;
        proxy_redirect off;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

Lưu lại và kiểm tra config xem đã chính xác chưa : sudo nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Khởi động lại service:

sudo systemctl restart nginx

Cấu hình ingress-dashboard.yaml

Thêm dòng host: kubernetes-dashboard.localhost vào

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: https-ingress-dashboard
  namespace: kube-system 
  annotations: 
      kubernetes.io/ingress.class: public
      nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
spec:
  rules:
  - host: kubernetes-dashboard.localhost
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: kubernetes-dashboard
            port:
              number: 443

Chạy lại config : microk8s kubectl apply -f ingress-dashboard.yaml

image.png

Nếu bạn thấy bài chia sẽ này hay xin hãy cho mình một like và đăng ký để ủng hộ mình nhé. Cảm ơn các bạn nhiều ♥️♥️♥️♥️

Các bài tham khảo:

Nguồn: viblo.asia

Bài viết liên quan

WebP là gì? Hướng dẫn cách để chuyển hình ảnh jpg, png qua webp

WebP là gì? WebP là một định dạng ảnh hiện đại, được phát triển bởi Google

Điểm khác biệt giữa IPv4 và IPv6 là gì?

IPv4 và IPv6 là hai phiên bản của hệ thống địa chỉ Giao thức Internet (IP). IP l

Check nameservers của tên miền xem website trỏ đúng chưa

Tìm hiểu cách check nameservers của tên miền để xác định tên miền đó đang dùn

Mình đang dùng Google Domains để check tên miền hàng ngày

Từ khi thông báo dịch vụ Google Domains bỏ mác Beta, mình mới để ý và bắt đầ