kubernetes https入口规则

问题描述 投票:0回答:2

我在牧场主中定义了外部服务和允许我使用以下工具访问我的服务的入口规则:http://test.mycluster.ml

我要进行哪些更改才能使https://test.mycluster.ml做相同的事情?

现在我有这个:

apiVersion: v1
kind: Service
metadata:
  name: test
  namespace: default
spec:
  externalName: main.mycluster.ml
  ports:
  - port: 80
    protocol: TCP
    targetPort: 80
  sessionAffinity: None
  type: ExternalName

以及类似这样的入口规则:

apiVersion: extensions/v1beta1
  kind: Ingress
  metadata:
    annotations:
      nginx.ingress.kubernetes.io/upstream-vhost: main.mycluster.ml
    name: test
    namespace: default
  spec:
    rules:
    - host: test.mycluster.ml
      http:
        paths:
        - backend:
            serviceName: test
            servicePort: 80

如何做?

我曾尝试将服务更改为端口443和目标80,将入口更改为443,但未成功

 apiVersion: v1
    kind: Service
    metadata:
      name: test
      namespace: default
    spec:
      externalName: main.mycluster.ml
      ports:
      - port: 443
        protocol: TCP
        targetPort: 80
      sessionAffinity: None
      type: ExternalName

以及类似这样的入口规则:

apiVersion: extensions/v1beta1
  kind: Ingress
  metadata:
    annotations:
      nginx.ingress.kubernetes.io/upstream-vhost: main.mycluster.ml
    name: test
    namespace: default
  spec:
    rules:
    - host: test.mycluster.ml
      http:
        paths:
        - backend:
            serviceName: test
            servicePort: 443
kubernetes nginx-ingress rancher
2个回答
0
投票

目前,您的入口服务器在端口80上收到未加密的请求,并将其转发到服务的端口80。

因此,如果您想切换到加密的443 TCP端口(又名https):

  • 入口服务器前面的防火墙/安全组是否授权对端口443的请求?
  • 是您的入口服务器或您的Pod启动SSL连接吗?
  • 如果这是入口,则需要对其进行配置以接受SSL连接并为域test.mycluster.ml设置证书
  • 如果这是Pod,则需要配置它们以接受SSL连接并为域test.mycluster.ml设置证书

0
投票

您不能简单地通过将端口从80更改为443来转换您的入口。

首先,您必须安装NGINX Ingress控制器,然后使用Let's Encrypt证书和cert-manager配置TLS。您可以查看有关如何实施此解决方案的更详细步骤的这些文档:

Secure Kubernetes Services with Ingress, TLS and Let's Encrypt

Deploying Nginx Ingress and a Cert-Manager Controller on GKE using Helm 3

© www.soinside.com 2019 - 2024. All rights reserved.