TLS Everywhere - 解密kubernetes集群的安全认证

本文是关于Kubernetes 4A解析的第5章 深入理解Kubernetes 4A - Authentication源码解析 深入理解Kubernetes 4A - Authorization源码解析 深入理解Kubernetes 4A - Admission Control源码解析 深入理解Kubernetes 4A - Audit源码解析 TLS Everywhere - 解密kubernetes集群的安全认证 所有关于Kubernetes 4A部分代码上传至仓库 github.com/cylonchau/hello-k8s-4A 在 kubernetes 集群中,所有的通讯都是用 TLS 进行加密和认证,本文使用一次老集群(二进制部署集群)证书更换作为记录,通过这种方式深入对 kubernetes 的认证方式来了解更换证书的步骤,以及一次模拟老集群的更换步骤。 本文使用证书生成工具为 “kubernetes-generator” [1] 专用于 k8s 二进制部署生成证书和安装包的工具。 note 本文中的引用文档使用 web.archive 进行保存,避免官方版本更新,其概念与文档中的概念有变动导致,资料引用失败。 Kubernetes认证方式 为了了解证书更换需要做那些步骤,所以必须了解 k8s 的认证方式,这样才能更好的在更换证书时对集群上部署的业务系统的影响降低到最低。 X509 证书 kube-apiserver 的启动参数 --client-ca-file,可以使用客户端办法机构,英文代号就是熟悉的 “CA” (Certificate authority),当这个证书传递后,可以验证 kube-apiserver 用于验证向 kube-apiserver 提供的客户端证书,这里包含 k8s 中提供的用户种类的两种: 用户名:对应证书的 CN (Common Name) 用户组:对应证书的O (organization),用于对一个用户组进行授权,例如 “system:masters” 表示一个组 [1],允许不受限制地访问 kube-apiserver 静态token kube-apiserver 的启动参数 --token-auth-file,是以文件提供给 kube-apiserver,该 Token 会长期有效,并且如果不重启服务 Token 是不会更新。...

 ·  · 

debian12 - 高版本系统安装旧版本k8s异常处理

今日在部署旧版本 k8s 集群 (1.16.10) 时出现错误,主要是在新版本操作系统上部署老版本 k8s,kubelet会出现如下错误 bash 1 2 W1123 22:31:47.383423 3686 server.go:605] failed to get the kubelet's cgroup: mountpoint for cpu not found. Kubelet system container metrics may be missing. W1123 22:31:47.383572 3686 server.go:612] failed to get the container runtime's cgroup: failed to get container name for docker process: mountpoint for cpu not found. Runtime system container metrics may be missing. 错误原因 上面的报错是 Kubelet 无法正确访问 Docker 容器运行时的 cgroup 信息,特别是关于 CPU 使用的 cgroup 信息...

 ·  · 

openssl.cnf详解

下面是一个完整 openssl.cnf 配置文件 ini 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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 BASE_DOMAIN= CLUSTER_NAME= CERT_DIR= APISERVER_CLUSTER_IP= MASTER_NAME= [ ca ] # man ca default_ca = CA_default [ CA_default ] # Directory and file locations....

 ·  · 

zookeeper版本升级 - from 3.4 to 3.8

最近,我不得不将 Zookeeper 3.4.18 集群升级到 3.6+。要求是:无感升级,不丢失数据,并且尽量不向任何用户发出通知。在调研zookeeper 版本后,发现 3.6+ 支持了 metrics 模块,比较符合需求,所以需要从 3.4.18 升级至 3.6.4 3.5 + 支持动态配置 3.6.0+ 支持内置 metrics 模块 现有集群配置 集群IP 当前目录 新版本目录 192.240.16.18 /usr/local/zookeeper-3.4.14/ /usr/local/apache-zookeeper-3.6.4-bin/ 192.240.16.21 /usr/local/zookeeper-3.4.14/ /usr/local/apache-zookeeper-3.6.4-bin/ 192.240.16.28 /usr/local/zookeeper-3.4.14/ /usr/local/apache-zookeeper-3.6.4-bin/ 192.240.16.147 /usr/local/zookeeper-3.4.14/ /usr/local/apache-zookeeper-3.6.4-bin/ 192.240.16.202 /usr/local/zookeeper-3.4.14/ /usr/local/apache-zookeeper-3.6.4-bin/ 下载安装包 在官方 archive 找到对应安装包 从 zk 3.5 起安装包分为带 “bin” 和不带 “bin” 的 带 “bin” 的包含所需jar包 不带 “bin” 的需要自行编译 bash 1 wget https://archive.apache.org/dist/zookeeper/zookeeper-3.6.4/ 解压 bash 1 tar Czxf /usr/local/ apache-zookeeper-3.6.4-bin.tar.gz && cd /usr/local 升级版本 注意以下步骤需要对每个 zk 服务器都执行一边...

 ·  · 

CentOS7&Rocky9更新xz

centos&rocky 升级 xz,需要和目前系统对比每个xz包,和每个xz包内的文件有哪些;然后,根据不同类型的包(base, devel, lib),三个进行打包操作。 下载curl源码包 升级至少需要更新至 xz 5.4.6 ,首先从官网下载源码包 [1] 将xz作为rpm 下面是 rpm 的规格文件 spec 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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 Name: xz Version: 5....

 ·  ·