From 4ca2917d2b4b9b1658852e506ed38b4cd34c4324 Mon Sep 17 00:00:00 2001 From: husharp Date: Fri, 23 Aug 2024 15:45:08 +0800 Subject: [PATCH 1/6] 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/6] 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/6] 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/6] 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/6] 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/6] 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`: