k8s1.18.20通过cert-manager、kubed实现三个月免费证书自动续签

k8s1.18.20通过cert-manager、kubed实现三个月免费证书自动续签

一、cert-manager部署

参考:k8s1.18.20:cert-manager 1.8 安装部署

二、申请免费证书-letsencrypt

2.1、创建ClusterIssuer

向letsencrypt申请三个月免费证书

[root@k8s-node ~]# cat clusterissuer-prod.yaml
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:name: letsencrypt-prod
spec:acme:#server: https://acme-staging-v02.api.letsencrypt.org/directoryserver: https://acme-v02.api.letsencrypt.org/directoryprivateKeySecretRef:name: letsencrypt-prodsolvers:- http01:ingress:class: nginx

2.2、以HTTP-01方式申请域名证书

[root@k8s-node ~]# cat  ssl.yaml
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:name: ssl   #证书名称namespace: cert-manager  #名称空间
spec:secretName: ssl   #证书名称issuerRef:name: letsencrypt-prod   #指定ISSUERkind: ClusterIssuerduration: 2160hrenewBefore: 360hdnsNames:- www.demo.cn- app.demo.cn

检查,证书是否申请成功

[root@ops-k8s-master01 ssl]# kubectl get secret -n cert-manager
NAME                                  TYPE                                  DATA   AGE
cert-manager-cainjector-token-kdwd6   kubernetes.io/service-account-token   3      30d
cert-manager-token-x6tgq              kubernetes.io/service-account-token   3      30d
cert-manager-webhook-ca               Opaque                                3      30d
cert-manager-webhook-token-4bpwg      kubernetes.io/service-account-token   3      30d
default-token-p97fb                   kubernetes.io/service-account-token   3      30d
letsencrypt-prod                      Opaque                                1      30d
sandbox-2qd8j                         Opaque                                1      28d
ssl                                   kubernetes.io/tls                     2      28d

查看secret信息

[root@ops-k8s-master01 ssl]# kubectl describe secret ssl -n cert-manager
Name:         ssl
Namespace:    cert-manager
Labels:       kubed.appscode.com/origin.cluster=opstestkubed.appscode.com/origin.name=sslkubed.appscode.com/origin.namespace=cmc
Annotations:  cert-manager.io/alt-names:api.opstest.chinamcloud.cn,cloud.opstest.chinamcloud.cn,console.opstest.chinamcloud.cn,dashaboard.opstest.chinamcloud.cn,image.opstest.chi...cert-manager.io/certificate-name: sslcert-manager.io/common-name: login.opstest.chinamcloud.cncert-manager.io/ip-sans: cert-manager.io/issuer-group: cert-manager.iocert-manager.io/issuer-kind: ClusterIssuercert-manager.io/issuer-name: letsencrypt-prodcert-manager.io/uri-sans: kubed.appscode.com/origin: {"namespace":"cmc","name":"ssl","uid":"4140a0e6-fd8f-4b17-b72e-9a2983c33b58","resourceVersion":"49211748"}Type:  kubernetes.io/tlsData
====
tls.crt:  5932 bytes
tls.key:  1679 bytes

目前证书只能在cert-manager名称空间下使用,我们需要再部署一个kubed/config-syncer同步服务,将cert-manager名称空间下的ssl证书同步到其他名称空间。

三、部署kubed服务

参考:Syncing Secrets Across Namespaces
gitlab地址:https://github.com/kubeops/config-syncer
官网部署文档:appscode

3.1、部署kubed服务

$ helm repo add appscode https://charts.appscode.com/stable/
$ helm repo update
$ helm search repo appscode/kubed --version v0.12.0
NAME            CHART VERSION APP VERSION DESCRIPTION
appscode/kubed  v0.12.0    v0.12.0  Kubed by AppsCode - Kubernetes daemon$ helm install kubed appscode/kubed \--version v0.12.0 \--namespace kube-system

检查容器是否正常部署

[root@ops-k8s-master01 ssl]# kubectl get pod -o wide -A |grep kubed
kubed           config-sync-kubed-57d7b5548b-l6klq          1/1     Running            0          28d     10.42.2.80      ops-k8s-node02     <none>           <none>

3.2、创建同步证书服务

apiVersion: cert-manager.io/v1
kind: Certificate
metadata:name: sslnamespace: cert-manager
spec:secretName: sslcommonName: sslissuerRef:name: letsencrypt-prodkind: ClusterIssuergroup: cert-manager.iosecretTemplate:annotations:#kubed.appscode.com/sync: "cert-manager-tls=appfactory,crms"kubed.appscode.com/sync: ""   #同步到所有名称空间

检查证书是否同步到所有名称空间

[root@ops-k8s-master01 ssl]# kubectl get secret -A |grep ssl
aims                          ssl                                              kubernetes.io/tls                     2      28d
appfactory                    ssl                                              kubernetes.io/tls                     2      28d
base                          ssl                                              kubernetes.io/tls                     2      28d
bigdata                       ssl                                              kubernetes.io/tls                     2      28d
cattle-fleet-system           ssl                                              kubernetes.io/tls                     2      28d
cattle-impersonation-system   ssl                                              kubernetes.io/tls                     2      28d
cattle-system                 ssl                                              kubernetes.io/tls                     2      28d
cert-manager                  ssl                                              kubernetes.io/tls                     2      28d
cim                           ssl                                              kubernetes.io/tls                     2      28d
cmc                           ssl                                              kubernetes.io/tls                     2      28d
cmini                         ssl                                              kubernetes.io/tls                     2      28d
cms                           ssl                                              kubernetes.io/tls                     2      28d
content                       ssl                                              kubernetes.io/tls                     2      28d

后续可以通过浏览器验证,访问域名看证书是否正常。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/5108.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis 从入门到精通【进阶篇】之Lua脚本详解

文章目录 0. 前言1. Redis Lua脚本简介1.1 Lua脚本介绍Lua语言概述&#xff1a;Lua脚本的特点&#xff1a; 1.2 Redis中为何选择LuaLua与Redis的结合优势Lua脚本在Redis中的应用场景 2. Redis Lua脚本的执行流程1. 加载脚本&#xff1a;1.1 脚本缓存机制&#xff1a;1.2 脚本加…

从MVC跨越到DDD微服务架构是如何演进的

微服务架构演进 领域模型中对象的层次从内到外依次是&#xff1a;值对象、实体、聚合和限界上下文。 实体或值对象的简单变更&#xff0c;一般不会让领域模型和微服务发生大变。但聚合的重组或拆分却可以。因为聚合内业务功能内聚&#xff0c;能独立完成特定业务。那聚合的重组…

TortoiseGit 入门指南12:创建标签

前面的文章不止一次的提到过 标签 &#xff08;Tag&#xff09;&#xff0c;我们在《TortoiseGit 入门指南08&#xff1a;浏览引用以及在引用间切换》一文中知道&#xff0c;标签 是一种 引用&#xff1b;还知道每个提交都对应着一个 SHA-1 值&#xff0c;而引用就是 SHA-1 的一…

什么是Java中的异常链,如何使用异常链来处理异常信息?

Java中的异常链是一种用于处理异常的技术&#xff0c;它允许您在捕获一个异常时继续向上查找引发该异常的异常。这可以帮助您更好地理解和管理异常&#xff0c;并使您的代码更加健壮和可靠。 想象一下&#xff0c;你在处理一个大型的、复杂的程序&#xff0c;它包含许多不同的…

麒麟系统设置nginx开机启动

1.创建nginx.service文件 vim /lib/systemd/system/nginx.service 文件内容&#xff1a; [Unit] Descriptionnginx service Afternetwork.target [Service] Typeforking ExecStart/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf ExecReload/usr/local/…

算法刷题Day 43 最后一块石头的重量II+目标和+一和零

Day 43 动态规划 1049. 最后一块石头的重量II 注意第二个for循环那里不要漏了等于号 class Solution { public:int lastStoneWeightII(vector<int>& stones) {int sum accumulate(stones.begin(), stones.end(), 0);int target sum / 2;vector<int> dp(ta…

WPF ListBoxItem DataTempldate command绑定无效解决

出错代码&#xff1a; <TextBlockGrid.Row"1"Margin"16,0,16,8"VerticalAlignment"Center"Foreground"{DynamicResource MaterialDesignBodyLight}"Text"{Binding Password}"TextWrapping"Wrap"><materi…

pyqt中有connect用法的控件

在PyQt中&#xff0c;以下控件可以使用connect方法进行信号与槽的连接&#xff1a; QPushButton&#xff1a;连接点击按钮的信号clickedQAction&#xff1a;连接菜单项或工具栏按钮的信号triggeredQComboBox&#xff1a;连接选择项发生改变的信号currentIndexChangedQLineEdit…

使用Audition进行音频算法验证与设计实验方法

+v hezkz17进数字音频系统研究开发交流答疑 一 音频算法验证与设计三种方法 (1)Audition (2)matlab (3)嵌入式DSP开发平台 二 Audition 软件如何进行音频算法验证实验?  要在Audition软件中进行音频算法验证实验,可以按照以下步骤进行操作: 1 导入音频文件:打…

Redis常见须知

介绍一下redis数据库 Redis 是一种基于内存的数据库&#xff0c;对数据的读写操作都是在内存中完成&#xff0c;因此读写速度非常快&#xff0c;常用于缓存&#xff0c;消息队列、分布式锁等场景。 Redis 提供了多种数据类型来支持不同的业务场景&#xff0c;比如 String(字符…

15 - 信号处理设计模式

---- 整理自狄泰软件唐佐林老师课程 查看所有文章链接&#xff1a;&#xff08;更新中&#xff09;Linux系统编程训练营 - 目录 文章目录 1. Linux应用程序安全性讨论1.1 问题1.2 不同场景1.2.1 场景一&#xff1a;不需要处理信号1.2.2 场景二&#xff1a;需要处理信号 2. 场景…

一文读懂Mysql 优化之order by【百万乃至千万数据查询优化推荐】

一文读懂Mysql 优化之order by 驱动表与被驱动表概念复合索引的三大原则排序方式对比索引排序驱动表排序临时表排序排序算法驱动表与被驱动表概念 当使用left join时,左表是驱动表,右表是被驱动表当使用right join时,右表是驱动表,左表是被驱动表当使用join(inner join) …

python_day11_pymysql

SQL基础语法回忆 show DATABASES;use world;-- SELECT DATABASES();show TABLES;CREATE TABLE Student(id int,name VARCHAR(10),age int,gender VARCHAR(5&#xff09; );删除表 # 删除表 DROP TABLE Student;插入操作 insert into student(id) VALUES(1),(2),(3);insert i…

STM32使用高级定时器输出互补pwm波

STM32使用高级定时器输出互补pwm波 前言硬件和软件cubemx新建工程打开Debug模式配置时钟源六大时钟的作用选择Crystal/Ceramic Resonator&#xff0c;即使用外部晶振作为HSE的时钟源。 配置时钟配置高级定时器TIM8和通用定时器TIM3这里大概解释一下配置pwm输出用到的几个参数我…

【解决】 Android Studio Failed to find configured root that contains

问题出现 尝试将拍摄的图像存储至手机自定义的存储空间&#xff0c;不料却一直报错&#xff0c;主要问题是在使用 FileProvider 从文件路径中获取 Uri 时出现异常。 相关代码 报错区域的文件路径相关的代码 主要是在 File imageDir new File(getExternalCacheDir(), “Galler…

【Nginx08】Nginx学习:HTTP核心模块(五)长连接与连接处理

Nginx学习&#xff1a;HTTP核心模块&#xff08;五&#xff09;长连接与连接处理 HTTP 基础知识大家掌握的怎么样呀&#xff1f;对于长连接这一块的内容应该也不是什么新鲜东西了吧。毕竟 HTTP1.1 都已经发布这么久了。今天主要来看的就是长连接相关的配置&#xff0c;另外还会…

ylb-接口4投资排行榜

总览&#xff1a; 1、使用Redis存储投资信息 2、Redis常量类 在common模块constants包&#xff0c;创建一个Redis常量类&#xff08;RedisKey&#xff09;&#xff1a; package com.bjpowernode.common.constants;public class RedisKey {/*投资排行榜*/public static fin…

Qt5.15.2安装

解释一下 Qt 的版本号 比如 5.15.2 是完整的 Qt 版本号&#xff0c;第一个数字 5 是大版本号&#xff08;major&#xff09;&#xff0c;第二个数字 15 是小版本号&#xff08;minor&#xff09;&#xff0c;第三个数字 2 是补丁号&#xff08;patch&#xff09;。 只要前面两个…

oracle 如何连同空表一起导出成dmp的方法

1、oracle导出dmp文件的时候&#xff0c;经常会出现一些空表&#xff0c;没有一并被导出的情况。 执行sql select alter table ||table_name|| allocate extent; from user_tables where num_rows0 or num_rows is null; 新建一个sql窗口&#xff0c;把查询结果的sql&#…

GSV6201替代方案|CS5466设计资料|CS5466原理图|typec转HDMI_8k方案芯片

GSV6201是一款高性能、低功耗、高性能的&#xff0c;USB Type-C备用模式显示端口1.4至HDMI 2.1转换器。通过集成增强型微控制器&#xff0c;GSV6201创造了一个经济高效的解决方案提供了上市时间优势。显示端口接收机支持高达32.4Gbps&#xff08;HBR3&#xff0c;4通道&#xf…