6.3. Configure Amazon CloudFront
检索新创建的自定义 ingress 控制器的 NLB 主机名:
$ NLB=$(oc -n openshift-ingress get service router-cloudfront-waf \ -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')
将您的证书导入到 Amazon 证书管理器中,其中
cert.pem
是您的通配符证书,fullchain.pem
是您的通配符证书的链,privkey.pem
是您的通配符证书的私钥。注意无论您部署了集群是什么,都必须将此证书导入到
us-east-1
中,因为 Amazon CloudFront 都是全局 AWS 服务。示例
$ aws acm import-certificate --certificate file://cert.pem \ --certificate-chain file://fullchain.pem \ --private-key file://privkey.pem \ --region us-east-1
- 登录到 AWS 控制台 以创建 CloudFront 发行版。
使用以下信息配置 CloudFront 发行版:
注意如果没有在下表中指定选项,请保留默认值(可能为空)。
选项 值 原始域
上一命令的输出 [1]
Name
rosa-waf-ingress [2]
查看器协议策略
将 HTTP 重定向到 HTTPS
允许的 HTTP 方法
GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE
缓存策略
CachingDisabled
原始请求策略
AllViewer
Web 应用程序防火墙(WAF)
启用安全保护
使用现有的 WAF 配置
true
选择 Web ACL
cloudfront-waf
备用域名(CNAME)
*.apps.example.com [3]
自定义 SSL 证书
从上面的步骤中选择您导入的证书 [4]
-
运行
echo ${NLB}
以获取原始域。 - 如果您有多个集群,请确保原始名称是唯一的。
- 这应该与您用来创建自定义入口控制器的通配符域匹配。
- 这应该与上面输入的替代域名匹配。
-
运行
检索 Amazon CloudFront Distribution 端点:
$ aws cloudfront list-distributions --query "DistributionList.Items[?Origins.Items[?DomainName=='${NLB}']].DomainName" --output text
使用 CNAME 将自定义通配符域的 DNS 更新到上面步骤中的 Amazon CloudFront 分发端点。
示例
*.apps.example.com CNAME d1b2c3d4e5f6g7.cloudfront.net