原创 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
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
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
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
2
3
使用浏览器访问验证部署情况。
本站站点open in new window就是部署在 K8S 上。