终于可以解放双手了,使用Jenkins、ArgoCD 部署 Java 应用程序,最终部署在 Kubernetes 集群上

简介: 本文详细介绍了如何设置Jenkins服务器、Sonarqube服务器及Jfrog-Artifactory服务器,并通过ArgoCD在Kubernetes集群上实现持续集成与部署。内容涵盖环境配置、插件安装、凭据管理及部署流程,适用于DevOps实践与自动化流水线构建。

概览

Jenkins服务器设置

1. 我们必须配置Jenkins,为此我们将创建一个安装Jenkins 的EC2服务器。此外,我们还将安装一些其他工具,例如Sonarqube和Docker,因此我们需要比较大的RAM和CPU。

服务器配置: t2.large、Ubuntu22.04、安全组端口开放 - 22、9000、8080、8081 和 8082,存储:30GB gp2。

2.创建EC2实例后,使用ssh登录创建的机器。

3.安装Jenkins,您可以参考Github Repo,只需运行脚本或按照命令将其安装到您的机器上。

GitHub 存储库:https://github.com/AmanPathak-DevOps/Scripts-Installation.git

下面可以看到Jenkins已经安装完成。

4. 现在,在 public_ip:8080 的帮助下浏览 Jenkins 服务器。确保您已在实例的安全组中打开端口号 8080。

5. 使用命令/var/lib/jenkins/secrets/initialAdminPassword 获取密码。

6. 输入密码后,单击继续。

7. 点击“安装建议的插件”

8. 现在,您可以通过单击“跳过并以管理员身份继续”继续

9. 设置完成。

10.安装Docker Pipeline插件

Sonarqube 服务器设置

11.安装Sonarqube扫描仪插件

12.在您的 EC2 实例或本地计算机上安装Sonarqube 。

您可以参考 Github Repo,只需运行脚本或按照命令将其安装到您的计算机上。

GitHub存储库:https://github.com/AmanPathak-DevOps/Scripts-Installation.git

apt install unzipadduser sonarqube

wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-9.4.0.54424.zip
unzip *
chmod -R 755 /home/sonarqube/sonarqube-9.4.0.54424
chown -R sonarqube:sonarqube /home/sonarqube/sonarqube-9.4.0.54424
cd sonarqube-9.4.0.54424/bin/linux-x86–64/
./sonar.sh start

13. 为 EC2/本地服务器设置 Sonarqube。

用户名和密码:admin

在下一步中,您必须重置密码。

14. 您的 Sonarqube 服务器已启动并正在运行,如下所示。

15. 现在,我们必须将 Jenkins Sonarqube 扫描仪与此Sonarqube 服务器连接起来。为此,请单击搜索框右侧的个人资料,然后转到“我的帐户”。

16. 生成用于将 Jenkins Sonarqube Scanner与Sonarqube Server连接的令牌。单击“安全”选项卡,为令牌命名,然后单击“生成”。

17. 现在,在 Jenkins 中添加生成的令牌。通过仪表板 -> 管理 Jenkins -> 凭据 -> 系统 -> 全局凭据。

Jfrog-Artifactory 服务器设置

18. 创建新的EC2实例t2.medium并安装jfrog-artifactory。

您可以参考 Github Repo,其中有一个名为Install-Jfrog-Artifactory.sh 的脚本并运行它,在您的计算机上安装了Jfrog Artifactory ,或者您也可以直接复制和粘贴。

GitHub 存储库:https://github.com/AmanPathak-DevOps/Scripts-Installation.git

19. 现在,设置Artifactory,在代码分析成功完成后上传工件。

单击“开始”。

20. 输入新密码,然后单击下一步。

21. 单击“跳过”

22. 单击“跳过”。

23.通过命名来创建存储库,确保存储库应该是通用的或Maven 的,因为我们必须上传java 的工件。

24. 为存储库命名并单击“保存并完成”。

25. 为了将Jfrog-Artifactory与Jenkins集成,我们必须在Jfrog-Artifactory 中生成令牌。

单击生成访问令牌。

26. 单击“生成”。

27. 复制令牌。

28.转到Jenkins和仪表板 -> 管理 Jenkins -> 凭据并粘贴从Jfrog-Artifactory复制的令牌,然后按照下面的屏幕截图执行其余操作,然后单击创建。

29.在安装了Jenkins的EC2服务器上安装Docker。您可以参考下面的命令,或者您可以参考 Github Repo,您只需要运行脚本并将其安装到您的计算机上。

GitHub 存储库:https://github.com/AmanPathak-DevOps/Scripts-Installation.git

sudo apt updatesudo apt install docker.iosudo su -usermod -aG docker jenkinsusermod -aG docker ubuntusystemctl restart docker

30.在本地计算机上安装minikube 。

请参阅官方的链接:https ://minikube.sigs.k8s.io/docs/start/

您也可以参考 Github Repo,只需运行脚本或按照命令将其安装到您的计算机上。

GitHub 存储库:https://github.com/AmanPathak-DevOps/Scripts-Installation.git

sudo apt updatesudo apt upgradewget https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64chmod +x minikube-linux-amd64sudo mv minikube-linux-amd64 /usr/local/bin/minikube

31. 转至https://operatorhub.io/operator/argocd-operator并单击安装来安装 ArgoCD。您将获得在安装了minikube 的本地计算机上安装时必须使用的命令。

32. 命令运行 并且argoCD 操作符已安装

33. 存储Docker 凭据。

34.还存储Github 凭证(个人访问令牌)。

部署在 Kubernetes 集群上

35. 访问operatorhub.io并输入argoCD,然后单击operator Documentation链接

36. 单击“用法”->“基础知识”并复制所选脚本。

37. 创建yml 文件并将脚本粘贴到该文件中。

38. 我们使用此脚本来下载argoCD控制器。

现在,下载 argoCD 控制器的最后一步将通过以下命令完成:kubectl apply -f argocd-basics.yml

39. 在这里,您可以看到argoCD 控制器已创建。

40. 我们需要第四个控制器,因为它负责argoCD UI。

41. 我们想在本地机器上运行这个控制器。因此,为此,我将编辑第四个控制器,在其中将类型:ClusterIP更改为NodePort。

42. 我们运行相同的命令来获取服务,但这次有一个不同之处,我们可以看到 NodePort 。

现在,要生成浏览器 URL,请编写命令minikube service argocd-server。

要获取浏览器 URL,请编写命令minikube service list,您可以在下面的屏幕截图中查看该命令 。

43. 我点击了该链接,您将看到此UI,点击“高级”,然后点击“<your_IP>”

44. 您可以看到ArgoCD UI登录页面。

45. 在这里,您必须输入用户名和密码。

用户名是admin ,要获取密码,请参阅下面的屏幕截图。

46. 我已经得到加密的密码并将复制它。

现在,我已经使用以下命令解密了密码

47. 现在,我已经输入了用户名和密码并登录了argoCD UI 。

48. 单击“创建应用程序”。您可以在上面的屏幕截图中看到这一点。

现在,要创建应用程序,您必须输入一些配置,您可以在下面的屏幕截图中查看它,最后单击“创建”。

49. 现在,等待几分钟。argoCD将自动部署应用程序。

50. 在这里,发现报错了,因为我在名称空间参数中写入了名称空间,这应该是默认值。

51.那么,让我们纠正它。

最终配置。

52. 单击“保存”后,单击“刷新”,它将再次启动部署应用程序的过程。

我的应用程序已成功部署,如下面的屏幕截图所示。

53. 如果运行命令kubectl get pods。您可以看到最后两个正在运行的Pod ,这确保部署成功。

54. 所以,我也面临并解决了一些问题。

每个服务和工具的最终输出

Jenkins Pipeline

Sonarqube 代码分析

上传工件至 Jfrog Artifactory

在 Kubernetes 集群上使用 argoCD 控制器进行部署


相关文章
|
1月前
|
机器学习/深度学习 人工智能 监控
Java与AI模型部署:构建企业级模型服务与生命周期管理平台
随着企业AI模型数量的快速增长,模型部署与生命周期管理成为确保AI应用稳定运行的关键。本文深入探讨如何使用Java生态构建一个企业级的模型服务平台,实现模型的版本控制、A/B测试、灰度发布、监控与回滚。通过集成Spring Boot、Kubernetes、MLflow和监控工具,我们将展示如何构建一个高可用、可扩展的模型服务架构,为大规模AI应用提供坚实的运维基础。
175 0
|
1月前
|
Kubernetes jenkins 持续交付
Artifact Hub在Kubernetes中的应用:部署Jenkins的脚本整理
以上步骤断言清晰明确地描述了如何通过Artifact Hub 使用Helm图表来部署Kubernetes 中得Jenkis 实例,并且提供了相应得Shell 脚本作为执行指南. 这样不但能够帮助用户快速地进行操作, 同时也能够通过自定义参数来满足不同用户需求.
95 5
|
2月前
|
监控 Kubernetes Java
使用 New Relic APM 和 Kubernetes Metrics 监控 EKS 上的 Java 微服务
在阿里云AKS上运行Java微服务常遇性能瓶颈与OOMKilled等问题。本文教你通过New Relic实现集群与JVM双层监控,集成Helm部署、JVM代理注入、GC调优及告警仪表盘,打通从节点资源到应用内存的全链路观测,提升排障效率,保障服务稳定。
165 1
|
2月前
|
弹性计算 Kubernetes jenkins
如何在 ECS/EKS 集群中有效使用 Jenkins
本文探讨了如何将 Jenkins 与 AWS ECS 和 EKS 集群集成,以构建高效、灵活且具备自动扩缩容能力的 CI/CD 流水线,提升软件交付效率并优化资源成本。
487 0
|
4月前
|
安全 JavaScript Java
java Web 项目完整案例实操指南包含从搭建到部署的详细步骤及热门长尾关键词解析的实操指南
本项目为一个完整的JavaWeb应用案例,采用Spring Boot 3、Vue 3、MySQL、Redis等最新技术栈,涵盖前后端分离架构设计、RESTful API开发、JWT安全认证、Docker容器化部署等内容,适合掌握企业级Web项目全流程开发与部署。
271 0
|
1月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
112 2
|
1月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
122 3
|
2月前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
Java 数据库 Spring
117 0
|
2月前
|
算法 Java
Java多线程编程:实现线程间数据共享机制
以上就是Java中几种主要处理多线程序列化资源以及协调各自独立运行但需相互配合以完成任务threads 的技术手段与策略。正确应用上述技术将大大增强你程序稳定性与效率同时也降低bug出现率因此深刻理解每项技术背后理论至关重要.
185 16

推荐镜像

更多