RKE2 开启 ACE

通过 Rancher 创建的 RKE2 和 K3s 集群支持开启 Authorized Cluster Endpoint(ACE)

开启 ACE 后,用户可以通过集群 API Server 的 FQDN 直接访问下游集群,而无需经过 Rancher 代理转发。

参考文档:https://ranchermanager.docs.rancher.com/how-to-guides/new-user-guides/kubernetes-clusters-in-rancher-setup/register-existing-clusters#authorized-cluster-endpoint-support-for-rke2-and-k3s-clusters


架构说明

开启 ACE 后,访问流程如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
kubectl


ACE FQDN / Load Balancer


RKE2 API Server


kube-api-auth


Rancher Token Authentication

其中:

  • API Server 对外暴露在 Load Balancer 或 VIP 后面
  • kube-api-auth 负责验证 Rancher 生成的 Token
  • 用户可以直接访问下游集群,而无需通过 Rancher Proxy

准备 Load Balancer

本文以 Nginx 作为 Load Balancer 为例。

准备 Nginx 配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
cat <<EOF > nginx.conf
events {
worker_connections 8192;
}

stream {
log_format proxy '$remote_addr [$time_local] '
'$protocol $status $bytes_sent $bytes_received '
'$session_time "$upstream_addr"';

upstream api_servers_https {
least_conn;

server 172.16.16.120:6443 max_fails=5 fail_timeout=8s;
server 172.16.16.121:6443 max_fails=5 fail_timeout=8s;
server 172.16.16.122:6443 max_fails=5 fail_timeout=8s;
}

server {
listen 6443;

proxy_pass api_servers_https;

access_log /dev/stdout proxy;
error_log /dev/stderr info;
}
}
EOF

启动 Nginx

1
2
3
4
5
6
docker run -d \
--name nginx \
--restart=always \
-v $(pwd)/nginx.conf:/etc/nginx/nginx.conf \
-p 6443:6443 \
harbor.warnerchen.com/library/nginx:mainline

配置 DNS 解析

为 Load Balancer 配置一个用于访问 Kubernetes API Server 的域名。

例如:

1
rke2-cilium.warnerchen.com -> <Load Balancer IP>

DNS 配置示例:

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


准备 Kube API Auth Webhook 配置

在所有 Control Plane 节点上创建以下文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
cat <<EOF > /var/lib/rancher/rke2/kube-api-authn-webhook.yaml
apiVersion: v1
kind: Config

clusters:
- name: Default
cluster:
insecure-skip-tls-verify: true
server: http://localhost:6440/v1/authenticate

users:
- name: Default
user:
insecure-skip-tls-verify: true

contexts:
- name: webhook
context:
cluster: Default
user: Default

current-context: webhook
EOF

该配置用于让 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 进行测试:

Author

Warner Chen

Posted on

2026-05-29

Updated on

2026-05-29

Licensed under

You need to set install_url to use ShareThis. Please set it in _config.yml.
You forgot to set the business or currency_code for Paypal. Please set it in _config.yml.

Comments

You forgot to set the shortname for Disqus. Please set it in _config.yml.