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启动方式

在这里插入图片描述

posted on 2022-11-16 17:36  运维开发玄德公  阅读(73)  评论(0编辑  收藏  举报  来源

导航