本页面介绍如何为 Anthos clusters on Bare Metal 设置代理和防火墙规则。
配置代理服务器
如果用于引导节点和集群节点的机器使用代理服务器访问互联网,您必须:
- 在集群节点上为软件包管理器配置代理
- 在集群配置文件中配置代理详细信息。
前提条件
您的代理服务器必须允许连接到以下地址:
地址 | 用途 |
---|---|
*.gcr.io |
从 Container Registry 中拉取映像。 |
accounts.google.com |
处理 OpenID 的授权请求,并发现用于验证令牌的公钥。 |
cloudresourcemanager.googleapis.com |
解析与集群所连接的 Google Cloud 项目有关的元数据。 |
compute.googleapis.com |
验证 Cloud Logging 和 Cloud Monitoring 资源区域。 |
dl.fedoraproject.org |
使用 Red Hat Enterprise Linux (RHEL) 发行版时,安装 Extra Packages for Enterprise Linux (EPEL)。 |
download.docker.com |
添加 Docker 代码库。如果您在代理后运行管理员工作站,此地址是必需的。如果将 Docker 用于容器运行时,对于在代理后运行的节点机器,此地址是必需的。 |
gkeconnect.googleapis.com |
建立用于接收 Google Cloud 请求的渠道并发出响应。 |
gkehub.googleapis.com |
创建与要连接到 Google Cloud 的集群对应的 Google Cloud 端舰队成员资源。 |
iam.googleapis.com |
创建服务帐号,可用于向 Google Cloud 进行身份验证和执行 API 调用。 |
iamcredentials.googleapis.com |
提供审核日志记录准入控制和遥测报告。 |
logging.googleapis.com |
写入日志条目并管理您的 Cloud Logging 配置。 |
monitoring.googleapis.com |
管理您的 Cloud Monitoring 数据和配置。 |
packages.cloud.google.com |
从 Google Cloud 软件包镜像下载软件包。 |
oauth2.googleapis.com |
通过 OAuth 令牌交换进行身份验证以获取帐号访问权限。 |
opsconfigmonitoring.googleapis.com |
收集 pod、部署或节点等 Kubernetes 资源的元数据以丰富指标查询。 |
securetoken.googleapis.com |
检索工作负载身份授权的刷新令牌。 |
servicecontrol.googleapis.com |
将审核日志条目写入 Cloud Audit Logs。 |
serviceusage.googleapis.com |
启用并验证服务和 API。 |
stackdriver.googleapis.com |
管理 Google Cloud 的运维套件元数据,例如 Stackdriver 帐号。 |
storage.googleapis.com |
管理对象存储和存储桶,例如 Container Registry 对象。 |
sts.googleapis.com |
将 Google 或第三方凭据换成 Google Cloud 资源的短期访问令牌。 |
www.googleapis.com |
对来自传入的 Google Cloud 服务请求的服务令牌进行身份验证。 |
除了这些网址之外,代理服务器还必须允许操作系统软件包管理器需要的所有软件包镜像。您可以更新软件包管理器配置,以使用更具确定性的列表以方便管理。
在集群节点上为软件包管理器配置代理
Anthos clusters on Bare Metal 使用 Ubuntu 上的 APT 软件包管理器以及 CentOS 和 Red Hat Linux 上的 DNF 软件包管理器。确保操作系统软件包管理器具有正确的代理配置。
如需详细了解如何配置代理,请参阅您的操作系统发行版的文档。以下示例展示了配置代理设置的一种方法:
APT
以下命令演示了如何为 APT 配置代理:
sudo touch /etc/apt/apt.conf.d/proxy.conf
echo 'Acquire::http::Proxy "http://[username:password@]domain";' \ >> /etc/apt/apt.conf.d/proxy.conf
echo 'Acquire::https::Proxy "http://[username:password@]domain";' \ >> /etc/apt/apt.conf.d/proxy.conf
将 [username:password@]domain 替换为特定于您的配置的详细信息。
DNF
以下命令演示了如何为 DNF 配置代理:
echo "proxy=http://[username:password@]domain" >> /etc/dnf/dnf.conf
将 [username:password@]domain 替换为特定于您的配置的详细信息。
在集群配置文件中配置代理详细信息
在集群配置文件中,设置以下值以将集群配置为使用代理:
proxy.url
指定代理网址的字符串。引导和节点机器使用此代理访问互联网。 代理网址字符串必须以其架构开头,例如“http://”或“https://”。
proxy.noProxy
不应通过代理服务器的 IP 地址、主机名和域名的列表。
大多数情况下,您不需要向此列表中添加任何项。
noProxy
使用场景:
使用位于同一专用网络中的私有软件包镜像(不需要代理即可访问)
使用位于同一专用网络中的私有注册表镜像(不需要代理即可访问)
示例
以下是集群配置文件中代理设置的示例:
proxy:
url: http://[username:password@]domain
noProxy:
- example1.com
- example2.com
如何在集群内使用代理
根据经验,bmctl
命令及其生成的进程使用环境变量 HTTPS_PROXY
和 NO_PROXY
定义的代理配置(如果已定义的话)。否则,bmctl
会使用集群配置文件中的代理配置。在管理员工作站、集群节点机器或引导集群上运行的其他命令会使用集群配置文件中的代理配置。
每个节点上的 OS Package Manager 都使用自己的配置文件进行代理设置。
替换代理配置
通过替换集群配置文件中的代理设置,您可以在与节点机器使用的代理不同的代理上运行管理员工作站。如需替换代理设置,请在引导机器上设置以下环境变量:
export HTTPS_PROXY=http://[username:password@]domain
将 [username:password@]domain 替换为特定于您的配置的详细信息。
export NO_PROXY=example1.com,example2.com
将 example1.com,example2.com 替换为不应通过代理服务器的 IP 地址、主机名和域名。
副作用
以 root 身份运行时,bmctl
会更新引导机器中的 Docker 代理配置。如果您不以 root 身份运行 bmctl
,请手动配置 Docker 代理。
防火墙规则
按照以下部分中的说明设置防火墙规则,以允许 Anthos clusters on Bare Metal 所需的流量。
如需了解 Anthos clusters on Bare Metal 的前提条件端口要求,请参阅端口使用情况。
集群节点 IP 地址的防火墙规则
下表介绍了集群中可用 IP 地址的防火墙规则。
从 |
来源端口 |
到 |
端口 |
协议 |
说明 |
---|---|---|---|---|---|
集群节点 | 1024 - 65535 | cloudresourcemanager.googleapis.com gkeconnect.googleapis.com gkehub.googleapis.com |
443 | TCP/HTTPS | 必须具有相应的访问权限才能进行舰队注册。 |
Cloud Logging Collector,在集群节点上运行 | 1024 - 65535 | oauth2.googleapis.com logging.googleapis.com stackdriver.googleapis.com servicecontrol.googleapis.com storage.googleapis.com www.googleapis.com |
443 | TCP/HTTPS | |
Cloud Metadata Collector,在集群节点上运行 | 1024 - 65535 | opsconfigmonitoring.googleapis.com |
443 | TCP/HTTPS | |
Cloud Monitoring Collector,在集群节点上运行 | 1024 - 65535 | oauth2.googleapis.com monitoring.googleapis.com stackdriver.googleapis.com servicecontrol.googleapis.com |
443 | TCP/HTTPS | |
集群节点 | 1024 - 65535 | 本地 Docker 注册表 | 具体取决于您的注册表 | TCP/HTTPS | 如果将 Anthos clusters on Bare Metal 配置为使用本地私有 Docker 注册表(而非 gcr.io ),则需要。 |
集群节点 | 1024 - 65535 | gcr.io oauth2.googleapis.com storage.googleapis.com 为管理员集群启用的服务所需的任何 *.googleapis.com 形式的 Google API 网址。 |
443 | TCP/HTTPS | 从公共 Docker 注册表下载映像。 如果使用私有 Docker 注册表,则不需要。 |
Connect Agent,在集群节点上运行 | 1024 - 65535 | cloudresourcemanager.googleapis.com gkeconnect.googleapis.com gkehub.googleapis.com www.googleapis.com iam.googleapis.com iamcredentials.googleapis.com oauth2.googleapis.com securetoken.googleapis.com sts.googleapis.com accounts.google.com |
443 | TCP/HTTPS | 如需详细了解 Connect Agent 管理的流量,请参阅 Connect Agent 概览。 |
其余组件的防火墙规则
下表中所述的规则适用于上一部分中未列出的所有其他组件。
从 |
来源端口 |
到 |
端口 |
协议 |
说明 |
---|---|---|---|---|---|
客户端和应用最终用户 | 全部 | Istio Ingress 的 VIP | 80、443 | TCP | 进入用户集群的 Ingress 服务的最终用户流量。 |
管理员工作站 | 32768 - 60999 | gcr.io cloudresourcemanager.googleapis.com oauth2.googleapis.com storage.googleapis.com 为此集群启用的服务所需的任何 *.googleapis.com 网址 |
443 | TCP/HTTPS | 从公共 Docker 注册表下载 Docker 映像。 |
管理员工作站 | 32768 - 60999 | gcr.io cloudresourcemanager.googleapis.com iam.googleapis.com oauth2.googleapis.com serviceusage.googleapis.com storage.googleapis.com 为管理员或用户集群启用的服务所需的任何 *.googleapis.com 网址 |
443 | TCP/HTTPS | 预检检查(验证)。 |