eks http https使用入口重定向

时间:2019-12-17 17:36:37

标签: amazon-web-services kubernetes eks

这是我的入口文件,我需要的是如何在入口文件中添加https重定向设置,我使用服务文件完成了它,并且它可以工作,但是在降低成本之后,我决定使用SINGLE入口文件来管理多个服务单个AWS CLASSIC负载均衡器。

   apiVersion: extensions/v1beta1
    kind: Ingress
    metadata:
      generation: 4
      name: brain-xx
      namespace: xx
    spec:
      rules:
      - host: app.xx.com
        http:
          paths:
          - backend:
              serviceName: xx-frontend-service
              servicePort: 443
            path: /
    status:
      loadBalancer:
        ingress:
        - ip: xx.xx.xx.xx

1 个答案:

答案 0 :(得分:0)

我设法在GKE上创建了httphttps重定向。让我知道该解决方案是否适用于您在AWS上的案例:

复制步骤

  • 应用入口定义
  • 配置基本的HTTP入口资源
  • 创建SSL证书
  • 在启用HTTPS的情况下替换旧的Ingress资源。

应用入口定义

请遵循此Ingress link ,以检查是否有任何必要的先决条件,然后再在您的AWS基础设施上安装NGINX Ingress控制器并进行安装。

配置基本的HTTP入口资源并对其进行测试

下面的示例是仅使用HTTP流量的Ingress配置。 它将作为起点:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-http
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
  - host: xx.yy.zz
    http:
      paths:
      - path: /
        backend:
          serviceName: hello-service
          servicePort: hello-port
      - path: /v2/ 
        backend: 
          serviceName: goodbye-service 
          servicePort: goodbye-port

请更改此文件以反映适合您情况的配置。

创建SSL证书

要使其在没有浏览器安全警告的情况下起作用,您将需要有效的SSL证书和域名。

要创建此证书,您可以使用例如:Linode create Let's Encrypt SSL certificates

让我们的加密将创建文件,这些文件将在以后使用。

配置HTTPS入口资源并对其进行测试

默认情况下,如果未提供Nginx Ingress证书,则它将创建一个自签名证书。要提供给他一个,您需要将其作为秘密添加到您的Kubernetes集群中。

正如我之前所说,Let's Encrypt创建的文件(cert.pem privkey.pem)将被添加到Kubernetes中以配置HTTPS。

以下命令将使用此文件为Ingress创建密钥:

$ kubectl create secret tls ssl-certificate --cert cert.pem --key privkey.pem

此Ingress配置支持HTTPS并将所有流量重定向到它:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-https
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
spec:
  tls:
  - secretName: ssl-certificate
  rules:
  - host: xx.yy.zz 
    http:
      paths:
      - path: /
        backend:
          serviceName: hello-service
          servicePort: hello-port
      - path: /v2/ 
        backend: 
          serviceName: goodbye-service 
          servicePort: goodbye-port 

请更改此文件以反映适合您情况的配置。

看看这个片段,它将启用HTTPS并将所有流量重定向到它:

    nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
spec:
  tls:
  - secretName: ssl-certificate

应用此配置,然后检查它是否对您有用。

下面是curl输出的一部分,该结果表明连接到http://xx.yy.zz可以重定向到https://xx.yy.zz

< HTTP/1.1 308 Permanent Redirect
< Server: openresty/1.15.8.2
< Date: Fri, 20 Dec 2019 15:06:57 GMT
< Content-Type: text/html
< Content-Length: 177
< Connection: keep-alive
< Location: https://xx.yy.zz/