原创 Vuepress 部署在 K8S 上

从 0 到 1 介绍如何使用 Vuepress 及部署到 K8S,包含如何生成 docker 镜像,部署到 K8S 上。

1. 构建镜像

生成静态HTML文件

Gitbook 迁移至 Vuepress 2 中提到 生成 HTML 静态文件的命令,在文档目录下执行。

npm run docs:build
1

创建 dockerfile

基于 nginx:alpine 构建,镜像一共 23M,很小了。

.vuepress/dist/ 拷贝到 NGINX 默认的文档目录 /usr/share/nginx/html/

如果需要修改 NGINX 配置文件,可以 拷贝到本地,然后再通过 ADD 拷贝到镜像中。

FROM nginx:alpine
WORKDIR /usr/share/nginx/html
ADD book/docs/.vuepress/dist/ /usr/share/nginx/html/
ADD etc/nginx/nginx.conf /etc/nginx/nginx.conf
ADD etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
1
2
3
4
5
6

构建镜像

在 dockerfile 所在目录下执行 docker build

docker build -t bigdatabook:0.01 .
1

可以使用 docker images 查看镜像列表

2. 创建 K8S 资源

有了镜像,接下来创建 K8S 资源 deployment 和 service.

准备K8S资源配置文件

deployment: 部署管理的配置文件

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    k8s-app: bigdatabook
  name: bigdatabook
  namespace: dhcp-cn 
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  selector:
    matchLabels:
      k8s-app: bigdatabook
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      labels:
        k8s-app: bigdatabook
      name: bigdatabook
    spec:
      containers:
      - image: bigdatabook:0.01
        imagePullPolicy: IfNotPresent
        name: bigdatabook
        resources:
          requests:
            cpu: "0.1"
            memory: 100Mi
      dnsPolicy: ClusterFirst
      restartPolicy: Always
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

service:对外暴露访问的路由

apiVersion: v1
kind: Service
metadata:
  labels:
    k8s-app: bigdatabook
  name: bigdatabook
  namespace:  dhcp-cn
spec:
  externalTrafficPolicy: Cluster
  ports:
  - name: bigdatabook
    port: 10080
    protocol: TCP
    targetPort: 80
  selector:
    k8s-app: bigdatabook
  type: LoadBalancer
status:
  loadBalancer:
    ingress:
    - hostname: localhost
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

部署 K8S 资源

将自定义的资源(上述两个文件在 k8s-conf 目录下)部署到 K8S 集群中

kubectl apply -f k8s-conf/
1

使用 kubectl get 查看两个资源的部署情况

kubectl get deployment -n dhcp-cn

kubectl get service -n dhcp-cn
1
2
3

使用浏览器访问验证部署情况。

本站站点open in new window就是部署在 K8S 上。