5.云原生安全之ingress配置域名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/595056.shtml

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

相关文章

Alibaba Cloud Linux镜像操作系统超详细测评!兼容CentOS

Alibaba Cloud Linux是基于龙蜥社区OpenAnolis龙蜥操作系统Anolis OS的阿里云发行版&#xff0c;针对阿里云服务器ECS做了大量深度优化&#xff0c;Alibaba Cloud Linux由阿里云官方免费提供长期支持和维护LTS&#xff0c;Alibaba Cloud Linux完全兼容CentOS/RHEL生态和操作方式…

PET塑料粘接时,要求强力粘接性能,那么怎么选胶呢?

聚对苯二甲酸乙二醇酯 简称PET。 需要强力粘接塑料PET时&#xff0c;可以选择以下几种胶水&#xff1a; 1.环氧树脂胶 具有较高的强度&#xff0c;硬度和耐久性&#xff0c;能够有效地粘合PET材料。但是&#xff0c;对于某些特殊环境和温度条件&#xff0c;可能需要选择耐高…

QT_01 安装、创建项目

QT - 安装、创建项目 1. 概述 1.1 什么是QT Qt 是一个跨平台的 C图形用户界面应用程序框架。 它为应用程序开发者提供建立艺术级图形界面所需的所有功能。 它是完全面向对象的&#xff0c;很容易扩展&#xff0c;并且允许真正的组件编程。 1.2 发展史 1991 年 Qt 最早由奇…

聊聊分布式会话及实现方案

鲁大猿&#xff0c;寻找精品资料&#xff0c;帮你构建Java全栈知识体系 http://www.jiagoujishu.cn 基础概念 Session Cookie 会话方案比较简单&#xff0c;这里我在网上找了点资料&#xff0c;再回顾下基础吧。 为什么要产生Session http协议本身是无状态的&#xff0c;客户…

数据结构——二叉树四种遍历的实现

目录 一、树的概念 1、树的定义 1&#xff09;树 2&#xff09;空树 3&#xff09;子树 2、结点的定义 1&#xff09;根结点 2&#xff09;叶子结点 3&#xff09;内部结点 3、结点间关系 1&#xff09;孩子结点 2&#xff09;父结点 3&#xff09;兄弟结点 4、树…

图像分割 分水岭法 watershed

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 本文的C#版本请访问&#xff1a;图像分割 分水岭法 watershed&#xff08;C#&#xff09;-CSDN博客 Watershed算法是一种图像处理算…

Linux mcd命令教程:如何在MS-DOS文件系统中切换工作目录(附实例教程和注意事项)

Linux mcd命令介绍 mcd是mtools工具的指令&#xff0c;它用于在MS-DOS文件系统中切换工作目录。如果不加任何参数&#xff0c;它将显示当前所在的磁盘和工作目录。 Linux mcd命令适用的Linux版本 mcd命令在所有主流的Linux发行版中都可以使用&#xff0c;包括但不限于Ubuntu…

Flink 的时间属性及原理解析

Flink的API大体上可以划分为三个层次&#xff1a;处于最底层的ProcessFunction、中间一层的DataStream API和最上层的SQL/Table API&#xff0c;这三层中的每一层都非常依赖于时间属性。时间在Flink中的地位如下图所示&#xff1a; 时间属性是流处理中最重要的一个方面&#…

python flask图书管理系统带文档

python flask图书管理系统带文档。功能&#xff1a;登录&#xff0c;图书的增删改查&#xff0c;读者管理&#xff0c;借阅记录&#xff0c;有文档。 技术&#xff1a;python3,flask,mysql,html。 包含源码数据库文件文档。 源码下载地址&#xff1a; https://download.csd…

芯课堂 | MCU之TIMER精准延时

引言 华芯微特公司SWM系列单片机提供的TIMER个数和功能有些微差别&#xff0c;为了让您更加简单的使用这一功能&#xff0c;下面小编将以SWM190为例&#xff0c;给大家展示如何使用SWM系列产品的TIMER功能。 TIMER精准延时 一、TIMER简介 TIMER是一种定时器工具&#xff0c;…

实例:NodeJS 操作 Kafka

本人是C#出身的程序员&#xff0c;c#很简单就能实现&#xff0c;有需要的可以加我私聊。但是就目前流行的开发语言&#xff0c;尤其是面向web方向应用的&#xff0c;我感觉就是Nodejs最简单了。下面介绍&#xff1a; 本文将会介绍在windows环境下启动Kafka&#xff0c;并通过n…

滑动窗口最大值(力扣239题)

单调递减队列&#xff1a; 在解决题目之前&#xff0c;我们先来了解一下单调递减队列&#xff0c;它其实就是在队列的基础上多加了一些限制&#xff0c;如下图&#xff1a; 要求队列中的元素必须按从大到小的顺序排列。 如果向单调递减队列中加入数字 1&#xff0c;可以直接加入…

一起玩儿物联网人工智能小车(ESP32)——25. 利用超声波传感器测量距离

摘要&#xff1a;本文介绍如何利用超声波传感器测量障碍物的距离 测量距离是智能小车经常要用到的功能&#xff0c;今天就来介绍一个最常用的测量距离的传感器——超声波传感器。 超声波传感器的测距原理是利用超声波发射器向某个方向发射超声波&#xff0c;与此同时&#xff…

【Emgu.CV教程】第22篇 、色彩处理之ApplyColorMap()伪色彩应用

这篇文章讲的内容比较轻松&#xff0c;技术含量比较低。从我个人的角度讲&#xff0c;ApplyColorMap()函数实现了类似PhotoShop的一些酷炫效果&#xff0c;既把原始彩色图转换为21种风格各异的彩色图像&#xff0c;比如秋天风格、热力图风格等等&#xff0c;但是&#xff0c;在…

【Java期末】学生成绩管理系统

诚接计算机专业编程任务(C语言、C、Python、Java、HTML、JavaScript、Vue等)10/15R&#xff0c;如有需要请私信我&#xff0c;或者加我的企鹅号&#xff1a;1404293476 本文资源下载地址&#xff1a;https://download.csdn.net/download/weixin_47040861/88697244 —————…

Win11/10家庭版升专业版/企业版

2024.1.4 下载地址&#xff1a;HEU_KMS_Activator GitHubhttps://github.com/zbezj/HEU_KMS_Activator/tags 下载最新版即可 &#xff08;升级时需要断网&#xff09;打开程序 --> 其他 --> 选择professional --> 在点击四叶草图标即可 升级完后再次打开软件 -->…

Kali Linux实现UEFI和传统BIOS(Legacy)引导启动

默认Kali linux安装会根据当前启动的引导模式进行安装 例&#xff1a;以UEFI引导启动安装程序&#xff0c;安装后仅能在UEFI引导模式下进入系统 安装Kali系统 这边基于VirtualBox虚拟机镜像实战操作 首先创建一个Kali虚拟机 这里需要注意&#xff0c;把启动 EFI (只针对某些操…

Vue v-html中内容图片过大自适应处理

之前图片如下&#xff0c;图片已经超出了页面的展示范围 对v-html增加样式处理 <div class"body padding-l scroll " v-html"docData.content"> </div><style scoped>.body >>> img {max-width: 100% ;} </style>…

CCNP课程实验-04-BGP_CFG

目录 实验条件网络拓朴 基础配置需求实现IGP部分1. 按照图示配置OSPF区域&#xff0c;RID为Loopback 0地址。其中Area 146要配置为OSPF的特殊区域。2. 配置其它路由协议&#xff0c;重分布使得路由互相注入&#xff0c;实现全网互通。3. R1配置策略路由&#xff0c;使得R2经R1去…

Vue 框架前导:详解 Ajax

Ajax Ajax 是异步的 JavaScript 和 XML。简单来说就是使用 XMLHttpRequest 对象和服务器通信。可以使用 JSON、XML、HTML 和 text 文本格式来发送和接收数据。具有异步的特性&#xff0c;可在不刷新页面的情况下实现和服务器的通信&#xff0c;交换数据或者更新页面 01. 体验 A…