Yaml eks负载平衡器的https

Yaml eks负载平衡器的https,yaml,kubectl,kubernetes-ingress,amazon-eks,Yaml,Kubectl,Kubernetes Ingress,Amazon Eks,我想保护在Kubernetes(EKS)上运行的web应用程序的安全。 我有一个前端服务。前端服务在端口80上运行。我想在端口443上运行此服务。当我获得所有信息时,我看到我的负载平衡器在端口443上运行,但我无法在浏览器中打开它 --- apiVersion: v1 kind: Service metadata: name: hello-kubernetes annotations: service.beta.kubernetes.io/aws-load-balancer-ss

我想保护在Kubernetes(EKS)上运行的web应用程序的安全。 我有一个前端服务。前端服务在端口80上运行。我想在端口443上运行此服务。当我获得所有信息时,我看到我的负载平衡器在端口443上运行,但我无法在浏览器中打开它

---
apiVersion: v1
kind: Service
metadata:
  name: hello-kubernetes
  annotations:
    service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:us-west-2:1234567890:certificate/12345c409-ec32-41a8-8542-712345678
    service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
spec:
  type: LoadBalancer
  ports:
  - port: 443
    targetPort: 80
    protocol: TCP
  selector:
    app: hello-kubernetes
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-kubernetes
spec:
  replicas: 1
  selector:
    matchLabels:
      app: hello-kubernetes
  template:
    metadata:
      labels:
        app: hello-kubernetes
    spec:
      containers:
      - name: hello-kubernetes
        image: 123456789.dkr.ecr.us-west-2.amazonaws.com/demoui:demo123
        ports:
        - containerPort: 80
        env:
        - name: MESSAGE
          value: Hello Kubernetes!
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: hello-ingress
  annotations:
    kubernetes.io/ingress.class: "alb"
    alb.ingress.kubernetes.io/healthcheck-path: "/"
    alb.ingress.kubernetes.io/success-codes: "200,404"
    alb.ingress.kubernetes.io/scheme: "internet-facing"
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP":80} , {"HTTPS": 443}]'
spec:
  rules:
  - http:
      paths:
      - path: /
        backend:
          serviceName: hello-kubernetes
          servicePort: 80

下面是我的集群可以在https上运行的内容

在我的入口/负载平衡器中:

service.beta.kubernetes.io/aws-load-balancer-ssl-cert: CERT
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: https
    # ports using the ssl certificate
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http
    # which protocol a Pod speaks
在我的入口控制器中,nginx配置的配置映射:

    app.kubernetes.io/force-ssl-redirect: "true"
希望这对您有用。

旨在在Ingress YAML配置文件中创建AWS级别的应用程序负载平衡器和相关资源。实际上,ALB Ingress controller从Ingress YAML定义文件解析负载平衡器的配置,然后对指定实例和特定节点上公开的每个Kubernetes服务应用一个配置。在顶层,根据AWS ALB Ingress Controller官方工作流程,公开负载平衡器的连接端口,并根据定义的路由规则决定请求路由

在简短的理论讲解之后,我对您当前的配置有一些顾虑:

    app.kubernetes.io/force-ssl-redirect: "true"
  • 首先,我建议检查AWS ALB入口控制器
    并检查相关日志:
  • kubectl日志-n kube系统$(kubectl获取po-n kube系统| egrep-o“alb入口[a-zA-Z0-9-]+”)

    然后验证是否已在AWS中成功生成负载平衡器

  • 检查特定ALB的目标群体,以确保 对k8s实例的检查都是良好的

  • 确保安全组是否包含适用于实例的防火墙规则,以便允许ALB上的入站和出站网络流量

  • 我鼓励您熟悉官方AWS ALB入口控制器中关于HTTP到HTTPS重定向的专门章节


    我的案例应该是alb.kubernetes.io/force-ssl-redirect:“true”?我认为它仍然是应用程序,但你应该尝试两者,我有一个经典的LB,我使用nginx作为内部入口。我在nginx配置中控制它,nginx.conf文件,尽管不理想。这是我的临时解决方案,线程中提供的其他解决方案不起作用。我希望我的设置为aws api网关-->大使/traefik-->eks alb负载平衡器