Published on

Dùng Ansible để cài đặt và thiết lập Bare metal Kubernetes cluster

Trước đây mình cũng đã có một bài viết hướng dẫn cài đặt và thiết lập Kubernetes cluster một cách thủ công. Tức là bạn phải copy các dòng lệnh lặp đi lặp lại cho từng node, điều này khá mất thời gian. Vì vậy, hôm nay mình viết bài này nhằm giới thiệu việc sử dụng Ansile để tự động hóa quá trình cài đặt và thiết lập Bare metal Kubernetes cluster.

Trong Ansible playbook này bên cạnh thiết lập một cluster đơn giản, nó còn cài đặt và thiết lập sẵn một vài công cụ phổ biến cho cluster của bạn:

  • Ingress NGINX Controller
  • MetalLB
  • Cert-Manager:
  • Calico:

Cấu hình

Một số parameter cơ bản

kubernetes:
  config: "/home/{{ ansible_user }}/.kube"
  CIDR: "10.244.0.0/16"

calico:
  version: "v3.26.4"

metallb:
  addresses: 192.168.1.50/32 # 192.168.1.50
  version: "v0.13.12"

ingress_nginx:
  version: "v1.9.4"
  provider: "cloud"

cert_manager:
  version: "v1.13.3"

letsencrypt:
  email: your-email@gmail.com

nfs:
  whitelist_ips: 192.168.1.0/27 # Ips allow access to NFS server 192.168.1.0 -> 192.168.1.31

Lưu ý: Phần metalLB, chúng ta phải chọn 1 IP trống trong subnet của Kubernetes cluster.

Inventory

Trong file này chưa thông tin kết nối đến các server sẽ cài đặt. Trong ví dụ này sử dụng 1 master và 2 worker node.

[masters:vars]
ansible_user=anh
ansible_port=22

[masters]
master ansible_host=192.168.1.10

[workers:vars]
ansible_user=anh
ansible_port=22

[workers]
worker-1 ansible_host=192.168.1.11
worker-2 ansible_host=192.168.1.12

[nfs-servers]
nfs-servers-1 ansible_host=192.168.1.11
nfs-servers-2 ansible_host=192.168.1.12

Toàn bộ source code có thể tìm thấy Tại đây

Video hướng dẫn

Chúc thành công,

ANH NGUYỄN