k8s的swagger-ui服务
1. 获取配置文件
- 开启k8s的api临时端口
说明:
- 为导出k8s集群的api信息作为swagger-ui的配置文件,我们临时开一个api的临时端口
- 该端口:只允许本地访问,不需要认证
- 临时开一下就可以,导出后我们关掉它。
kubectl proxy --port=8082
- 获取配置文件
上边的命令前台输出,因此我们从新开一个终端,输入如下命令
curl localhost:8080/openapi/v2 > k8s-swagger.json
2. 启动swagger-ui
创建swagger-ui
目录,将k8s-swagger.json
文件拷贝到该目录。(必要,否则只有demo)
之后我们可以用以下几种方式启动:
2.1 用docker部署
- 在
swagger-ui
目录命令如下:
docker run \
--rm \
-d \
-p 81:8080 \
-e SWAGGER_JSON=/k8s-swagger.json \
-v $(pwd)/k8s-swagger.json:/k8s-swagger.json \
swaggerapi/swagger-ui
- web访问见2.2示例
2.2 用docker-compose部署
- 在
swagger-ui
目录下创建docker-compose.yml 文件,内容如下:
version: '3'
services:
swagger_ui:
image: 'swaggerapi/swagger-ui'
restart: always
container_name: swagger-ui
volumes:
- ./k8s-swagger.json:/k8s-swagger.json
ports:
- '81:8080'
environment:
SWAGGER_JSON: /k8s-swagger.json
- 启动服务
docker-compose up -d
- 查看结果
[root@crust-m01 swagger-ui]# docker-compose ps
Name Command State Ports
----------------------------------------------------------------------------------
swagger-ui /docker-entrypoint.sh ngin ... Up 80/tcp, 0.0.0.0:81->8080/tcp
- web访问
2.3 在k8s平台部署
- 从刚才导出的
k8s-swagger.json
文件创建configmap
kubectl create configmap k8s-swagger --from-file=k8s-swagger.json=k8s-swagger.json
- 创建deployment.yml文件如下:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: swagger
name: swagger
namespace: kube-system
spec:
replicas: 1
selector:
matchLabels:
app: swagger
template:
metadata:
labels:
app: swagger
spec:
containers:
- image: harbocto.boe.com.cn/public/swagger-ui
imagePullPolicy: IfNotPresent
name: swagger
volumeMounts:
- mountPath: /k8s-swagger.json
name: k8s-swagger
subPath: k8s-swagger.json
volumes:
- name: k8s-swagger
configMap:
name: k8s-swagger
---
apiVersion: v1
kind: Service
metadata:
labels:
app: swagger
name: swagger
namespace: kube-system
spec:
ports:
- port: 8080
protocol: TCP
targetPort: 8080
nodePort: 30001
selector:
app: swagger
type: NodePort
- url:http://IP:3001
效果同docker-compose启动方式