- vừa được xem lúc

Build, Deploy Express Nodejs App với Docker Image, Kubernetes và Gitlab Registry

0 0 46

Người đăng: Nguyễn Văn Quy

Theo Viblo Asia

I, Đôi chút về Kubernetes

Kubernetes: là dịch vụ điều phối container. Được phát triển bởi Google và tặng lại cho Tổ chức Điện toán đám mây CNCF. Kubernetes hiện là nguồn mở. Có lợi thế là tận dụng nhiều năm kinh nghiệm trong quản lý container của Google. Đó là một hệ thống toàn diện để tự động hóa việc triển khai, lập lịch và nhân rộng các ứng dụng được đóng gói và hỗ trợ nhiều công cụ container hóa như Docker.

Nếu các bạn đã tìm hiểu về docker và hiểu rõ về khái niệm docker container. Thì Kubernetes cũng tương tự như thế, nó cũng nhân rộng và quản lý các ứng dụng container.

Để tìm hiểu chi tiết về các khái niệm Pods, Node hay Image Registry, Api bạn có thể đọc thêm tại: Cùng tìm hiểu về Kubernetes Architecture

II, Build, Deploy Express Nodejs App với Docker Image, Kubernetes và Gitlab Registry

1. Cài đặt Kubernetes Client:

  • Chúng ta sử dụng command kubectl để chạy các commands của Kubernetes clusters Cài đặt kubectl binary với curl trên Linux Tải về phiên bản mới nhất với câu lệnh:
curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl

Để tải về phiên bản cụ thể, hãy thay thế phần $(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt) trong câu lệnh với một phiên bản cụ thể.

Ví dụ như, để tải về phiên bản v1.20.0 trên Linux, hãy nhập như sau:

curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.20.0/bin/linux/amd64/kubectl

Tạo kubectl binary thực thi.

chmod +x ./kubectl

Đưa bản binary vào biến môi trường PATH của bạn.

sudo mv ./kubectl /usr/local/bin/kubectl

Kiểm tra chắc chắn rằng phiên bản bạn cài là mới nhất:

kubectl version

Cài đặt với OS khác tham khảo tại: Cài đặt và cấu hình kubectl

2. Tạo Express Node.js app

Tạo Node.js app

  • Bạn mở command line lên vào gõ:
 mkdir node-server
  • Sau đó tạo liên kết đến npm
 npm init
  • Tạo file index.js, .env.example
 touch index.js env.example

Và đây là nội dung của file index.js

const express = require('express');
const dotenv = require('dotenv');
dotenv.config();
var cors = require('cors')
const app = express();
app.use(cors()); app.get('/', async (req, res) => { console.log('Hello world');
}); app.listen(process.env.PORT);

Tạo file .env

 cp .env.example .env

Các bạn chạy thử app sẽ thấy:

Để deploy image lên Registry gitlab tham khảo tại: Deploy Node.js app đơn giản với Docker và Gitlab Registry

3. Kubernetes

Tạo file deployment.yaml

apiVersion: apps/v1beta1
kind: Deployment
metadata: name: node-server-deployment
spec: replicas: 3 template: metadata: labels: # labels to select/identify the deployment app: node-app spec: # pod spec  containers: - name: node-server image: registry.gitlab.com/web-sale/node-server:master ports: - containerPort: 3000

Và sau đó run command:

kubectl create -f deployment.yaml --save-config

Để xem các deployment đã chạy dùng lệnh:

kubectl get deployments

Xem các pods đang chạy:

kubectl get pods

Hoặc bạn có thể chạy riêng từng lệnh như sau:

  • Kiểm tra các worker nodes: kubectl get nodes
  • Tạo một deployment:
kubectl create deployment --image registry.gitlab.com/web-sale/node-server:master node-app
  • Scale up to 3 replicas:
kubectl scale deployment node-app --replicas 3
  • Expose deployment với port:
kubectl expose deployment node-app --port 3000

III. Tạm kết

Hy vọng sau bài viết các bạn đã có thể Build, Deploy Express Nodejs App với Docker Image, Kubernetes và Gitlab Registry. Rất mong được sự góp ý của các bạn

Bình luận

Bài viết tương tự

- vừa được xem lúc

Cài đặt WSL / WSL2 trên Windows 10 để code như trên Ubuntu

Sau vài ba năm mình chuyển qua code trên Ubuntu thì thật không thể phủ nhận rằng mình đã yêu em nó. Cá nhân mình sử dụng Ubuntu để code web thì thật là tuyệt vời.

0 0 374

- vừa được xem lúc

Phần 1: Giới thiệu về Kubernetes

Kubernetes là gì. Trang chủ: https://kubernetes.io/. Ai cần Kubernetes.

0 0 80

- vừa được xem lúc

Docker: Chưa biết gì đến biết dùng (Phần 1- Lịch sử)

1. Vì sao nên sử dụng. . .

0 0 89

- vừa được xem lúc

Docker - những kiến thức cơ bản phần 1

Giới thiệu. Nếu bạn đang làm ở một công ty công nghệ thông tin, chắc rằng bạn đã được nghe nói về Docker.

0 0 65

- vừa được xem lúc

Docker: Chưa biết gì đến biết dùng (Phần 2 - Dockerfile)

1. Mở đầu.

0 0 53

- vừa được xem lúc

Docker: Chưa biết gì đến biết dùng (Phần 3: Docker-compose)

1. Mở đầu. . .

0 0 106