`
m635674608
  • 浏览: 5054446 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

kubernetes中证书生成

 
阅读更多

http://blog.csdn.net/shenshouer/article/details/53035948

kubernetes中证书生成

为了安全起见,建议在kubernetes中使用安全证书。在之前的文章中,而是统一在集群搭建中制造,并没有单独介绍证书的生成。本文将介绍kubernetes中证书生成。一下文章将需要生成如下证书:

  • 根证书公钥与私钥:ca.pemca-key.pem

  • API Server公钥与私钥:apiserver.pemapiserver-key.pem

  • 集群管理员公钥与私钥:admin.pemadmin-key.pem

  • 从节点公钥与私钥:worker.pemworker-key.pem

根证书生成

# Generate the root CA.
openssl genrsa -out ca-key.pem 2048
openssl req -x509 -new -nodes -key ca-key.pem -days 10000 -out ca.pem -subj "/CN=kube-ca"
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

apiserver证书生成

master中需要根证书公钥(root CA public key, ca-key.pem)、根证书(ca.pem);apiserver证书:apiserver.pem与其私钥apiserver-key.pem

1、创建openssl.cnf

[req]
req_extensions = v3_req
distinguished_name = req_distinguished_name
[req_distinguished_name]
[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = kubernetes
DNS.2 = kubernetes.default
DNS.3 = kubernetes.default.svc
DNS.4 = kubernetes.default.svc.cluster.local
IP.1 = ${K8S_SERVICE_IP}
IP.2 = ${MASTER_IPV4}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

使用有API被访问的Master的IP地址替换${MASTER_IPV4},使用自己规划作为kubernetes service IP端的首IP替换${K8S_SERVICE_IP}如:一般以10.100.0.0/16作为service的服务IP端,则此处以10.100.0.1替换${K8S_SERVICE_IP}

如果在高可用配置中部署多个Master节点,需要添加更多的TLS subjectAltNames (SANs)。每个证书合适的SANs配置依赖于从节点与kubectl用户是怎样与Master节点通讯的:直接通过IP地址、通过负载均衡、或者通过解析DNS名称。

DNS.5 = ${MASTER_DNS_NAME}
IP.3 = ${MASTER_IP}
IP.4 = ${MASTER_LOADBALANCER_IP}
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

从节点将通过${MASTER_DNS_NAME}访问到Loadbalancer。

  • 生成apiserver 证书对
# Generate the API server keypair.
openssl genrsa -out apiserver-key.pem 2048
openssl req -new -key apiserver-key.pem -out apiserver.csr -subj "/CN=kube-apiserver" -config openssl.cnf
openssl x509 -req -in apiserver.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out apiserver.pem -days 365 -extensions v3_req -extfile openssl.cnf
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4
  • 一般生成的根证书(ca-key.pemca.pem)与apiserver证书(apiserver-key.pem,apiserver.pem)放置在Master节点的/etc/kubernetes/ssl/路径下

  • apiserver的配置中需要指定如下参数:

--service-account-key-file=/etc/kubernetes/ssl/apiserver-key.pem \
--tls-private-key-file=/etc/kubernetes/ssl/apiserver-key.pem \
--tls-cert-file=/etc/kubernetes/ssl/apiserver.pem \
--client-ca-file=/etc/kubernetes/ssl/ca.pem \
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4
  • controller-manager的配置中需要指定如下参数:
--service-account-private-key-file=/etc/kubernetes/ssl/apiserver-key.pem \
--root-ca-file=/etc/kubernetes/ssl/ca.pem \
--cluster-signing-cert-file=/etc/kubernetes/ssl/ca.pem \
--cluster-signing-key-file=/etc/kubernetes/ssl/ca-key.pem \
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

集群管理员证书生成

此证书用于kubectl,设置方式如下:

$ openssl genrsa -out admin-key.pem 2048
$ openssl req -new -key admin-key.pem -out admin.csr -subj "/CN=kube-admin"
$ openssl x509 -req -in admin.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out admin.pem -days 365
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3
# 配置一个名为default的集群,并指定服务地址与根证书
kubectl config set-cluster default --server=https://172.17.4.101:443 --certificate-authority=${PWD}/ssl/ca.pem

# 设置一个管理用户为admin,并配置访问证书
kubectl config set-credentials admin --certificate-authority=${PWD}/ssl/ca.pem --client-key=${PWD}/ssl/admin-key.pem --client-certificate=${PWD}/ssl/admin.pem

# 设置一个名为default使用default集群与admin用户的上下文,
kubectl config set-context default --cluster=default --user=admin

# 启用default为默认上下文
kubectl config use-context default
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

从节点证书生成

将需要证书的节点IP放入到环境变量

# Export this worker's IP address.
export WORKER_IP=<WORKER_IPV4>
  • 1
  • 2
  • 1
  • 2
# Generate keys.
openssl genrsa -out worker-key.pem 2048
openssl req -new -key worker-key.pem -out worker.csr -subj "/CN=worker-key" -config worker-openssl.cnf
openssl x509 -req -in worker.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out worker.pem -days 365 -extensions v3_req -extfile worker-openssl.cnf
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

其中worker-openssl.cnf内容如下:

[req]
req_extensions = v3_req
distinguished_name = req_distinguished_name
[req_distinguished_name]
[ v3_req ]
basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
subjectAltName = @alt_names
[alt_names]
IP.1 = $ENV::WORKER_IP
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

从节点上配置kubelet所使用的配置文件worker-kubeconfig.yaml指定证书:

apiVersion: v1
kind: Config
clusters:
- name: local
  cluster:
    server: https://<KUBERNETES_MASTER>:443
    certificate-authority: /etc/kubernetes/ssl/ca.pem
users:
- name: kubelet
  user:
    client-certificate: /etc/kubernetes/ssl/worker.pem
    client-key: /etc/kubernetes/ssl/worker-key.pem
contexts:
- context:
    cluster: local
    user: kubelet
  name: kubelet-context
current-context: kubelet-context
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

通过配置kubelet的如下参数使用证书:

--kubeconfig=/etc/kubernetes/worker-kubeconfig.yaml \
--tls-private-key-file=/etc/kubernetes/ssl/worker-key.pem \
--tls-cert-file=/etc/kubernetes/ssl/worker.pem \
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3
分享到:
评论

相关推荐

    Kubernetes 证书一键生成(包含 etcd 证书)

    "Kubernetes证书一键生成"项目正是为了简化这个过程,它包含了自动化生成Kubernetes及其组件etcd所需证书的工具和配置文件。让我们深入了解一下这个过程以及相关知识点。 **Kubernetes证书的作用** 在Kubernetes中...

    基于cfssl工具集一键生成二进制kubernetes v1.25.14集群相关证书

    **二、Kubernetes证书需求** 在Kubernetes集群中,主要有以下几种类型的证书需要生成: 1. **apiserver证书**:用于API服务器与客户端之间的通信。 2. **apiserver-kubelet-client证书**:API服务器用来与Kubelet...

    Kubernetes中的证书工作机制详解

    Kubernetes 是一个强大的容器编排系统,其内部的证书工作机制对于确保集群安全至关重要。...为了深入了解,可以参考提供的链接或其他相关文档,进一步学习 TLS 原理以及如何在 Kubernetes 中管理和生成证书。

    使用OpenSSL生成Kubernetes证书的介绍

    在Kubernetes集群中,安全通信是至关重要的,而证书扮演着关键角色。...通过本文,你应该对如何使用OpenSSL生成Kubernetes证书有了基本的认识,这对于你的Kubernetes集群管理和运维工作将大有裨益。

    Kubernetes数字证书体系浅析.docx

    在初次接触Kubernetes(简称K8S)并着手构建其环境的过程中,新手往往会遇到一系列与安全证书相关的配置问题。尤其是在控制平面(Control Plane)的核心组件中,涉及大量的安全证书配置,这对于那些对密码学不太熟悉的...

    kubernetes中文文档

    - **配置创建证书**: 生成和管理集群证书。 - **配置生成配置**: 为各个组件创建配置文件。 - **配置生成密钥**: 生成密钥文件。 - **部署 Etcd 群集**: 设置和启动 etcd 作为集群的存储后端。 - **部署控制节点**: ...

    Kubernetes和Etcd集群数字证书生成工具~_k8s-certs-generator.zip

    Kubernetes和Etcd集群数字证书生成工具~_k8s-certs-generator

    Kubernetes Dashboard 部署.docx

    修改 `recommended.yaml` 文件中的 `name:kubernetes-dashboard-certs` 模块,以包含新的证书信息。 2. **制作证书**:使用 OpenSSL 或其他工具生成证书和密钥文件。 3. **创建 Secret**:使用 `kubectl` 命令创建...

    etcd证书生成工具,cfssl

    **etcd证书生成工具——cfssl** 在分布式系统中,etcd是一个广泛使用的键值存储服务,它提供了强一致性及高可用性,常被用作服务发现和配置管理。为了确保通信的安全,etcd通常会使用SSL/TLS证书进行加密。cfssl...

    certs:让我们为Kubernetes加密证书管理器

    让我们为Kubernetes加密证书管理器 该图表使用脚本仅通过DNS验证生成“让我们加密”证书; 它使用Kubernetes Job来获取和更新证书。 入口注释 名称 例子 描述 acme.kubernetes.io/启用 "true" 当value设置为"true...

    基于ARM64架构etcd证书一键生成工具

    `kubeadm`提供了自动化证书生成的选项,但可能不直接支持ARM64架构。在这种情况下,`etcd_ssl`工具可能是填补这个空白的解决方案,帮助用户在ARM64设备上快速设置安全的etcd集群。 在实际操作中,我们需要根据`etcd...

    二进制方式部署Kubernetes高可用集群.pdf

    在部署Kubernetes高可用集群之前,需要准备好环境,包括安装cfssl证书生成工具、 Docker和Etcd集群。 Etcd集群部署 Etcd是Kubernetes集群的核心组件之一,负责存储集群的状态信息。使用cfssl证书工具生成Etcd证书...

    Kubernetes中的安全灾备与恢复设计.pptx

    1. **Kubernetes证书与证书更新**: Kubernetes证书是集群安全的基础,用于组件间的身份验证。集群的Certificate Authority (CA)是根证书,签发其他所有组件的证书。例如,API Server需要HTTPS服务证书,由Cluster ...

    K8S证书生成工具-cfssl-Centos离线安装包

    在Kubernetes(K8S)集群中,安全通信是至关重要的。为了确保节点间以及与外部服务的安全交互,证书管理成为了一个必要的环节。`cfssl`(Cloudflare's Certificate Authority Software)是一个开源的证书权威(CA)...

    kubernetes安装.md

    - 使用CA证书生成Kubernetes API服务器证书。 通过上述步骤,可以成功地在一个离线环境中搭建起Kubernetes集群的基础环境,并完成了必要的网络配置、SSH免密码登录配置以及证书的生成。这些准备工作为后续的...

    Kubeadm生成的k8s证书内容说明

    1. **/etc/kubernetes/pki/**:这是Kubernetes证书的主要存放位置。 2. **/etc/kubernetes/pki/etcd/**:专门存放与etcd集群相关的证书。 #### 三、Kubernetes集群根证书 **Kubernetes集群根证书CA** 是Kubernetes...

    Kubernetes Dashboard介绍

    - **创建证书Secret**:将之前生成的证书存储到Kubernetes的一个名为`kubernetes-dashboard-certs`的Secret中。 ```bash kubectl create secret generic kubernetes-dashboard-certs --from-file=dashboard.crt=$...

    Kubernetes1.6集群部署完全指南——二进制文件部署开启TLS基于CentOS7

    Kubernetes 组件证书生成 ##### 2.1 生成 Kubernetes 证书 - **CA (Certificate Authority)**:首先生成根证书和私钥。 - **Kubernetes 组件证书**:分别为 admin、kube-proxy、kubelet 和 etcd 生成证书和私钥。...

    Kubernetes介绍 与安装.pdf

    集群初始化涉及生成证书,通过cfssl工具生成CA证书、Kubernetes证书、kubectl证书、kube-proxy证书等,并为客户端生成token与kubeconfig,以便进行HTTP Basic认证和Kubernetes的配置。 安装过程中,先配置好Etcd和...

Global site tag (gtag.js) - Google Analytics