防火墙环境下支配和管理 Kubernetes 的可行策略
译自Deploy Kubernetes Behind Firewalls Using These Techniques,作者 Mohan Sitaram。
随着 Kubernetes 和云原生系统成为支配和管理当代运用程序的事实标准,它们扩展到受限或防火墙环境带来了独特的寻衅。这些环境常日受监管合规性、安全问题或组织政策驱动,这些成分带来了架构、运营和安全方面的障碍。本文深入磋商了在防火墙后支配 Kubernetes 集群的繁芜性,供应了战胜这些障碍的办理方案和策略。

防火墙或受限环境限定了外部互联网访问以确保数据安全并保护系统免受未经授权的入侵。这些环境在金融、医疗保健和政府等具有严格监管哀求的行业中很常见。在这些环境中,常日只许可特定类型的流量,并且须要严格的监督。虽然这些掌握方法增强了安全性,但它们为 Kubernetes 等当代云原生根本举动步伐带来了重大寻衅,而 Kubernetes 依赖于互联网访问才能实现集群管理、镜像拉取和外部 API 通信等功能。
在防火墙环境中支配 Kubernetes 的寻衅
镜像管理和分发:Kubernetes 运用程序须要从容器注册表(如 Docker Hub、gcr.io 或 quay.io)供应容器镜像。在防火墙环境中,访问这些注册表常日受到限定或完备被阻挡。这可能会阻挡镜像拉取,从而阻碍运用程序的支配和升级。办理方案:为理解决这个问题,企业可以利用具有存储库复制或拉取缓存功能的注册表,在防火墙内本地托管容器镜像。这些注册表可以以受控办法复制或从外部注册表拉取镜像,确保必要的容器镜像可用,而无需持续访问互联网。Harbor 等注册表为这些环境供应了安全的内部镜像存储库。此外,利用镜像提升事情流可以确保只有经由验证的外部来源镜像才能进入安全注册表。
我利用过的另一种方法是通过网关或代理做事器复制镜像,该做事器与源注册表和目标注册表都具有连接性。当源注册表和目标注册表的 capabilities 未知时,此办理方案可能有效。imgpkg、crane 或 skopeo 等工具可以在超过防火墙边界的注册表之间复制镜像。例如,imgpkg 打包格式将运用程序的 helm 图表及其容器镜像捆绑为一个单元。imgpkg 捆绑包可以从源注册表导出为 tar 存档到代理做事器确当地文件系统。然后,此 tar 存档可以推送到防火墙后的注册表,imgpkg 确保捆绑包中运用程序的 helm 图表中的注册表引用会自动更新为指向目标注册表。
集群管理和掌握平面访问:Kubernetes 的掌握平面(API 做事器等)必须与事情节点和外部云 API 通信才能管理集群。但是,在防火墙环境中,外部访问这些 API 或掌握平面组件常日被阻挡或限定,这对监控、扩展和掌握集群提出了重大寻衅。办理方案:组织可以建立反向代理和 VPN 隧道技能来战胜这个问题。支配在非军事化区域 (DMZ) 中的反向代理可以处理来自防火墙内的 API 要求,同时供应安全的入口点。此外,堡垒主机和 VPN 网关可以许可对 Kubernetes 掌握平面进行受控的、安全的访问。这些主机位于内部网络之外,但充当受限环境和外部做事之间的桥梁,许可管理员与集群交互,而不会违反防火墙策略。
例如,Azure 许可创建支配在企业私有网络中的“私有” AKS 集群。出于安全缘故原由,默认情形下,对私有 AKS 集群的掌握平面的访问受到限定。但 Azure 还供应 Azure Bastion 等办理方案,该办理方案供应从外部天下安全访问私有集群。用户通过本地打算机上的 RDP 或 SSH 连接到 Azure Bastion,并可以通过代理访问私有集群。Bastion 卖力保护到私有集群的流量。
外部依赖和 DNS 解析:有时,在隔离的 Kubernetes 集群中运行的运用程序可能须要拉取外部依赖项,为此它可能须要解析防火墙外部的主机名。从 Pod 内部可能无法直接访问公共 DNS(如 Google DNS 或 Cloudflare DNS),并且运用程序可能无法拉取依赖项并无法启动。这将迫使组织或运用程序开拓职员在防火墙内办理依赖项,而这可能并非总是可行。办理方案:在 CoreDNS 中利用 DNS 转发。CoreDNS 是 Kubernetes 集群中的默认 DNS 解析器,可以配置为从防火墙内部解析外部 DNS 查询。可以修正 CoreDNS 以将 DNS 查询转发到特定主机名(如www.example.com)到外部解析器,并将所有其他查询解析到防火墙内。这可以通过利用“forward”CoreDNS插件来完成,将www.example.com的查询转发到 Google 或 CloudFlare DNS,并将所有其他内容(用“.”表示)转发到本地解析器,只需将它们指向 /etc/resolv.conf 即可。这确保了关键的 DNS 解析不会被防火墙策略阻挡,并且还许可防火墙管理员通过仅许可特定外部查询来保持网络安全。
更新、补丁和 Kubernetes 组件:定期更新和修补 Kubernetes 组件对付掩护安全、合规性和性能至关主要。但是,在防火墙环境中,自动更新可能会被阻挡,使集群随意马虎受到安全风险的攻击。办理方案:利用本地镜像和内部容器注册表来更新集群。Kubernetes 安装工具(如 Kubespray)许可在离线环境中进行集群管理。通过 Kubespray 安装和修补 Kubernetes 须要访问静态文件(如 kubectl 和 kubeadm)、操作系统包以及核心 Kubernetes 组件的一些容器镜像。静态文件可以通过在防火墙内运行 nginx/HAproxy 做事器来供应。操作系统包可以通过支配 yum 或 Debian 存储库确当地镜像来获取。Kubespray 所需的容器镜像可以通过运行本地实例的“kind”或 docker 注册表来供应,这些注册表中预先添补了镜像。 此外,公司可以利用持续集成/持续交付 (CI/CD) 管道以受控办法处理更新,在将变动推广莅临盆集群之前,在暂存集群上进行本地测试和验证。GitOps 是 CI/CD 的一个子种别,它会自动将变动支配到目标环境,这些变动由对 Git 存储库的提交触发。暂存和生产集群可以映射到不同的 Git 分支,并且可以通过首先将变动提交到暂存分支,对其进行彻底测试,然后才将相同的变动提交莅临盆分支来策略性地推出升级和补丁。这确保了集群纵然没有自动更新也能利用最新的安全补丁。
第三方集成和监控:当代 Kubernetes 运用程序常日依赖于第三方集成(如 Datadog)和外部存储办理方案(如 AWS S3 或 Google Cloud)存储。在防火墙环境中,出站流量受到限定,阻挡了与这些云托管做事的直接通信。办理方案:组织可以在其防火墙环境中支配自托管的替代方案来掩护可不雅观察性和监控。例如,可以在内部支配 Prometheus 和 Grafana 来处理指标和可视化,而分布式存储办理方案(如 Ceph 或 MinIO)可以更换外部云存储。这些工具可以复制外部做事的功,同时确保所有数据安全地保留在防火墙内。自托管替代方案的容器镜像和 helm 图表可以利用前面概述的镜像管理和分发技能拉取到隔离的环境中。
安全策略和合规性:安全和合规性问题常日是将 Kubernetes 支配到防火墙环境中的紧张缘故原由。医疗保健和金融等行业须要严格遵守 HIPAA 和 PCI-DSS 等法规,这些法规哀求利用安全的环境,并限定对敏感数据的访问。办理方案: Kubernetes 的原生功能,例如 Pod 安全策略 (PSP)、基于角色的访问掌握 (RBAC) 和网络策略,可以用来增强防火墙环境中 Kubernetes 集群的安全性。此外,支配像 Istio 这样的做事网格或 Linkerd 可以供应细粒度的流量掌握和安全性,确保只有授权的做事才能进行通信。这些网格还供应双向 TLS (mTLS) 用于加密微做事之间的流量,进一步增强安全性并符合法规。
入口掌握和负载均衡:在防火墙环境中,外部负载均衡做事(如 AWS ELB 或 GCP 负载均衡器)可能不可用,导致将流量路由到 Kubernetes 集群中运行的做事变得困难。Kubernetes 的内置 NodePort 类型做事不屈安,由于它们须要在所有 Kubernetes 节点上打开一个非标准端口。每个须要在集群外部公开的做事都须要一个单独的 NodePort 做事,从而使防火墙管理变得繁芜。办理方案:为了在集群外部公创办事,像 Istio 或 Contour 这样的入口网关可以充当代理,将流量路由到这些做事。它们保护对内部做事的访问,由于它们可以终止 TLS 流量并充当所有须要公开的做事的单一入口点。
私有负载均衡办理方案,如 MetalLB,可以支配以供应入口网关的 IP/主机名的高可用性。利用 MetalLB 和入口网关的组合可以提高安全性。只有一个 IP 地址/主机名须要保护,并且所有暴露做事的网络流量都将被加密。
在防火墙环境中支配和管理 Kubernetes 会带来独特的寻衅,从镜像管理和掌握平面访问到 DNS 解析和第三方集成。但是,通过精确的策略和工具,组织可以利用 Kubernetes 的强大功能,同时保持防火墙根本举动步伐所需的安全性、合规性和运营稳定性。容器注册表镜像复制、特定查询的 DNS 转发、VPN 隧道、入口网关和自托管监控工具等技能确保 Kubernetes 纵然在最受限定的环境中仍旧是一个可行的办理方案。
旨在采取云原生技能的组织必须仔细设计其根本举动步伐,确保知足安全哀求,而不会捐躯 Kubernetes 供应的可扩展性和灵巧性。通过利用上述办理方案,Kubernetes 集群纵然在高度受限的环境中也能有效运行。
本文在如斯众生(https://yylives.cc/)首发,欢迎大家访问。