yaml - 用于 eks 负载均衡器的 https

标签 yaml kubectl kubernetes-ingress amazon-eks

我想保护在 Kubernetes (EKS) 上运行的 Web 应用程序的安全。
我有一个前端服务。前端服务在端口 80 上运行。我想在端口 443 上运行它。当我 kubectl get all 时。我看到我的负载均衡器正在端口 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

最佳答案

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

在短暂的理论之旅之后,我对您当前的配置有一些担忧:

  • 首先,我建议检查 AWS ALB Ingress Controller
    setup并检查相关日志:
  • kubectl logs -n kube-system $(kubectl get po -n kube-system | egrep -o "alb-ingress[a-zA-Z0-9-]+")
    然后验证AWS内是否已经成功生成Load Balancer console .
  • 检查 目标群体 对于特定的 ALB,以确保是否
    health检查 k8s 实例都很好。
  • 确保,是否安全组 包含适用于您的实例的适当防火墙规则,以允许跨 ALB 的入站和出站网络流量。

  • 我鼓励您熟悉官方 AWS ALB 入口 Controller 中有关 HTTP 到 HTTPS 重定向的专门章节 documentation .

    关于yaml - 用于 eks 负载均衡器的 https,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56814167/

    相关文章:

    networking - 通过外部网络架构在裸机集群上公开 Kubernetes 服务

    kubernetes - Traefik 边缘路由器前面的负载均衡

    python - 使用 Python、Kubernetes api 调用 YAML 到 JSON

    ruby - I18n::InvalidLocaleData:I18n gem 在 js 导出中有问题

    ubuntu - 无法在浏览器中访问 minikube 服务,但 curl 工作正常

    kubernetes - 在 Kubernetes 中创建作业和 cronjob 的命令式命令

    go - viper yaml 配置序列

    python - 使用 GAE 的 Yaml 寻址和模板不起作用? TemplateDoesNotExist 只是通过 yaml 中的简单更改?

    kubernetes - 验证数据时出错 : [ValidationError(Pod): unknown field "containers" in io. k8s.api.core.v1.Pod

    apache - 400 Bad Request 您正在向启用 SSL 的服务器端口 kubernetes pod 使用普通 HTTP