Trước tiên thì hệ thống mình hướng dẫn trong series sẽ triển khai trong moi trường VM và các image sẽ không public ra Internet nên mình sử dụng private registry
Kích hoạt registry
Mình ssh vào VM microk8s-master-01 (192.168.56.2) để thực hện, vai trò con microk8s-master-01 hiện giờ đang đóng vai trò Master
Sau khi login vào microk8s-master-01 thành công ta tiến hành kích hoạt registry bằng lệnh
microk8s enable registry
Sau khi kích hoạt registry thì persistent volume mặt định là 20G dùng để lưu trữu images, tuy nhiên bạn có thể cấp thêm để phù hợp với ứng dụng của bạn
microk8s enable registry:size=40Gi
Cách sử dụng Private Registry
- Cài đặt Docker Engine trên trên Server Host (các bạn tham khảo thêm ở nguồn https://docs.docker.com/engine/install/ubuntu/)
- Gỡ cài đặt phiên bản cũ
sudo apt-get remove docker docker-engine docker.io containerd runc
Thiết lập repository
-
Cập nhật chỉ mục gói apt và cài đặt các gói để cho phép apt sử dụng kho lưu trữ qua HTTPS:
sudo apt-get update sudo apt-get install ca-certificates curl gnupg lsb-release
-
Thêm khóa GPG chính thức của Docker:
sudomkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg |sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
- Sử dụng lệnh để thiết lập repository
echo"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu
$(lsb_release -cs) stable"|sudotee /etc/apt/sources.list.d/docker.list > /dev/null
Cài đặt Docker Engine
- Cập nhât các gói apt
sudo apt-get update
- Cài đặt Docker Engine, containerd và Docker Compose.
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
Cấu hình Insecure registry (Cho phép push image không cần SSL)
Ở máy build và máy push từ Docker chúng ta cần thêm cấu hình ở file /etc/docker/daemon.json
sudo nano /etc/docker/daemon.json
thêm đoạn cấu hình vào
{"insecure-registries":["192.168.56.2:32000"]}
Lưu lại và khởi động lại service docker
sudo systemctl restart docker
Bây giờ ta test cấu hình theo các bước:
- Pull image Nginx
docker pull nginx
- tag file image nginx -> 192.168.56.2:32000/duy-tran-nginx
docker tag nginx 192.168.56.2:32000/duy-tran-nginx
- Push image 10.19.2.92:32000/duy-tran-nginx lên registry
docker push 192.168.56.2:32000/duy-tran-nginx
Cấu hình microk8s
Microk8s 1.23 và các phiên bản mới hơn sử dụng các tệp máy chủ riêng biệt cho mỗi đăng ký hình ảnh. Đối với Cơ quan đăng ký http://192.168.56.2:32000, tiệp cấu hình sẽ ở /var/snap/microk8s/current/args/certs.d/192.168.56.2:32000
Đầu tiên, hãy tạo thư mục và tiệp nếu nó không tồn tại:
sudomkdir -p /var/snap/microk8s/current/args/certs.d/192.168.56.2:32000
sudotouch /var/snap/microk8s/current/args/certs.d/192.168.56.2:32000/hosts.toml
Sau đó, chỉnh sửa tệp bạn vừa tạo và đảm bảo đúng nội dung như sau:
# /var/snap/microk8s/current/args/certs.d/192.168.56.2:32000/hosts.toml
server ="http://192.168.56.2:32000"[host."http://192.168.56.2:32000"]
capabilities =["pull","resolve"]
Lưu lại và khởi động lại dịch vụ microk8s
microk8s stop
microk8s start
Deploy và test image mới push
- Tạo tiệp duy-tran-nginx-all.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: duy-tran-nginx-deployment
labels:
app: nginx
spec:
selector:
matchLabels:
app: duy-tran-nginx
template:
metadata:
labels:
app: duy-tran-nginx
spec:
containers:
- name: duy-tran-nginx
image: 192.168.56.2:32000/duy-tran-nginx
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: duy-tran-nginx-svc
labels:
app: duy-tran-nginx-svc
spec:
type: NodePort
selector:
app: duy-tran-nginx
ports:
- name: http
port: 80
targetPort: 80
nodePort: 30039
protocol: TCP
- Run file duy-tran-nginx-all.yaml
microk8s kubectl apply-f duy-tran-nginx-all.yaml
Có 2 cách để test:
- Vào port 30039 để kiểm tra : http://192.168.56.2:30039
- run dashboard để kiểm tra
microk8s dashboard-proxy
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 ♥️♥️♥️♥️
Link github để các bạn copy cho nhanh các tiệp
Nguồn: viblo.asia