首页 > 解决方案 > Swagger UI 在 kubernetes 内部试用

问题描述

我已经在 Kubernetes 上部署了 swagger UI。现在单击Try it out按钮时,它不会向 Kubernetes 的内部服务发送请求。

由于所有服务都在 Kubernetes 中本地运行,我们必须使用HTTP,但我的 swagger UI 是打开的,HTTPS所以也会出现混合内容错误。

有什么方法可以使用在 Kubernetes 中运行的 swagger UI 调用内部服务。

这是我的演示 swagger.yaml :

openapi: 3.0.1
servers:
  - url: '{scheme}://test-service'
    variables:
      scheme:
        description: 'The Data Set API is accessible via https and http'
        enum:
          - 'https'
          - 'http'
        default: 'https'
info:
  description: >-

标签: dockerkubernetesswagger

解决方案


我宁愿建议使用入口并在https域中添加更多规则。

入口:

 apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    cert-manager.io/cluster-issuer: swagger-staging
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /$2
  name: swagger-ingress
  namespace: default
spec:
  rules:
  - host: example.com
    http:
      paths:
      - path: /test-service(/|$)(.*)
        backend:
          serviceName: service-1
          servicePort: 80
      - path: service-2(/|$)(.*)
        backend:
          serviceName: service-2
          servicePort: 80
      - path: /service-3(/|$)(.*)
        backend:
          serviceName: service-3
          servicePort: 80
      - path: /service-4(/|$)(.*)
        backend:
          serviceName: service-4
          servicePort: 80
      - path: /service-5(/|$)(.*)
        backend:
          serviceName: service-5
          servicePort: 80

注意:如果您尝试使用 https 更新入口,然后尝试使用端口转发,它将无法正常工作,并且同样会出现浏览器混合内容的错误。


推荐阅读