kubernetes 通过AWS ALB Ingress上的Cloudfront公开AWS EKS服务

iyfjxgzm  于 2023-08-03  发布在  Kubernetes
关注(0)|答案(1)|浏览(120)

我想通过alb和CloudFront公开我们的Kubernetes服务。
我们已经创建了分布,并添加了负载平衡器源与X-Custom-Header:cloudfront-header
在负载均衡器中,我们手动创建了一个规则HTTP Header X-Custom-Header is cloudfront-header:转发到kubernetes-service-target-group:1(100%)
上面的解决方案似乎可以通过ALB上的CloudFront公开我们的Kubernetes服务,但我们希望通过engage.yaml文件进行此配置,因为对于任何配置更改,旧的规则都会被删除,这些规则是手动添加的。
cloudfront configurationAWS ALB configuration

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:ap-southeast-1:xxxx:certificate/daxxx-xxx-43c8-ada-cb5c97a1366b
    alb.ingress.kubernetes.io/group.name: domain-web
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}]'
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/ssl-redirect: "443"
    alb.ingress.kubernetes.io/target-type: ip
  finalizers:
  - group.ingress.k8s.aws/domain-web
  labels:
    app.kubernetes.io/instance: domain-web
    app.kubernetes.io/name: domain-web
  name: domain-web
spec:
  ingressClassName: alb
  rules:
  - host: market.domain.com
    http:
      paths:
      - backend:
          service:
            name: marketing
            port:
              number: 3000
        pathType: ImplementationSpecific              
  tls:
  - hosts:
    - market.domain.com

字符串

mv1qrgav

mv1qrgav1#

使用以下配置创建CloudFront分发版:

配置指向您的AWS ALB的Origin

  • Origin domain设置为您的ELB (AWS ALB) DNS
  • 仅当您希望它作为TLS终止时使用HTTPS

x1c 0d1x的数据

设置指向OriginDefault(*)行为:

  • 选择指向ELB (AWS ALB)Origin
  • 将HTTP重定向到HTTPS,因为我们在Origin中只接受HTTPS


设置-配置域和证书:

  • 添加要使用的域(例如,market.domain.com个)
  • 从AWS证书管理器添加market.domain.com*.domain.com的证书
    注意:如果您还没有在Route 53中定义子域域,这是可以接受的,但是在我们执行Route 53步骤之前,在此处定义子域域将有助于您完成此步骤。您可以随时返回并编辑Settings以添加域。


为您的子域添加Route 53记录

  • 转到Route 53Hosted zones
  • 返回您的域名注册
  • 点击Create record
  • 输入您在Record name上的子域(例如market)的数据。
  • 启用Alias切换
  • Route traffic to中选择Alias to CloudFront distribution
  • Choose distribution中,选择为market.domain.com创建的分发


确认

设置完成后,您应该能够通过market.domain.com向Kubernetes集群中的Service发出请求。
假设您有一条/healthcheck路由:

范例:

curl https://market.domain.com/healthcheck

字符串
这是可行的,因为请求将来自market.domain.com,它将具有以下HeaderHost: market.domain.com

说明:

  • AWS ALB将您的请求路由到Ingress对象(在本例中为domain-web),该对象使用Host标头来解析它必须将该请求传送到群集中的哪个Service
  • 这将等同于执行以下请求:
curl -H "Host: market.domain.com" k8s-sddsdfsds.us-east-1.elb.amazonaws.com/healthcheck

相关问题