RKE2 开启 ACE
通过 Rancher 创建的 RKE2 和 K3s 集群支持开启 Authorized Cluster Endpoint(ACE)。
开启 ACE 后,用户可以通过集群 API Server 的 FQDN 直接访问下游集群,而无需经过 Rancher 代理转发。
架构说明
开启 ACE 后,访问流程如下:
1 | kubectl |
其中:
- API Server 对外暴露在 Load Balancer 或 VIP 后面
kube-api-auth负责验证 Rancher 生成的 Token- 用户可以直接访问下游集群,而无需通过 Rancher Proxy
准备 Load Balancer
本文以 Nginx 作为 Load Balancer 为例。
准备 Nginx 配置
1 | cat <<EOF > nginx.conf |
启动 Nginx
1 | docker run -d \ |
配置 DNS 解析
为 Load Balancer 配置一个用于访问 Kubernetes API Server 的域名。
例如:
1 | rke2-cilium.warnerchen.com -> <Load Balancer IP> |
DNS 配置示例:

确认客户端能够正常解析:

准备 Kube API Auth Webhook 配置
在所有 Control Plane 节点上创建以下文件:
1 | cat <<EOF > /var/lib/rancher/rke2/kube-api-authn-webhook.yaml |
该配置用于让 Kubernetes API Server 通过 Rancher 提供的 kube-api-auth 服务进行 Token 验证。
配置 RKE2 集群
配置 Network
编辑集群配置,在 Network 选项卡中,配置 TLS Alternate Names 和 Authorized Cluster Endpoint:

配置 kube-apiserver 参数
在 Advanced 选项卡中,添加如下 kube-apiserver 参数:
1 | authentication-token-webhook-config-file=/var/lib/rancher/rke2/kube-api-authn-webhook.yaml |

该参数用于告诉 API Server 使用前面创建的 Webhook 配置文件进行身份验证。
配置 Connect Mode
等待集群完成更新,随后进入下游集群页面,选择 Connect Mode:

选择 Tunnel & Direct,填写前面准备的 Load Balancer 域名,点击 Test 验证连通性。验证通过后保存配置:

验证 ACE 是否生效
通过 Rancher 生成 kubeconfig,此时的 kubeconfig 会包含 FQDN 的上下文配置。
将上下文切到 FQDN 进行测试:

install_url to use ShareThis. Please set it in _config.yml.