Skip to content

Commit 4adfcac

Browse files
authored
pd/tls: add upgrade tls description (#2612) (#2643)
1 parent 8cd0e12 commit 4adfcac

File tree

1 file changed

+87
-1
lines changed

1 file changed

+87
-1
lines changed

zh/enable-tls-between-components.md

Lines changed: 87 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ summary: 在 Kubernetes 上如何为 TiDB 集群组件间开启 TLS。
1919

2020
> **注意:**
2121
>
22-
> 在集群创建后,不能修改此字段,否则将导致集群升级失败,此时需要删除已有集群,并重新创建。
22+
> - 在集群创建后,不能修改此字段,否则将导致集群升级失败,此时需要删除已有集群,并重新创建。
23+
> - 若集群无法重建且需要启用 TLS,请参阅[将非 TLS 集群升级为 TLS 集群](#将非-tls-集群升级为-tls-集群)
2324
2425
3. 配置 `pd-ctl``tikv-ctl` 连接集群。
2526

@@ -1645,3 +1646,88 @@ summary: 在 Kubernetes 上如何为 TiDB 集群组件间开启 TLS。
16451646
cd /var/lib/cluster-client-tls
16461647
/tikv-ctl --ca-path=ca.crt --cert-path=tls.crt --key-path=tls.key --host 127.0.0.1:20160 cluster
16471648
```
1649+
1650+
## 将非 TLS 集群升级为 TLS 集群
1651+
1652+
本节介绍如何为现有的非 TLS TiDB 集群启用 TLS 加密通信。
1653+
1654+
> **注意:**
1655+
>
1656+
> 该操作仅适用于无法重建的现有集群。在开始操作前,请确保已充分理解每个步骤及其潜在风险。
1657+
1658+
1. 如果集群包含多个 PD 节点,需要先将 PD 节点数量缩减为 1 个。
1659+
1660+
2. 参考[第一步:为 TiDB 集群各个组件生成证书](#第一步为-tidb-集群各个组件生成证书)生成 TLS 证书,并创建 Kubernetes Secret 对象。
1661+
1662+
3. 启用 TLS:
1663+
1664+
你可以选择以下两种方法之一启用 TLS:
1665+
1666+
- 方法 1:执行以下命令更新 TiDB 集群配置,等待 PD Pod 完成重启后继续下一步。
1667+
1668+
``` shell
1669+
kubectl patch tc ${cluster_name} -n ${namespace} --type merge -p '{
1670+
"spec": {
1671+
"tlsCluster": {
1672+
"enabled": true
1673+
}
1674+
}
1675+
}'
1676+
```
1677+
1678+
输出示例:
1679+
1680+
``` shell
1681+
tidbcluster.pingcap.com/basic patched
1682+
```
1683+
1684+
- 方法 2:参考[第二步:部署 TiDB 集群](#第二步部署-tidb-集群)启用 TLS,同时设置 `cert-allowed-cn` 配置项(TiDB 为 `cluster-verify-cn`),用于验证集群间各组件证书的 CN (Common Name)。
1685+
1686+
4. 配置 PD 节点:
1687+
1688+
1. 使用 `kubectl exec` 进入 PD Pod 并安装 etcdctl。详细安装步骤可参考 [etcdctl 安装指南](https://etcd.io/docs/v3.4/install/)。安装完成后,etcdctl 位于解压后的文件夹目录下。
1689+
1690+
2. 查看 etcd 成员信息,此时 `peerURLs` 使用 HTTP 协议:
1691+
1692+
``` shell
1693+
./etcdctl --endpoints https://127.0.0.1:2379 --cert /var/lib/pd-tls/tls.crt --key /var/lib/pd-tls/tls.key --cacert /var/lib/pd-tls/ca.crt member list
1694+
```
1695+
1696+
输出示例:
1697+
1698+
``` shell
1699+
# memberID status name peerURLs clientURL isLearner
1700+
e94cfb12fa384e23, started, basic-pd-0, http://basic-pd-0.basic-pd-peer.pingcap.svc:2380, https://basic-pd-0.basic-pd-peer.pingcap.svc:2379, false
1701+
```
1702+
1703+
记录以下信息用于下一步操作:
1704+
1705+
- `memberID`:示例中为 `e94cfb12fa384e23`
1706+
- `peerURLs`:示例中为 `http://basic-pd-0.basic-pd-peer.pingcap.svc:2380`
1707+
1708+
3. 将 etcd member 的 `peerURLs` 从 HTTP 更新为 HTTPS 协议:
1709+
1710+
``` shell
1711+
./etcdctl --endpoints https://127.0.0.1:2379 --cert /var/lib/pd-tls/tls.crt --key /var/lib/pd-tls/tls.key --cacert /var/lib/pd-tls/ca.crt member update e94cfb12fa384e23 --peer-urls="https://basic-pd-0.basic-pd-peer.pingcap.svc:2380"
1712+
```
1713+
1714+
输出示例:
1715+
1716+
``` shell
1717+
Member e94cfb12fa384e23 updated in cluster 32ab5936d81ad54c
1718+
```
1719+
1720+
4. 查看更新后的 `peerURLs`,确保已更新为 HTTPS 协议:
1721+
1722+
``` shell
1723+
./etcdctl --endpoints https://127.0.0.1:2379 --cert /var/lib/pd-tls/tls.crt --key /var/lib/pd-tls/tls.key --cacert /var/lib/pd-tls/ca.crt member list
1724+
```
1725+
1726+
输出示例:
1727+
1728+
``` shell
1729+
e94cfb12fa384e23, started, basic-pd-0, https://basic-pd-0.basic-pd-peer.pingcap.svc:2380, https://basic-pd-0.basic-pd-peer.pingcap.svc:2379, false
1730+
```
1731+
1732+
5. 如果之前进行了 PD 节点缩容,请将其扩容为原有数量。
1733+
6. 等待 TiDB 集群中的所有 Pod 完成重启。

0 commit comments

Comments
 (0)