From 4ca2917d2b4b9b1658852e506ed38b4cd34c4324 Mon Sep 17 00:00:00 2001 From: husharp Date: Fri, 23 Aug 2024 15:45:08 +0800 Subject: [PATCH 1/7] add tls description Signed-off-by: husharp --- zh/enable-tls-between-components.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/zh/enable-tls-between-components.md b/zh/enable-tls-between-components.md index 1025d2486..86d1c3ecf 100644 --- a/zh/enable-tls-between-components.md +++ b/zh/enable-tls-between-components.md @@ -21,6 +21,29 @@ aliases: ['/docs-cn/tidb-in-kubernetes/dev/enable-tls-between-components/'] > **注意:** > > 在集群创建后,不能修改此字段,否则将导致集群升级失败,此时需要删除已有集群,并重新创建。 + > 集群创建后再开启 tls,在无法重建的情况下,可尝试以下方式(**请谨慎操作**): + > + > 1. 在存在多个 PD 节点的情况下,缩容 PD 至 1 个。(否则可以跳过此步骤) + > 2. 下载 etcdctl。参考 [etcdctl 安装指南](https://etcd.io/docs/v3.4/install/),etcdctl 位于文件夹目录下。 + > 3. 设置 `.spec.tlsCluster.enabled` 属性为 `true`; + > 4. 查看 etcd member,可见 peerURLs 此时为 http: + ```sh + etcdctl --endpoints https://127.0.0.1:2379 --cert-file ./pd-tls/tls.crt --key-file ./pd-tls/tls.key --ca-file ./pd-tls/ca.crt member list + ``` + 输出示例: + ``` + 8e9e05c52164694d: name=tidb-test-v75-pd-0 peerURLs=http://localhost:2380 clientURLs=https://localhost:2379 isLeader=true + ``` + > 5. 修改 etcd member 的 peerURLs 为 https: + ```sh + etcdctl --endpoints https://127.0.0.1:2379 --cert-file ./pd-tls/tls.crt --key-file ./pd-tls/tls.key --ca-file ./pd-tls/ca.crt member update 8e9e05c52164694d --peer-urls="https://localhost:2380" + ``` + 输出示例: + ``` + Updated member with ID 8e9e05c52164694d in cluster + ``` + > 6. 查看此时 etcd member 的 peerURLs 已经修改为 https。 + > 7. 若缩容过 PD 节点,需先扩容至原有数量。(否则可以跳过此步骤) 3. 配置 `pd-ctl`,`tikv-ctl` 连接集群。 From 7ba49831d4a1a386ac98e083266686066a20952e Mon Sep 17 00:00:00 2001 From: husharp Date: Fri, 23 Aug 2024 16:11:10 +0800 Subject: [PATCH 2/7] add tls description Signed-off-by: husharp --- zh/enable-tls-between-components.md | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/zh/enable-tls-between-components.md b/zh/enable-tls-between-components.md index 86d1c3ecf..bb214ebce 100644 --- a/zh/enable-tls-between-components.md +++ b/zh/enable-tls-between-components.md @@ -21,27 +21,28 @@ aliases: ['/docs-cn/tidb-in-kubernetes/dev/enable-tls-between-components/'] > **注意:** > > 在集群创建后,不能修改此字段,否则将导致集群升级失败,此时需要删除已有集群,并重新创建。 + > > 集群创建后再开启 tls,在无法重建的情况下,可尝试以下方式(**请谨慎操作**): > > 1. 在存在多个 PD 节点的情况下,缩容 PD 至 1 个。(否则可以跳过此步骤) > 2. 下载 etcdctl。参考 [etcdctl 安装指南](https://etcd.io/docs/v3.4/install/),etcdctl 位于文件夹目录下。 > 3. 设置 `.spec.tlsCluster.enabled` 属性为 `true`; > 4. 查看 etcd member,可见 peerURLs 此时为 http: - ```sh - etcdctl --endpoints https://127.0.0.1:2379 --cert-file ./pd-tls/tls.crt --key-file ./pd-tls/tls.key --ca-file ./pd-tls/ca.crt member list - ``` - 输出示例: - ``` - 8e9e05c52164694d: name=tidb-test-v75-pd-0 peerURLs=http://localhost:2380 clientURLs=https://localhost:2379 isLeader=true - ``` + > > + > > ```bash + > > etcdctl --endpoints https://127.0.0.1:2379 --cert-file ./pd-tls/tls.crt --key-file ./pd-tls/tls.key --ca-file ./pd-tls/ca.crt member list + > > 输出示例: + > > 8e9e05c52164694d: name=tidb-test-v75-pd-0 peerURLs=http://localhost:2380 clientURLs=https://localhost:2379 isLeader=true + > > ``` + > > > 5. 修改 etcd member 的 peerURLs 为 https: - ```sh - etcdctl --endpoints https://127.0.0.1:2379 --cert-file ./pd-tls/tls.crt --key-file ./pd-tls/tls.key --ca-file ./pd-tls/ca.crt member update 8e9e05c52164694d --peer-urls="https://localhost:2380" - ``` - 输出示例: - ``` - Updated member with ID 8e9e05c52164694d in cluster - ``` + > > + > > ```bash + > > etcdctl --endpoints https://127.0.0.1:2379 --cert-file ./pd-tls/tls.crt --key-file ./pd-tls/tls.key --ca-file ./pd-tls/ca.crt member update 8e9e05c52164694d --peer-urls="https://localhost:2380" + > > 输出示例: + > > Updated member with ID 8e9e05c52164694d in cluster + > > ``` + > > > 6. 查看此时 etcd member 的 peerURLs 已经修改为 https。 > 7. 若缩容过 PD 节点,需先扩容至原有数量。(否则可以跳过此步骤) From 54c18d09f80b78714dec1f0d38d1f8a7a87c6eae Mon Sep 17 00:00:00 2001 From: husharp Date: Fri, 23 Aug 2024 17:34:09 +0800 Subject: [PATCH 3/7] add tls description Signed-off-by: husharp --- zh/enable-tls-between-components.md | 92 +++++++++++++++++++++-------- 1 file changed, 69 insertions(+), 23 deletions(-) diff --git a/zh/enable-tls-between-components.md b/zh/enable-tls-between-components.md index bb214ebce..0199daa28 100644 --- a/zh/enable-tls-between-components.md +++ b/zh/enable-tls-between-components.md @@ -22,29 +22,7 @@ aliases: ['/docs-cn/tidb-in-kubernetes/dev/enable-tls-between-components/'] > > 在集群创建后,不能修改此字段,否则将导致集群升级失败,此时需要删除已有集群,并重新创建。 > - > 集群创建后再开启 tls,在无法重建的情况下,可尝试以下方式(**请谨慎操作**): - > - > 1. 在存在多个 PD 节点的情况下,缩容 PD 至 1 个。(否则可以跳过此步骤) - > 2. 下载 etcdctl。参考 [etcdctl 安装指南](https://etcd.io/docs/v3.4/install/),etcdctl 位于文件夹目录下。 - > 3. 设置 `.spec.tlsCluster.enabled` 属性为 `true`; - > 4. 查看 etcd member,可见 peerURLs 此时为 http: - > > - > > ```bash - > > etcdctl --endpoints https://127.0.0.1:2379 --cert-file ./pd-tls/tls.crt --key-file ./pd-tls/tls.key --ca-file ./pd-tls/ca.crt member list - > > 输出示例: - > > 8e9e05c52164694d: name=tidb-test-v75-pd-0 peerURLs=http://localhost:2380 clientURLs=https://localhost:2379 isLeader=true - > > ``` - > > - > 5. 修改 etcd member 的 peerURLs 为 https: - > > - > > ```bash - > > etcdctl --endpoints https://127.0.0.1:2379 --cert-file ./pd-tls/tls.crt --key-file ./pd-tls/tls.key --ca-file ./pd-tls/ca.crt member update 8e9e05c52164694d --peer-urls="https://localhost:2380" - > > 输出示例: - > > Updated member with ID 8e9e05c52164694d in cluster - > > ``` - > > - > 6. 查看此时 etcd member 的 peerURLs 已经修改为 https。 - > 7. 若缩容过 PD 节点,需先扩容至原有数量。(否则可以跳过此步骤) + > 在无法重建的情况下,如果希望集群创建后再开启 TLS,可尝试[以下方式](#从非-tls-集群升级到-tls-集群)(**请谨慎操作**): 3. 配置 `pd-ctl`,`tikv-ctl` 连接集群。 @@ -1680,3 +1658,71 @@ aliases: ['/docs-cn/tidb-in-kubernetes/dev/enable-tls-between-components/'] cd /var/lib/cluster-client-tls /tikv-ctl --ca-path=ca.crt --cert-path=tls.crt --key-path=tls.key --host 127.0.0.1:20160 cluster ``` + +## 从非 TLS 集群升级到 TLS 集群 + +> **注意:请谨慎操作** +> +> 在集群无法重建的情况下,适用于集群创建后再开启 TLS。 +> + +1. 如果存在多个 PD 节点,缩容 PD 至 1 个节点。 + +2. 参考 [第一步:为 TiDB 集群各个组件生成证书](#第一步为-tidb-集群各个组件生成证书) ,准备证书及创建 Kubernetes Secret 对象。 + +3. 参考 [第二步:部署 TiDB 集群](#第二步部署-tidb-集群) ,修改 `tidb-cluster.yaml` 文件,使用 `kubectl apply -f tidb-cluster.yaml` 来更新 TiDB 集群。 + +4. 登录 PD pod,下载 etcdctl。参考 [etcdctl 安装指南](https://etcd.io/docs/v3.4/install/),etcdctl 位于解压后的文件夹目录下。 + +5. 查看 etcd member,可见 peerURLs 此时为 http: + + ```bash + ./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 + ``` + + 输出示例: + + ```bash + 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 + ``` + + **示例解释:** + + memberID 和 peerURLs 需要在下个步骤更新 member 时填入: + + 1. 包含 memberID,示例中为 `e94cfb12fa384e23`。 + + 2. 包含 peerURLs,示例中为 `http://basic-pd-0.basic-pd-peer.pingcap.svc:2380`。 + +6. 修改 etcd member 的 peerURLs 为 https: + + **注意:** + + peerURLS 需要修改 `http` 为 `https`。 + + ```bash + ./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" + ``` + + 输出示例: + + ```bash + Member e94cfb12fa384e23 updated in cluster 32ab5936d81ad54c + ``` + +7. 查看此时 etcd member 的 peerURLs,确认已经修改为 https: + + ```bash + ./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 + ``` + + 输出示例: + + ```bash + 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 + ``` + + 此时 peerURLs 已更新为 `https://basic-pd-0.basic-pd-peer.pingcap.svc:2380`。 + +8. 若缩容过 PD 节点,需扩容 PD 至原有数量。 +9. 等待其他 pod 重启更新。 \ No newline at end of file From 828ae52c40abf64f731484cb849360fbf0d9af48 Mon Sep 17 00:00:00 2001 From: husharp Date: Mon, 26 Aug 2024 11:14:03 +0800 Subject: [PATCH 4/7] add patch Signed-off-by: husharp --- zh/enable-tls-between-components.md | 40 ++++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/zh/enable-tls-between-components.md b/zh/enable-tls-between-components.md index 0199daa28..d00297c7f 100644 --- a/zh/enable-tls-between-components.md +++ b/zh/enable-tls-between-components.md @@ -1670,7 +1670,45 @@ aliases: ['/docs-cn/tidb-in-kubernetes/dev/enable-tls-between-components/'] 2. 参考 [第一步:为 TiDB 集群各个组件生成证书](#第一步为-tidb-集群各个组件生成证书) ,准备证书及创建 Kubernetes Secret 对象。 -3. 参考 [第二步:部署 TiDB 集群](#第二步部署-tidb-集群) ,修改 `tidb-cluster.yaml` 文件,使用 `kubectl apply -f tidb-cluster.yaml` 来更新 TiDB 集群。 +3. 参考 [第二步:部署 TiDB 集群](#第二步部署-tidb-集群) ,可使用以下命令来更新 TiDB 集群,等待 PD pod 完成重启后继续下一步操作。 + + ```bash + kubectl patch tc ${cluster_name} -n ${namespace} --type merge -p '{ + "spec": { + "tlsCluster": { + "enabled": true + }, + "pd": { + "config": { + "security": { + "cert-allowed-cn": ["TiDB"] + } + } + }, + "tikv": { + "config": { + "security": { + "cert-allowed-cn": ["TiDB"] + } + } + }, + "tidb": { + "config": { + "security": { + "cert-allowed-cn": ["TiDB"] + } + } + } + # 其他组件配置...(复制时需要删除此行注释) + } + }' + ``` + + 输出示例: + + ```bash + tidbcluster.pingcap.com/basic patched + ``` 4. 登录 PD pod,下载 etcdctl。参考 [etcdctl 安装指南](https://etcd.io/docs/v3.4/install/),etcdctl 位于解压后的文件夹目录下。 From 09c31b0696bc5c15c0bde6eb932799227d87edc1 Mon Sep 17 00:00:00 2001 From: husharp Date: Mon, 26 Aug 2024 11:49:28 +0800 Subject: [PATCH 5/7] add copy Signed-off-by: husharp --- zh/enable-tls-between-components.md | 56 ++++++++++++----------------- 1 file changed, 22 insertions(+), 34 deletions(-) diff --git a/zh/enable-tls-between-components.md b/zh/enable-tls-between-components.md index d00297c7f..f7a548ed2 100644 --- a/zh/enable-tls-between-components.md +++ b/zh/enable-tls-between-components.md @@ -1672,91 +1672,79 @@ aliases: ['/docs-cn/tidb-in-kubernetes/dev/enable-tls-between-components/'] 3. 参考 [第二步:部署 TiDB 集群](#第二步部署-tidb-集群) ,可使用以下命令来更新 TiDB 集群,等待 PD pod 完成重启后继续下一步操作。 - ```bash + {{< copyable "shell-regular" >}} + + ``` shell kubectl patch tc ${cluster_name} -n ${namespace} --type merge -p '{ "spec": { "tlsCluster": { "enabled": true - }, - "pd": { - "config": { - "security": { - "cert-allowed-cn": ["TiDB"] - } - } - }, - "tikv": { - "config": { - "security": { - "cert-allowed-cn": ["TiDB"] - } - } - }, - "tidb": { - "config": { - "security": { - "cert-allowed-cn": ["TiDB"] - } - } } - # 其他组件配置...(复制时需要删除此行注释) } }' ``` 输出示例: - ```bash + ``` shell tidbcluster.pingcap.com/basic patched ``` + 也可以参考 [第二步:部署 TiDB 集群](#第二步部署-tidb-集群),选择设置 `cert-allowed-cn` 配置项(TiDB 为 `cluster-verify-cn`),用来验证集群间各组件证书的 CN (Common Name)。 + 4. 登录 PD pod,下载 etcdctl。参考 [etcdctl 安装指南](https://etcd.io/docs/v3.4/install/),etcdctl 位于解压后的文件夹目录下。 -5. 查看 etcd member,可见 peerURLs 此时为 http: +5. 查看 etcd member,可见 peerURLs 此时为 `http`: - ```bash + {{< copyable "shell-regular" >}} + + ``` shell ./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 ``` 输出示例: - ```bash + ``` shell 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 ``` **示例解释:** - memberID 和 peerURLs 需要在下个步骤更新 member 时填入: + memberID 和 peerURLs 需要在下个步骤更新 etcd member 时填入: 1. 包含 memberID,示例中为 `e94cfb12fa384e23`。 2. 包含 peerURLs,示例中为 `http://basic-pd-0.basic-pd-peer.pingcap.svc:2380`。 -6. 修改 etcd member 的 peerURLs 为 https: +6. 修改 etcd member 的 peerURLs 为 `https`: **注意:** peerURLS 需要修改 `http` 为 `https`。 - ```bash + {{< copyable "shell-regular" >}} + + ``` shell ./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" ``` 输出示例: - ```bash + ``` shell Member e94cfb12fa384e23 updated in cluster 32ab5936d81ad54c ``` -7. 查看此时 etcd member 的 peerURLs,确认已经修改为 https: +7. 查看此时 etcd member 的 peerURLs,确认已经修改为 `https`: + + {{< copyable "shell-regular" >}} - ```bash + ``` shell ./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 ``` 输出示例: - ```bash + ``` shell 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 ``` From 8a42b7600a5ce3053d984a1c746985011991cd49 Mon Sep 17 00:00:00 2001 From: Hu# Date: Mon, 26 Aug 2024 12:55:33 +0800 Subject: [PATCH 6/7] Update zh/enable-tls-between-components.md Co-authored-by: Xuecheng Zhang --- zh/enable-tls-between-components.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zh/enable-tls-between-components.md b/zh/enable-tls-between-components.md index f7a548ed2..3bb5b0853 100644 --- a/zh/enable-tls-between-components.md +++ b/zh/enable-tls-between-components.md @@ -1692,7 +1692,7 @@ aliases: ['/docs-cn/tidb-in-kubernetes/dev/enable-tls-between-components/'] 也可以参考 [第二步:部署 TiDB 集群](#第二步部署-tidb-集群),选择设置 `cert-allowed-cn` 配置项(TiDB 为 `cluster-verify-cn`),用来验证集群间各组件证书的 CN (Common Name)。 -4. 登录 PD pod,下载 etcdctl。参考 [etcdctl 安装指南](https://etcd.io/docs/v3.4/install/),etcdctl 位于解压后的文件夹目录下。 +4. 使用 `kubectl exec` 进入 PD pod,下载 etcdctl。参考 [etcdctl 安装指南](https://etcd.io/docs/v3.4/install/),etcdctl 位于解压后的文件夹目录下。 5. 查看 etcd member,可见 peerURLs 此时为 `http`: From 6b51c759e2412e402272b9142ebe97496eabfc8a Mon Sep 17 00:00:00 2001 From: Aolin Date: Wed, 6 Nov 2024 18:31:17 +0800 Subject: [PATCH 7/7] revise wording and format Signed-off-by: Aolin --- zh/enable-tls-between-components.md | 128 +++++++++++++--------------- 1 file changed, 59 insertions(+), 69 deletions(-) diff --git a/zh/enable-tls-between-components.md b/zh/enable-tls-between-components.md index 3bb5b0853..787129e17 100644 --- a/zh/enable-tls-between-components.md +++ b/zh/enable-tls-between-components.md @@ -20,9 +20,8 @@ aliases: ['/docs-cn/tidb-in-kubernetes/dev/enable-tls-between-components/'] > **注意:** > - > 在集群创建后,不能修改此字段,否则将导致集群升级失败,此时需要删除已有集群,并重新创建。 - > - > 在无法重建的情况下,如果希望集群创建后再开启 TLS,可尝试[以下方式](#从非-tls-集群升级到-tls-集群)(**请谨慎操作**): + > - 在集群创建后,不能修改此字段,否则将导致集群升级失败,此时需要删除已有集群,并重新创建。 + > - 若集群无法重建且需要启用 TLS,请参阅[从非 TLS 集群升级到 TLS 集群](#从非-tls-集群升级到-tls-集群)。 3. 配置 `pd-ctl`,`tikv-ctl` 连接集群。 @@ -1659,96 +1658,87 @@ aliases: ['/docs-cn/tidb-in-kubernetes/dev/enable-tls-between-components/'] /tikv-ctl --ca-path=ca.crt --cert-path=tls.crt --key-path=tls.key --host 127.0.0.1:20160 cluster ``` -## 从非 TLS 集群升级到 TLS 集群 +## 将非 TLS 集群升级为 TLS 集群 -> **注意:请谨慎操作** -> -> 在集群无法重建的情况下,适用于集群创建后再开启 TLS。 -> +本节介绍如何为现有的非 TLS TiDB 集群启用 TLS 加密通信。 -1. 如果存在多个 PD 节点,缩容 PD 至 1 个节点。 - -2. 参考 [第一步:为 TiDB 集群各个组件生成证书](#第一步为-tidb-集群各个组件生成证书) ,准备证书及创建 Kubernetes Secret 对象。 - -3. 参考 [第二步:部署 TiDB 集群](#第二步部署-tidb-集群) ,可使用以下命令来更新 TiDB 集群,等待 PD pod 完成重启后继续下一步操作。 - - {{< copyable "shell-regular" >}} - - ``` shell - kubectl patch tc ${cluster_name} -n ${namespace} --type merge -p '{ - "spec": { - "tlsCluster": { - "enabled": true - } - } - }' - ``` +> **注意:** +> +> 该操作仅适用于无法重建的现有集群。在开始操作前,请确保已充分理解每个步骤及其潜在风险。 - 输出示例: +1. 如果集群包含多个 PD 节点,需要先将 PD 节点数量缩减为 1 个。 - ``` shell - tidbcluster.pingcap.com/basic patched - ``` +2. 参考[第一步:为 TiDB 集群各个组件生成证书](#第一步为-tidb-集群各个组件生成证书)生成 TLS 证书,并创建 Kubernetes Secret 对象。 - 也可以参考 [第二步:部署 TiDB 集群](#第二步部署-tidb-集群),选择设置 `cert-allowed-cn` 配置项(TiDB 为 `cluster-verify-cn`),用来验证集群间各组件证书的 CN (Common Name)。 +3. 启用 TLS: -4. 使用 `kubectl exec` 进入 PD pod,下载 etcdctl。参考 [etcdctl 安装指南](https://etcd.io/docs/v3.4/install/),etcdctl 位于解压后的文件夹目录下。 + 你可以选择以下两种方法之一启用 TLS: -5. 查看 etcd member,可见 peerURLs 此时为 `http`: + - 方法 1:执行以下命令更新 TiDB 集群配置,等待 PD Pod 完成重启后继续下一步。 - {{< copyable "shell-regular" >}} + ``` shell + kubectl patch tc ${cluster_name} -n ${namespace} --type merge -p '{ + "spec": { + "tlsCluster": { + "enabled": true + } + } + }' + ``` - ``` shell - ./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 - ``` + 输出示例: - 输出示例: + ``` shell + tidbcluster.pingcap.com/basic patched + ``` - ``` shell - 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 - ``` + - 方法 2:参考[第二步:部署 TiDB 集群](#第二步部署-tidb-集群)启用 TLS,同时设置 `cert-allowed-cn` 配置项(TiDB 为 `cluster-verify-cn`),用于验证集群间各组件证书的 CN (Common Name)。 - **示例解释:** +4. 配置 PD 节点: - memberID 和 peerURLs 需要在下个步骤更新 etcd member 时填入: - - 1. 包含 memberID,示例中为 `e94cfb12fa384e23`。 - - 2. 包含 peerURLs,示例中为 `http://basic-pd-0.basic-pd-peer.pingcap.svc:2380`。 + 1. 使用 `kubectl exec` 进入 PD Pod 并安装 etcdctl。详细安装步骤可参考 [etcdctl 安装指南](https://etcd.io/docs/v3.4/install/)。安装完成后,etcdctl 位于解压后的文件夹目录下。 -6. 修改 etcd member 的 peerURLs 为 `https`: + 2. 查看 etcd 成员信息,此时 `peerURLs` 使用 HTTP 协议: - **注意:** + ``` shell + ./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 + ``` - peerURLS 需要修改 `http` 为 `https`。 + 输出示例: - {{< copyable "shell-regular" >}} + ``` shell + # memberID status name peerURLs clientURL isLearner + 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 + ``` - ``` shell - ./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" - ``` + 记录以下信息用于下一步操作: + + - `memberID`:示例中为 `e94cfb12fa384e23`。 + - `peerURLs`:示例中为 `http://basic-pd-0.basic-pd-peer.pingcap.svc:2380`。 - 输出示例: + 3. 将 etcd member 的 `peerURLs` 从 HTTP 更新为 HTTPS 协议: - ``` shell - Member e94cfb12fa384e23 updated in cluster 32ab5936d81ad54c - ``` + ``` shell + ./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" + ``` -7. 查看此时 etcd member 的 peerURLs,确认已经修改为 `https`: + 输出示例: - {{< copyable "shell-regular" >}} + ``` shell + Member e94cfb12fa384e23 updated in cluster 32ab5936d81ad54c + ``` - ``` shell - ./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 - ``` + 4. 查看更新后的 `peerURLs`,确保已更新为 HTTPS 协议: - 输出示例: + ``` shell + ./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 + ``` - ``` shell - 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 - ``` + 输出示例: - 此时 peerURLs 已更新为 `https://basic-pd-0.basic-pd-peer.pingcap.svc:2380`。 + ``` shell + 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 + ``` -8. 若缩容过 PD 节点,需扩容 PD 至原有数量。 -9. 等待其他 pod 重启更新。 \ No newline at end of file +5. 如果之前进行了 PD 节点缩容,请将其扩容为原有数量。 +6. 等待 TiDB 集群中的所有 Pod 完成重启。