Devops部署maven项目

embedded/2024/10/18 23:06:15/

这里讲下应用k8s集群devops持续集成部署maven项目的流程。

failed to verify certificate: x509: certificate signed by unknown authority

今天在执行kubectl get nodes的时候报的证书验证问题,看了一圈首次搭建k8s的都是高频出现的问题。

couldn’t get current server API group list: Get “https://kubernetes.docker.internal:6443/api?timeout=32s”: tls: failed to verify certificate: x509: certificate signed by unknown authority (possibly because of “crypto/rsa: verification error” while trying to verify candidate authority certificate “kubernetes”)

在这里插入图片描述
加上 --insecure-skip-tls-verify 也确实会提示 error: You must be logged in to the server (the server has asked for the client to provide credentials)
在这里插入图片描述
这个其实就是.kube目录下的config文件有问题,里面有集群的certificate-authority-data和客户端的证书数据client-certificate-data,退出服务,删掉config文件再重启
hosts文件添加127.0.0.1 kubernetes.docker.internal
在这里插入图片描述
在这里插入图片描述
到此k8s环境算是连通
在这里插入图片描述
这是我之前搞的一个maven项目,在本地打包后手工推到阿里云ARC的镜像
在这里插入图片描述
k8s部署maven项目需要编写deployment.yaml和service.yaml两个文件
deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:name: olympus-backend-deployment
spec:replicas: 1selector:matchLabels:app: olympus-backendtemplate:metadata:labels:app: olympus-backendspec:containers:- name: olympus-backendimage: registry.cn-hangzhou.aliyuncs.com/xxx/olympus-backend:20240425ports:- containerPort: 8080

service.yaml

apiVersion: v1
kind: Service
metadata:name: olympus-backend-service
spec:selector:app: olympus-backendports:- protocol: TCPport: 8080targetPort: 8080nodePort: 30001type: NodePort

应用部署到k8s
在这里插入图片描述
查看部署状态
我测试deployment.yaml用的镜像是从阿里云ACR拉的,确保可以docker pull拉取成功,测试可以先手工拉下来。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果是windows本地部署的,用不了LoadBalancer负载均衡的模式,可以改NodePort
在这里插入图片描述
查看服务对外ip和端口

kubectl get svc -o wide查看部署节点
在这里插入图片描述

接口访问

测试项目里我暴露了一个接口,每次返回会返回当前的时间。上面是通过NodePort指定了30001对外端口

java">  @GetMapping("/")public String home() {return LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_DATE_TIME);}

不断刷新浏览器可以看到毫秒单位的时间一直在更新
在这里插入图片描述
而在实际生产中,大部分中小企业不会自建云,容易故障踩坑,更多选择云托管。自主搭建Jenkins,Maven私服,Rancher管理k8s集群,好一点的会自主研发Devops平台加入审批流,上线前研发Leader审批版本发布、sql脚本等。
阿里云效其实也是干这种事情,最近在上面走了下流程,可以给大家简单看下我成功运行过的流水线。一般互联网公司的发布流程大致也是这样,前面还会有git分支管理合并等,如果代码合并有冲突也会中断。
在代码构建前会有代码扫描、安全扫描、漏洞检测、单元测试覆盖率等,代码扫描完可以查看报告。
在这里插入图片描述
人工卡点是我加入的模拟实际流程中的审批,运行到这里对应的审批人在钉钉会收到审批通知。
在这里插入图片描述
审批通过,流水线会自动进入下一步流程进行maven项目构建,docker镜像打包,这里我是以时间为tag标识各个版本,下面是我构建完推送到ACR的镜像。
在这里插入图片描述
镜像打完会走到k8s集群去创建应用部署。
在这里插入图片描述
k8s集群这边创建Pod的流水也是拉取镜像、创建容器、如果需要外网访问需要创建负载均衡器。如果我们的应用需要访问外网,如有涉及到第三方接口对接等,需要开通NAT网关服务。
在这里插入图片描述
启动完可以在访问方式这里看到分配的外网ip和端口。
在这里插入图片描述
在浏览器可以直接测试一下服务。
在这里插入图片描述
在实际生产中,要做的事情肯定不止这些,如需要接入SLS日志服务汇总查询各项目打印的业务日志方便线上问题排查,在监控这栏可以开通接入可观测 Prometheus 监控服务,全链路跟踪,Ingress域名路由转发,异常通知(cpu负载、慢SQL、磁盘空间监控、垃圾回收频率、服务宕机重启监控、http请求超时)等。


http://www.ppmy.cn/embedded/28287.html

相关文章

Mac数据恢复软件快速比较:适用于Macbook的10佳恢复软件

数据丢失导致无数个人和组织每天损失大量资金。更糟糕的是,某些文件具有货币价值和情感意义,使它们不可替代,并使数据恢复成为唯一可行的选择。最好的消息是Mac用户可以从各种数据恢复程序中进行选择。为了帮助您尽可能快速、轻松地恢复丢失的…

利用STM32实现语音识别功能

引言 随着物联网和智能设备的普及,语音识别技术正逐渐成为用户交互的主流方式之一。 STM32微控制器具备处理高效率语音识别算法的能力,使其成为实现低成本、低功耗语音交互系统的理想选择。 本教程将介绍如何在STM32平台上开发和部署一个基础的语音识…

题解:CF1951E(No Palindromes)

题解:CF1951E(No Palindromes) 题目翻译:给定一个长度为 n n n 的字符串 s s s,询问是否可以将其分成若干份,使得每一份都不是回文串。若可以,输出 YES 并给出任意一组方案;若不可…

关于PostgreSQL的20道面试题

1. 请解释PostgreSQL中的事务(Transaction)以及它的ACID属性。 PostgreSQL中的事务具有ACID属性,确保了数据库操作的可靠性和数据一致性。 以下是ACID各个属性的具体含义及举例说明: 原子性(Atomicity)&…

[1688]jsp工资投放管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 工资投放管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0…

1083 是否存在相等的差

solution 输出的是重复的差值&#xff0c;而非全部差值 #include<iostream> #include<algorithm> using namespace std; const int maxn 1e4 10; int flag[maxn] {0}; int main(){int n, x;scanf("%d", &n);for(int i 1; i < n; i){scanf(&…

STM32标准库控制一盏LED闪烁

实物连接&#xff1a; ## 软件编程&#xff1a;默认已经有一个工程模板&#xff0c;代码实现逻辑&#xff1a; 1、使用RCC开启GPIO的时钟&#xff1b; 2、使用GPIO初始化函数实现初始化GPIO 3、使用输入或输出的函数控制GPIO口 #include "stm32f10x.h" …

python中的进程线程和协程

目录 进程&#xff08;Process&#xff09;多进程代码实例 线程&#xff08;Thread&#xff09;多线程存在原因及其缺点多线程代码实例 协程&#xff08;Coroutine&#xff09;协程的优点协程代码实例 进程、线程和协程适合的任务性质和环境多进程更适合的场景多线程更适合的场…