【问题标题】:how ingress decides whether he has to expose kubernetes service on http or https?ingress 如何决定他是否必须在 http 或 https 上公开 kubernetes 服务?
【发布时间】:2019-02-13 09:13:16
【问题描述】:

我已经在 kubernetes 上设置了 Strapi,一切运行良好,但是当我试图从我的前端应用程序中访问由 Strapi 公开的 API 时,我收到了一个错误,因为 Kubernetes 入口已经在 HTTP 上暴露了 Strapi。我不知道如何为 HTTPS 请求配置strapi。如果有人可以指导我,我会很高兴。

【问题讨论】:

  • 您的 Kubernetes 托管在哪里?答案将取决于此,因为 Ingress 有不同的变体。

标签: docker https kubernetes kubernetes-ingress strapi


【解决方案1】:

基本上,Ingress 提供了不同的 TLS 终止机制。

如果您的前端应用程序可以处理 https,您应该只将 tls 流量路由到相应的服务。如果您的前端应用程序没有 tls 功能,您应该使用入口 https 终止。 https://kubernetes.io/docs/concepts/services-networking/ingress/

http:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - path: /testpath
        backend:
          serviceName: test
          servicePort: 80

来自 kubernetes 的 https 配置示例,如果您的服务不执行 https 会是什么样子:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: frontend-application-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  tls: 
  - hosts: 
    - mydomain.com
    secretName: mycertificate
  rules:
  - host: mydomain.com
    https:
      paths:
      - path: /
        backend:
          serviceName: frontend-application
          servicePort: http

【讨论】:

  • 使用 https: 代替 http:;在规则部分为我生成了一个例外:```未知字段“https” in io.k8s.api.extensions.v1beta1 ```
猜你喜欢
  • 1970-01-01
  • 2020-04-07
  • 2020-03-19
  • 2021-06-04
  • 2016-12-21
  • 2018-09-11
  • 2020-02-09
  • 2020-03-09
  • 2020-09-13
相关资源
最近更新 更多