前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >K8s 系列(三) - 如何配置 etcd https 证书?

K8s 系列(三) - 如何配置 etcd https 证书?

作者头像
astraw99
发布2021-09-22 11:52:35
9220
发布2021-09-22 11:52:35
举报
文章被收录于专栏:K8s 系列K8s 系列

在 K8s 中,kube-apiserver 使用 etcd 对 REST object 资源进行持久化存储,本文介绍如何配置生成自签 https 证书,搭建 etcd 集群给 apiserver 使用,并附相关坑点记录。

1. 安装 cfssl 工具

代码语言:javascript
复制

2. 创建 ca 证书

代码语言:javascript
复制

3. 配置 ca 证书策略

代码语言:javascript
复制

4. 配置 etcd 请求 csr

代码语言:javascript
复制

5. 生成 etcd 证书

代码语言:javascript
复制

6. 创建 etcd cluster

yaml 文件:https://github.com/k8s-club/etcd-operator

代码语言:javascript
复制

7. 查看 DNS 解析

dnsutils 安装:https://kubernetes.io/docs/tasks/administer-cluster/dns-debugging-resolution/

代码语言:javascript
复制

8. 查看 etcd 集群状态

代码语言:javascript
复制

9. 验证 etcd 读写

代码语言:javascript
复制

10. 配置 apiserver 请求 csr

代码语言:javascript
复制

11. 生成 apiserver 证书

代码语言:javascript
复制

12. 创建 extension-apiserver

apiserver.yaml:通过 ConfigMap 将生成的 *.pem 证书挂载给 apiserver 使用

代码语言:javascript
复制
代码语言:javascript
复制

13. 坑点记录

13.1 证书 hosts 不对

代码语言:javascript
复制

解决:重新配置正确的 hosts 域名

13.2 证书 hosts 配置坑点

代码语言:javascript
复制

13.3 dns 设置参考

推荐设置 *.xxx.ns.svc,这样扩容后也不需要重签证书

参考:https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/

Go 代码参考如下:

代码语言:javascript
复制

13.4 leader/follower 已经建立成功了,但访问报错

代码语言:javascript
复制

解决:etcdctl 需要带证书访问

代码语言:javascript
复制

13.5 http 与 https 之间不能切换

先通过 http 建立了 cluster,然后再用自签证书 https 来建立,这样就会报错:

代码语言:javascript
复制

经过验证:无论是从 http => https,还是从 https => http 的切换都会报这个错,因为一旦建立 cluster 成功,则把连接的协议(http/https) 写入到 etcd 存储里了,不能再更改连接协议。

解决:如果真正遇到需要切换协议,可尝试下面方式

•允许删除数据:删除后重新建立 cluster•不允许删数据:可以尝试采用 snapshot & restore[1] 进行快照与恢复操作

13.6 apiserver 可直接使用第 5 步生成的 etcd 证书吗?

经过验证,是可以直接使用 etcd 证书的,但生产上不建议这样使用。

生产上建议对 apiserver(或其他应用) 单独生成证书,可使用泛域名(*.xx.xx)、不同过期时间等方式灵活配置,也更有利于集群管控。

相关链接

[1] snapshot & restore: https://etcd.io/docs/v3.5/op-guide/recovery/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-08-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 稻草人生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 安装 cfssl 工具
  • 2. 创建 ca 证书
  • 3. 配置 ca 证书策略
  • 4. 配置 etcd 请求 csr
  • 5. 生成 etcd 证书
  • 6. 创建 etcd cluster
  • 7. 查看 DNS 解析
  • 8. 查看 etcd 集群状态
  • 9. 验证 etcd 读写
  • 10. 配置 apiserver 请求 csr
  • 11. 生成 apiserver 证书
  • 12. 创建 extension-apiserver
  • 13. 坑点记录
    • 13.1 证书 hosts 不对
      • 13.2 证书 hosts 配置坑点
        • 13.3 dns 设置参考
          • 13.4 leader/follower 已经建立成功了,但访问报错
            • 13.5 http 与 https 之间不能切换
              • 13.6 apiserver 可直接使用第 5 步生成的 etcd 证书吗?
                • 相关链接
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档