Openflow BYOC – 设置自定义入口

本主题介绍了在您自己的 AWS 账户中设置 Openflow BYOC 部署并使用自定义入口解决方案时需要考虑的事项和所需步骤。

优势

Openflow BYOC 部署的自定义入口为您的组织提供以下优势:

  • 更强的安全性,通过网络级限制,可将访问权限仅限于您的 VPN 或私有网络。

  • 完全控制用于访问 Openflow 的 URL 和 TLS 证书,以满足您的安全与合规要求。

注意事项

使用 Snowflake 托管的入口时,Openflow 会为您的 BYOC 部署中的 Openflow 运行时创建必要的 DNS 记录、公共负载均衡器,并管理 TLS 证书。

当您启用自定义入口时,Openflow 将不再自动管理外部 DNS 记录,不会自动创建公共负载均衡器,也将不再管理 Openflow 运行时的证书。您必须在您自己的 AWS 账户中管理这些资源。

Openflow 托管入口与自定义入口的对比,重点说明了 DNS、负载均衡器和证书方面的额外要求。

在 Snowflake Openflow 中配置自定义入口

  1. 在部署创建过程中启用自定义入口。

    • 在部署创建过程中,启用 Custom ingress 选项并在 Hostname 字段中指定首选完全限定域名 (FQDN)。

    • 您必须能够管理此 DNS 记录并为此 FQDN 创建 TLS 证书。不要使用 snowflakecomputing.cn 的子域。

    • FQDN 中不得包含协议 https:// 或尾部斜杠 /

    • 例如,如果您指定 openflow01.your-domain.org,您将通过 https://openflow01.your-domain.org/my-runtime/nifi/ 访问名为“My Runtime”的运行时。

  2. 下载 CloudFormation 模板。此文件包含 Openflow 作为自定义入口域运行所需的所有设置。

在 AWS 中配置自定义入口

备注

{deployment-key} 表示 Openflow 为特定部署创建并托管的云资源所使用的 Openflow 唯一标识符。

该信息位于 CloudFormation 模板的 DataPlaneKey 参数中,也可以通过 Openflow 中部署的 View Details 菜单选项查看。

  1. 将以下标签添加到 Openflow 部署的专用子网中:

    • 键:kubernetes.io/role/internal-elb

    • 值:1

  2. 如果您的私有子网被其他 EKS 集群使用,您还必须使用 Openflow 集群的名称来标记它们。这允许 Openflow 与其他负载均衡器一起创建负载均衡器。

    • 键:kubernetes.io/cluster/{deployment-key}

    • 值:1

  3. 上传 CloudFormation 模板。等待大约 30 分钟,让 Openflow 创建内部网络负载均衡器。

    • 您可以在 AWS 控制台中的 EC2 » Load Balancers 下找到内部网络负载均衡器。

    • 负载均衡器将被命名为 runtime-ingress-{deployment-key}

  4. 获取 Openflow 管理的 AWS 内部网络负载均衡器的内部 IP 地址。

    • EC2 » Load Balancers 下,进入详情页面并复制负载均衡器的 DNS name

    • 登录代理 EC2 实例(标识为 openflow-agent-{deployment-key}),并运行命令 nslookup {openflow-load-balancer-dns-name}

    • 复制 Openflow 管理的 AWS 内部网络负载均衡器的 IP 地址。这些是您将在后续步骤中创建的负载均衡器目标组的目标。

  5. 提供 TLS 证书。

    • 为负载均衡器获取 TLS 证书,该负载均衡器将处理 Openflow 运行时 UIs 的流量。您可以使用 AWS 证书管理器 (ACM) 生成证书或导入现有的证书。

  6. 创建一个网络负载均衡器,用于将流量路由到 Openflow 管理的 AWS 内部网络负载均衡器。

    1. 在 AWS 账户中,使用以下配置创建网络负载均衡器:

      • 名称:我们推荐的命名约定是 custom-ingress-external-{deployment-key},其中 {deployment-key} 是 Openflow 部署的关键。

      • 类型:Network Load Balancer

      • 方案:InternalInternet-facing,具体取决于您的要求。

      • VPC:选择部署的 VPC

      • 可用区:选择 Openflow 部署正在运行的两个可用区。

      • 子网:为 Internal 负载均衡器选择您的 VPC 的私有子网,或为 Internet-facing 负载均衡器选择您的 VPC 的公共子网。

      • 安全组:选择或创建允许流量经过端口 443 的安全组

      • 默认 SSL/TLS 服务器证书:导入 SSL/TLS 证书

      • 目标组:使用以下设置创建新的目标组:

        • 目标类型:IP addresses

        • 协议:TLS

        • 端口:443

        • VPC:验证 VPC 是否与您的部署匹配

        • 将上一步中获取的 Openflow 创建的内部网络负载均衡器的 IP 地址作为目标输入,并选择 Include as pending below

    2. 创建负载均衡器后,复制要在下一步中使用的负载均衡器的 DNS 名称。

    3. 有关如何创建网络负载均衡器的更多信息,请参阅 创建网络负载均衡器 (https://docs.aws.amazon.com/elasticloadbalancing/latest/network/create-network-load-balancer.html)。

  7. 创建一个 DNS CNAME 记录,将您的自定义入口 FQDN 映射到 AWS 负载均衡器的 DNS 名称。

    • 有关 Route 53 中的详细 DNS 配置说明,请参阅 在 Route 53 中创建记录 (https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/resource-record-sets-creating.html)。

验证

  1. Openflow 部署在 Deployments 页面中显示状态为 Active

  2. 在 Openflow 部署中创建运行时。

  3. 一旦运行时状态为 Active,点击运行时名称或使用 View canvas 菜单选项即可访问该运行时的 UI。

  4. Openflow 会将您定向到具有在创建部署期间指定的主机名的运行时。例如 https://openflow01.your-domain.org/my-runtime/nifi/

故障排除

以下部分提供了自定义入口常见问题的故障排除步骤。如果在执行这些检查后仍然遇到问题,请提交 Snowflake 支持 工单。

负载均衡器目标运行状况检查

网络负载均衡器的目标组应列出 Openflow 管理的内部网络负载均衡器的 IP 地址作为目标。所有这些目标应显示为 Healthy。如果目标是 Unhealthy,使用以下检查项来缩小流量故障发生的范围。

  1. 在 AWS 控制台中,打开 EC2 » Load Balancers

  2. 找到管理 Kubernetes 集群入口的 Openflow 管理的负载均衡器。此负载均衡器名为 runtime-ingress-{deployment-key}

  3. Resource map 选项卡下查看该负载均衡器的目标运行状况。

  4. 如果 Openflow 管理的负载均衡器未处于活动状态或具有 Unhealthy 目标:

    • Openflow 管理的负载均衡器与 BYOC 集群之间的流量可能被阻断,或者集群内部的某个服务尚未就绪。

    • 通过在 openflow-agent-{deployment-key} EC2 实例上运行 ./diagnostics.sh 来生成诊断捆绑包,并将其附加到 Snowflake 支持 工单。

  5. 如果 Openflow 管理的负载均衡器处于活动状态且具有运行状况良好的目标,请检查负载均衡器的目标运行状况。

  6. 如果负载均衡器的目标为 Unhealthy,则从您的负载均衡器到 Openflow 管理的负载均衡器的路径极有可能是问题所在:

    • 目标组中的 IP 地址不正确或已过时。 Openflow 管理的负载均衡器会公开多个可能随时间变化的 IP 地址。要获取最新值,请结合 Openflow 管理的负载均衡器的 DNS name 运行 nslookup。请根据需要更新负载均衡器的目标。

    • 安全组规则。 确认 Openflow 管理的负载均衡器安全组的入站规则允许来自您负载均衡器的 TCP 443。如果您的负载均衡器无法通过端口 443 访问 Openflow 负载均衡器,则流量可能会失败。

浏览器安全拦截

自定义入口的某些问题是由公司浏览器安全策略、防火墙或 Web 代理拦截或检查发往自定义主机名的流量引起的。这些策略与 AWS 负载均衡器配置是相互独立的。您可能会发现,即使 AWS 负载均衡器报告目标运行状况良好,用户也无法打开 Openflow UI。

要验证通过负载均衡器与 Openflow 服务的连接,请执行以下操作:

  1. 在 AWS 控制台,打开 EC2 » Load Balancers 以获取处理流量的负载均衡器的 DNS 名称,以及自定义 Ingress 域名的 TLS 证书。

    • 不是 runtime-ingress-{deployment-key} 负载均衡器。

  2. openflow-agent-{deployment-key} EC2 实例出发,通过负载均衡器验证与 Openflow 部署的连通性。运行命令:

    curl -kv https://{your-load-balancer-dns-name}
    
    • 如果该命令输出预期的证书信息和成功的 404 状态代码响应,则表示您已成功验证与 Openflow 部署的连接性。

    • 如果命令超时或返回错误,请创建 Snowflake 支持 工单,并附上在 Openflow Agent 实例上运行 ./diagnostics.sh 所生成的诊断包。

  3. 在 Openflow Agent 实例中,您还可以验证自定义入口 FQDN 的 DNS CNAME 记录运行命令:

    source ~/.env && nslookup $DOMAIN
    
    • 如果该命令返回为自定义入口域名执行 TLS 终止的负载均衡器的 IP 地址,则说明您已成功验证 DNS CNAME 记录。

    • 如果该命令未返回任何结果,则 DNS CNAME 记录配置不正确。检查自定义入口 FQDN 的 DNS 记录,并确保它指向您的负载均衡器的 DNS 名称。

如果 Openflow Agent 已通过负载均衡器的 DNS 成功连接,并且您已验证 DNS CNAME 记录,安全策略或防火墙可能会阻止从您的浏览器到 Openflow BYOC 部署的流量。与安全团队合作,将自定义入口 FQDN 列入允许列表。