5.云原生安全之kubesphere应用网关配置域名TLS证书

文章目录

  • cloudflare配置
    • 使用cloudflare托管域名
    • 获取cloudflare API Token
    • 在cloudflare中配置SSL/TLS
  • kubesphere使用cert-manager申请cloudflare证书
    • 安装证书管理器
    • 创建Secret资源
    • 创建cluster-issuer.yaml
    • 创建cert.yaml
    • 申请证书已经查看申请状态
  • 部署harbor并配置ingress使用证书

将域名托管到cloudflare进行域名解析管理,使用cloudflare管理域名,免费为域名提供安全证书

cloudflare配置

使用cloudflare托管域名

  1. 登录https://dash.cloudflare.com/
  2. 添加站点image.png
  3. 填写站点域名

image.png

  1. 选择免费版

image.png

  1. 查看 Cloudflare 名称服务器

image.png

  1. 进入购买域名网站控制台,将域名服务器设置为Cloudflare 名称服务器

购买国外域名参考:国外域名购买交易网站汇总,小编在godaddy购买的域名。
image.png

获取cloudflare API Token

image.png
image.png
image.png

在cloudflare中配置SSL/TLS

  1. 修改加密模式,选择完全

image.png

  1. 选择源服务器创建证书

image.png
image.png

kubesphere使用cert-manager申请cloudflare证书

参考:Kubernetes Ingress 配置泛域名 TLS 证书

安装证书管理器

$ kubectl create ns cert-manager
$ helm uninstall cert-manager -n cert-manager
$ helm install cert-manager jetstack/cert-manager \-n cert-manager \--version v1.8.0 \--set installCRDs=true \--set prometheus.enabled=false \--set 'extraArgs={--dns01-recursive-nameservers-only,--dns01-recursive-nameservers=119.29.29.29:53\,8.8.8.8:53}'    

验证安装结果
image.png

创建Secret资源

kubectl create secret generic cloudflare-api-token-secret --from-literal=api-token=xxxxxxxxxxxxxx -n cert-manager#把xxxxxxxxxxxxxx 替换为你的cloudflare上的token

上述创建方式翻译为资源文件Secret.yaml:

apiVersion: v1
kind: Secret
metadata:name: cloudflare-api-token-secretnamespace: cert-manager
type: Opaque
stringData:# #把xxxxxxxxxxxxxx 替换为你的cloudflare上的tokenapi-token: xxx 

创建资源kubectl apply -f Secret.yaml,查看资源
image.png

创建cluster-issuer.yaml

# 指定了使用的 Kubernetes API 版本和 cert-manager 的 API 组
apiVersion: cert-manager.io/v1
# 指定了这个 YAML 文件定义的 Kubernetes 对象类型为 ClusterIssuer,表示这是一个集群级别的证书颁发者。
kind: ClusterIssuer
# 部分包含了 Kubernetes 对象的元数据,包括名称 "letsencrypt" 和命名空间 "base"
metadata:name: letsencryptnamespace: base
# 部分定义了 ClusterIssuer 对象的规范
spec:# acme 部分定义了使用 ACME 协议进行证书颁发的配置信息acme:# 指定了 Let's Encrypt ACME 服务器的 URLserver: https://acme-v02.api.letsencrypt.org/directory# 指定了与 Let's Encrypt 交互时使用的电子邮件地址email: 1293780497@qq.com# 指定了用于存储私钥的 Kubernetes Secret 对象的名称privateKeySecretRef:name: letsencrypt# 部分定义了用于验证域名所有权的 DNS 验证器,以确保证书颁发请求是由域名所有者发起的solvers:# 表示使用 DNS 验证器进行验证- dns01:# 表示使用 Cloudflare DNS 服务进行验证cloudflare:# 指定了与 Cloudflare 交互时使用的电子邮件地址email: 1293780497@qq.comapiTokenSecretRef:# 指定了用于访问 Cloudflare API 的 Kubernetes Secret 对象的名称和键name: cloudflare-api-token-secretkey: api-token

这个 Kubernetes YAML 文件定义了一个名为 “letsencrypt” 的 ClusterIssuer 对象,用于配置 cert-manager 应用程序与 Let’s Encrypt 证书颁发机构进行交互,以自动为 Kubernetes 集群中的 Ingress 资源颁发 SSL/TLS 证书。

image.png

创建cert.yaml

# 指定了使用的 Kubernetes API 版本和 cert-manager 的 API 组
apiVersion: cert-manager.io/v1
# 指定了这个 YAML 文件定义的 Kubernetes 对象类型为 Certificate,表示这是一个证书对象
kind: Certificate
# 部分包含了 Kubernetes 对象的元数据
metadata:name: Certificatenamespace: base
spec:# 指定了用于存储证书的 Kubernetes Secret 对象的名称secretName: remote-yxym-shop-tls# 指定了用于颁发证书的证书颁发者的名称和类型,这里指定了名为 "letsencrypt" 的 ClusterIssuer 对象issuerRef:name: letsencryptkind: ClusterIssuer# 指定了证书颁发请求中包含的域名列表,这里只列出了一个名为 "xxx" 的域名。这些域名将用于验证证书颁发请求的域名所有权。dnsNames:- xxx

这个 Kubernetes YAML 文件定义了一个名为 “Certificate” 的 Certificate 对象,用于配置 cert-manager 应用程序获取 Let’s Encrypt 证书并将其存储在 Kubernetes 集群中的 Secret 对象中,以供 Ingress 资源使用。

申请证书已经查看申请状态

  1. 申请证书
kubectl apply -f cluster-issuer.yaml
kubectl apply -f cert.yaml
  1. 查看证书申请状态
kubectl get certificate -n <namespace>

image.png

  1. 如果状态Ready不是True需要查看原因
kubectl get challenge -n <namespace>
kubectl describe challenge challenge-xxxxxx -n <namespace>

部署harbor并配置ingress使用证书

  1. 进入应用商店

image.png

  1. 搜索harbor,一直下一步,直到应用设置

image.png

  1. 应用设置
    1. 修改ingress.hosts.core为自己的域名
    2. 修改externalURL为自己的域名
  2. 点击安装
  3. 配置ingress应用路由,选择https以及证书

image.png

  1. harbor访问测试

爱快中端口映射到了99端口,内网网关域名为192.168.31.11
image.png
image.png

  1. docker登录harbor测试


背景及现象:应用商店部署harbor,在浏览器通过https能登录,但是在linux中通过docker login提示错误443端口连接不上,部署情况:

  1. ingress通过端口映射暴露在公网上
  2. linux上docker loginx通过公网域名:公网映射端口,测试443连接不上

解决方案:在ks集群中修改hosts文件,将ingress绑定的网关ip添加上
测试docker登录harbor成功
image.png

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

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

相关文章

C++中的面向对象重点总结

面向对象的三大特性 封装 封装是将数据和操作这些数据的函数&#xff08;方法&#xff09;组合在一个类中的过程。 封装的主要目的是隐藏类的内部实现细节&#xff0c;仅暴露必要的接口给外部&#xff0c;通过控制类成员的访问级别&#xff0c;可以限制对类内部数据的直接访…

【面试】Redis基础知识

题目 为什么Redis是单线程却性能很高&#xff1f; Redis是一个高性能的基于内存的键值存储系统。它之所以能够达到高性能&#xff0c;主要有以下几个原因&#xff1a; 基于内存&#xff1a;Redis将数据存储在内存中&#xff0c;而不是硬盘上&#xff0c;这使得数据的读写速度…

回首2023,期待2024!

2023&#xff0c;在改变中到来 2023年1月1日&#xff0c;我从成都冷清的学校回到了哈尔滨的老家&#xff0c;开始了保研之前的最后一个寒假 当时的目标是将之前的科研理论转化为实际&#xff0c;生产出一篇sci&#xff0c;助力保研加分 星移斗转&#xff0c;事与愿违&#x…

编译ZLMediaKit(win10+msvc2019_x64)

前言 因工作需要&#xff0c;需要ZLMediaKit&#xff0c;为方便抓包分析&#xff0c;最好在windows系统上测试&#xff0c;但使用自己编译的第三方库一直出问题&#xff0c;无法编译通过。本文档记录下win10上的编译过程&#xff0c;供有需要的小伙伴使用 一、需要安装的软件…

基于多反应堆的高并发服务器【C/C++/Reactor】(中)子线程 WorkerThread的实现 和 线程池ThreadPool的初始化

一、子线程 WorkerThread的实现 &#xff08;1&#xff09;工作线程 线程ID&#xff1a;每个线程都有一个唯一的ID,用于标识线程的名字&#xff1a;非必需&#xff0c;主要用于识别线程互斥锁&#xff1a;线程同步条件变量&#xff1a;线程阻塞EventLoop&#xff1a;在每个子…

实战环境搭建-linux下安装jdk1.8

查看安装jdk版本信息,主要是怕之前有遗漏的,或者安装失败的java rpm -qa | grep java 显示如下信息: 卸载: rpm -e --nodeps java-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64 rpm -e --nodeps java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64 还有一些其他的命令…

工智能基础知识总结--什么是TextCNN

什么是TextCNN Yoon Kim在论文(2014 EMNLP) Convolutional Neural Networks for Sentence Classification提出TextCNN&#xff0c;该模型将卷积神经网络CNN应用到文本分类任务&#xff0c;是卷积神经网络应用到文本分析的开创性工作之⼀。 TextCNN的结构 TextCNN的结构图如下&…

【动态规划】【滑动窗口】C++算法:100154 执行操作后的最大分割数量

作者推荐 【动态规划】【字符串】扰乱字符串 本文涉及的基础知识点 C算法&#xff1a;滑动窗口总结 动态规划 LeetCode100154 执行操作后的最大分割数量 给你一个下标从 0 开始的字符串 s 和一个整数 k。 你需要执行以下分割操作&#xff0c;直到字符串 s 变为 空&#xf…

分布式事务完美解决方案:消息中间件(kafka)+ 本地事物 + 消息校对

前言 分布式事务是要保证多个服务下的多个数据库操作的一致性。分布式事务常见解决方案有&#xff1a;二阶段、三阶段和TCC实现强一致性事务&#xff0c;其实还有一种广为人知的方案就是利用消息队列来实现分布式事务&#xff0c;保证数据的最终一致性&#xff0c;也就是我们常…

JVM是如何基于虚拟机栈运行的

众所周知&#xff1a;JVM执行Java代码是靠执行引擎实现的。执行引擎有两套解释器&#xff1a;字节码解释器、模板解释器。字节码解释器比较简单&#xff0c;不多说&#xff0c;看图。本篇文章咱们讨论模板解释器执行Java代码的底层原理。 早些年研究模板解释器看到R大用汇编写的…

【Redis】非关系型数据库之Redis的介绍及安装配置

目录 前言 一、关系型数据库与非关系型数据库 1.1关系型数据库 1.2非关系型数据库 1.3两者的区别 1.4非关系型数据库产生的背景 1.5总结 二、Redis介绍 2.1Redis是什么 2.2Redis的优点 2.3Redis的使用场景 2.4那些数据适合放在缓存中 2.5Redis为什么那么快&#xf…

03-搜索与图论python

1-DFS 排列数字 N10 path[0]*N state[False]*N def dfs(u):if un:for i in range(n):print(path[i],end )print()for i in range(n):if state[i]False:path[u]i1 state[i]Truedfs(u1)#恢复现场path[u]0state[i]False nint(input()) dfs(0)采用位运算太优雅了&#xff0c;细细…

java基础-给个一键三联呗^_^哈哈

文章目录 1.注释修改注释字体三种注释方式 2.标识符和关键字3.数据类型4.类型转换5. 变量、常量、作用域6.基本运算符7.自增自减运算符、初识Math类8.逻辑运算符、位运算符9.三元运算符及小结10.包机制11.JavaDoc生成文档 1.注释 修改注释字体 打开设置Settings 三种注释方…

[Vulnhub靶机] DriftingBlues: 4

[Vulnhub靶机] DriftingBlues: 4靶机渗透思路及方法&#xff08;个人分享&#xff09; 靶机下载地址&#xff1a; https://download.vulnhub.com/driftingblues/driftingblues4_vh.ova 靶机地址&#xff1a;192.168.67.23 攻击机地址&#xff1a;192.168.67.3 一、信息收集 …

【教学类-45-01】X-Y之间的三连加题(a+b+c=)

作品展示&#xff1a; 背景需求&#xff1a; 我常去的大4班孩子们基本都适应了0-5之间的加法题&#xff0c;做题速度极快。 为了增加“花样”&#xff0c;吸引幼儿参与&#xff0c;修改参数&#xff0c;从二连加12变为三连加111。 素材准备: 代码重点 代码展示 X-Y 之间的3…

增长中台建设与第三方平台调研

增长中台建设与第三方平台调研 前言一、增长策略 1.1 增长算法1.2 增长算法主要内容汇总1.3 增长策略参考材料二、增长中台建设 2.1 增长中台2.2 建设参考材料三、第三方增长中台 3.1 创量3.2 引力引擎3.3 增长参谋 adSpark3.4 买量小飞机&#xff08;舜飞科技&#xff09;3.5 …

Android studio ViewPager2 底部圆点指示器应用设计

一、activity_main.xml布局文件: <androidx.viewpager2.widget.ViewPager2android:id="@+id/viewpager2"android:layout_width="403dp"android:layout_height="442dp"app:layout_constraintEnd_toEndOf="parent"app:layout_const…

python编程从入门到实践(2)操作列表

3.4 列表-list-切片操作 numlist[1,2,3,4,5,6,7,8,9] numlist[::-1] #######运行结果######[9, 8, 7, 6, 5, 4, 3, 2, 1]numlist[1,2,3,4,5,6,7,8,9] numlist[::2]#######运行结果######[1, 3, 5, 7, 9]7.列表–list-常用操作符 list1[123,456] list2[456,789] list1>list2…

如何使用 CMakeLists.txt 在 CMake 项目中生成一个可执行程序

文章目录 main.cppCMakeLists.txt创建一个构建目录运行 CMake编译项目总结 main.cpp #include <iostream> /*** 代码作者&#xff1a;小秋SLAM入门实战* 开发环境&#xff1a;Ubuntu 16.04* 运行依赖&#xff1a;C 11*/ int main(int argc, char** argv){std::cout<&…

MySQL视图索引执行计划相关十五道面试题分享

目录 一. 视图 1.1 含义 1.2 操作 创建视图 修改视图 删除视图 查看视图 二. 索引 2.1 什么是索引 2.2 为什么要使用索引 2.3 优点 2.4 缺点 2.5 何时不适用索引 2.6 索引何时失效 三. 执行计划 3.1 什么是执行计划 3.2 执行计划的作用 四. 面试题 表结构 …