配置创建证书

我们将使用 CloudFlare's PKI 工具 cfssl 来配置 PKI Infrastructure,然后使用它去创建 Certificate Authority(CA), 并为 etcd、kube-apiserver、kubelet 以及 kube-proxy 创建 TLS 证书。

Certificate Authority

本节创建用于生成其他 TLS 证书的 Certificate Authority。

新建 CA 配置文件

cat > ca-config.json <<EOF
{
  "signing": {
    "default": {
      "expiry": "8760h"
    },
    "profiles": {
      "kubernetes": {
        "usages": ["signing", "key encipherment", "server auth", "client auth"],
        "expiry": "8760h"
      }
    }
  }
}
EOF

新建 CA 凭证签发请求文件:

生成 CA 凭证和私钥:

结果将生成以下两个文件:

client 与 server 凭证

本节将创建用于 Kubernetes 组件的 client 与 server 凭证,以及一个用于 Kubernetes admin 用户的 client 凭证。

Admin 客户端凭证

创建 admin client 凭证签发请求文件:

创建 admin client 凭证和私钥:

结果将生成以下两个文件

Kubelet 客户端凭证

Kubernetes 使用 special-purpose authorization mode(被称作 Node Authorizer)授权来自 Kubelet 的 API 请求。为了通过 Node Authorizer 的授权, Kubelet 必须使用一个署名为 system:node:<nodeName> 的凭证来证明它属于 system:nodes 用户组。本节将会给每台 worker 节点创建符合 Node Authorizer 要求的凭证。

给每台 worker 节点创建凭证和私钥:

结果将产生以下几个文件:

Kube-controller-manager 客户端凭证

结果将产生以下几个文件:

Kube-proxy 客户端凭证

结果将产生以下两个文件:

kube-scheduler 证书

结果将产生以下两个文件:

Kubernetes API Server 证书

为了保证客户端与 Kubernetes API 的认证,Kubernetes API Server 凭证 中必需包含 kubernetes-the-hard-way 的静态 IP 地址。

首先查询 kubernetes-the-hard-way 的静态 IP 地址:

创建 Kubernetes API Server 凭证签发请求文件:

创建 Kubernetes API Server 凭证与私钥:

结果产生以下两个文件:

Service Account 证书

结果将生成以下两个文件

分发客户端和服务器证书

将客户端凭证以及私钥复制到每个工作节点上:

将服务器凭证以及私钥复制到每个控制节点上:

kube-proxykube-controller-managerkube-schedulerkubelet 客户端凭证将会在下一节中用来创建客户端签发请求文件。

下一步:配置和生成 Kubernetes 配置文件

最后更新于