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 stg-02 (10.19.2.92) để thực hện, vai trò con stg-02 hiện giờ đang đóng vai trò Master
1 2 3 | ssh ubuntu<span class="token variable">@10.19.2.92</span> Nhập Pass |
Sau khi login vào stg-02 thành công ta tiến hành kích hoạt registry bằng lệnh
1 2 | 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
1 2 | microk8s enable registry<span class="token symbol">:size</span><span class="token operator">=</span><span class="token number">40</span>Gi |
Cách sử dụng Private Registry
- Cài đặt Docker Engine trên ubuntu 22.04 (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ũ
1 2 | 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:
1 2 3 | <span class="token function">sudo</span> <span class="token function">mkdir</span> -p /etc/apt/keyrings <span class="token function">curl</span> -fsSL https://download.docker.com/linux/ubuntu/gpg <span class="token operator">|</span> <span class="token function">sudo</span> gpg --dearmor -o /etc/apt/keyrings/docker.gpg |
- Sử dụng lệnh để thiết lập repository
1 2 3 | <span class="token builtin class-name">echo</span> <span class="token string">"deb [arch=<span class="token variable"><span class="token variable">$(</span>dpkg --print-architecture<span class="token variable">)</span></span> signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu <span class="token variable"><span class="token variable">$(</span>lsb_release -cs<span class="token variable">)</span></span> stable"</span> <span class="token operator">|</span> <span class="token function">sudo</span> <span class="token function">tee</span> /etc/apt/sources.list.d/docker.list <span class="token operator">></span> /dev/null |
Cài đặt Docker Engine
- Cập nhât các gói apt
1 2 | sudo apt<span class="token operator">-</span>get <span class="token keyword">update</span> |
- Cài đặt Docker Engine, containerd và Docker Compose.
1 2 | 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
1 2 | sudo nano <span class="token operator">/</span>etc<span class="token operator">/</span>docker<span class="token operator">/</span>daemon<span class="token punctuation">.</span>json |
thêm đoạn cấu hình vào
1 2 3 4 | <span class="token punctuation">{</span> <span class="token string">"insecure-registries"</span> <span class="token punctuation">:</span> <span class="token punctuation">[</span><span class="token string">"10.19.2.92:32000"</span><span class="token punctuation">]</span> <span class="token punctuation">}</span> |
Lưu lại và khởi động lại service docker
1 2 | <span class="token function">sudo</span> systemctl restart docker |
Bây giờ ta test cấu hình theo các bước:
- Pull image Nginx
1 2 | docker pull nginx |
- tag file image nginx -> 10.19.2.92:32000/big-dog-nginx
1 2 | docker tag nginx 10.19.2.92<span class="token punctuation">:</span>32000/big-dog-nginx |
- Push image 10.19.2.92:32000/big-dog-nginx lên registry
1 2 | docker push 10.19.2.92<span class="token punctuation">:</span>32000/big-dog-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://10.19.2.92:32000, tiệp cấu hình sẽ ở /var/snap/microk8s/current/args/certs.d/10.19.2.92:32000
Đầu tiên, hãy tạo thư mục và tiệp nếu nó không tồn tại:
1 2 3 | <span class="token function">sudo</span> <span class="token function">mkdir</span> -p /var/snap/microk8s/current/args/certs.d/10.19.2.92:32000 <span class="token function">sudo</span> <span class="token function">touch</span> /var/snap/microk8s/current/args/certs.d/10.19.2.92: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:
1 2 3 4 5 6 | # <span class="token operator">/</span>var<span class="token operator">/</span>snap<span class="token operator">/</span>microk8s<span class="token operator">/</span>current<span class="token operator">/</span>args<span class="token operator">/</span>certs<span class="token punctuation">.</span>d<span class="token operator">/</span><span class="token number">10.19</span><span class="token punctuation">.</span><span class="token number">2.92</span><span class="token punctuation">:</span><span class="token number">32000</span><span class="token operator">/</span>hosts<span class="token punctuation">.</span>toml server <span class="token operator">=</span> <span class="token string">"http://10.19.2.92:32000"</span> <span class="token punctuation">[</span>host<span class="token punctuation">.</span><span class="token string">"http://10.19.2.92:32000"</span><span class="token punctuation">]</span> capabilities <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token string">"pull"</span><span class="token punctuation">,</span> <span class="token string">"resolve"</span><span class="token punctuation">]</span> |
Lưu lại và khởi động lại dịch vụ microk8s
1 2 3 | microk8s stop microk8s start |
Deploy và test image mới push
- Tạo tiệp big-dog-nginx-all.yaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | apiVersion: apps/v1 kind: Deployment metadata: name: big-dog-nginx-deployment labels: app: nginx spec: selector: matchLabels: app: big-dog-nginx template: metadata: labels: app: big-dog-nginx spec: containers: - name: big-dog-nginx image: 10.19.2.92:32000/big-dog-nginx ports: - containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: big-dog-nginx-svc labels: app: big-dog-nginx-svc spec: type: NodePort selector: app: big-dog-nginx ports: - name: http port: 80 targetPort: 80 nodePort: 30039 protocol: TCP |
- Run file big-dog-nginx-all.yaml
1 2 | microk8s kubectl <span class="token keyword">apply</span> <span class="token operator">-</span>f big<span class="token operator">-</span>dog<span class="token operator">-</span>nginx<span class="token operator">-</span><span class="token keyword">all</span><span class="token punctuation">.</span>yaml |
Có 2 cách để test:
- Vào port 30039 để kiểm tra : http://10.19.2.92:30039
- run dashboard để kiểm tra
1 2 | microk8s dashboard<span class="token operator">-</span>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