大家好👋,在这篇文章里,我要和大家分享一下我在学习DevOps过程中实践的一些项目点子。你们即将尝试的所有项目点子都处于中级水平。在这篇文章里,我会列出几个带有仓库链接的项目点子,你可以用这些链接自己动手试试,很简单。你可以在仓库里找到所有项目的源代码。
我也在仓库和博客中分享了构建每个项目的步骤。我相信这些步骤能让你清楚地了解如何实际构建项目。你可以轻松地按照博客中的步骤来构建项目。
我认为它们的难度都会是中级水平,每个我估计最多三天完成。所以,试着从零开始自己实现它们。希望这对你学习有帮助,同时也能提高你的实际操作能力。
如果你无法开展这些项目,别担心。在评论中告诉我你在哪个环节卡住了,或者你也可以在我的领英上联系我。我很愿意帮助你。
1. Flask 应用程序从头到尾 CI/CD 流程 基于 GitOps 架构概览:我们将建立一个CI/CD管道,该管道将在主分支收到推送时触发。该管道将构建应用程序,运行测试,并遵循GitOps原则将应用程序部署到基于Kubernetes的集群。该管道将利用GitHub Actions和ArgoCD来实现。
项目架构的说明如下:- 首先,我们有一个GitHub仓库,其中包含了应用程序的源代码。该仓库连接到了GitHub Actions,将用于构建和部署应用程序。
- GitHub Actions工作流将由当主分支被推送时触发。工作流将构建应用程序,运行测试,并将Docker镜像上传到Docker Hub。之后它会更新清单仓库中的镜像标签。
- 清单仓库是一个单独的GitHub仓库,其中包含了应用程序的Kubernetes清单。我们的Argo CD将监控这个仓库中的更改。一旦在清单仓库中更新后的镜像标签,Argo CD将自动把新的应用程序版本部署到Kubernetes集群。
应用源代码库链接: 点这里
清单存储库:点这里
博客文章链接: 点这里
2. 动态库存平衡与Ansible 架构概览:我们将使用Ansible来配置和准备我们的EC2实例。实例启动后,我们将安装Web服务器(Httpd)。为了负载均衡,我们将使用HAProxy。所有这些都将被自动化,所以,我们只需要运行剧本(playbooks)。
该项目是使用Ansible创建一个动态的服务器列表来进行负载均衡。在这样的架构下,在此架构中,我使用了AWS EC2实例作为库存服务器和使用HAProxy作为负载均衡器。这个流程可以分为两个阶段。
1)关于创建动态主机清单的
ii) 第二个部分是动态地更新HAProxy配置文件。
仓库链接地址: 点击这里
博客文章链接: 点击这里查看
3. 使用 Kustomize 和 Kubernetes 构建一个投票应用 架构简介:在这个项目中,我们将构建一个简单的投票应用,让用户为他们最喜欢的宠物(猫或狗)投票。这是一个由Docker官方提供的示例。我认为这个例子非常适合用来理解Kustomize。您也可以看看Docker提供的使用Docker Swarm的官方示例。
投票应用包括以下组件:- 一个前端服务,为用户提供一个网页应用程序来为他们最喜欢的宠物(猫或狗)投他们最喜欢的宠物票。它是使用Python Flask开发的。
- 一个Redis服务,用于存储投票。
- 一个工作处理服务,处理投票并将它们存储在Postgres数据库中。
- 一个Postgres服务,存储有关投票的详细信息,例如宠物名称和投票数。
- 一个结果服务,显示投票的结果。它是用Node.js开发的。
仓库链接: 点击这里
这篇博客的链接: 点这里
4. 从零开始搭建 MongoDB 管理界面应用程序的 Helm 图表 架构概览:MongoDB Admin Interface 是一个网络应用程序,允许用户通过 网页界面工具 与 MongoDB 数据库进行交互。此网页界面提供了一个友好的用户界面,用于执行常见的数据库操作,例如 查询、插入、更新和删除。
使用 Kubernetes 的 MongoDB 管理界面部署的架构如下:- 我们要创建两个部署实例,一个用于应用程序,一个用于数据库。
Web 应用上线:
- 我们使用
mongo-express:latest
镜像来创建应用程序。 - 我们将使用部署来创建 pod,因为如果 pod 挂掉,部署将创建一个新的 pod。部署将帮助我们管理 pod 的寿命。它还为我们提供了扩展应用程序和高可用性的功能。
- 为了将 Web 暴露到外部,我们使用了类型为
NodePort
的服务。 - NodePort: 它是一种服务类型,可以将部署暴露到外部。
数据库部署:
- 我们使用
mongo:5.0
镜像来创建数据库部署。 - 我们再次使用部署来创建 pod,因为如果 pod 挂掉,部署会自动创建一个新的 pod。
- 为了使数据库能与前端和后端通信,我们使用了
ClusterIP
类型的服务。 - ClusterIP: 这是一种服务类型,它在集群内部暴露服务。
其他使用的 Kubernetes 资源:
- Secrets: 用于存储敏感信息,例如
username
和password
。 - ConfigMap: 在我们的情况下,用于存储
database URL
。 - PersistentVolume 和 PersistentVolumeClaim: 用于存储数据库中的数据,即使我们的 pod 崩溃了,数据也会安全保存。
仓库链接:点击这里
博客链接: 点击此处
从零开始的MongoDB管理界面应用的Helm图表
- 使用 AWS CI/CD 服务的 Node.js Web 应用程序的端到端 CI/CD 流程
CI/CD 流水线的结构如下。
- 用户首先将新的提交推送到GitHub仓库,这会触发包含三个阶段的管道:源代码、构建和部署。
- 源码阶段从GitHub仓库中拉取源代码。
- 构建阶段使用AWS CodeBuild来测试Node.js web应用。
- 部署阶段使用AWS CodeDeploy将Node.js web应用部署到Elastic Beanstalk环境中。
注意: 在这个项目里,构建阶段用于测试运行 Node.js Web 应用程序。在实际情况下,您也会在此阶段包含构建过程。
仓库地址: 点击这里,
博客文章链接: 点击此处. 了解如何使用AWS CI/CD服务为Node.js网络应用程序构建端到端的CI/CD管道.
👏 如果你觉得这篇文章有帮助,别忘了点赞并且关注资料。我将分享更多关于 云和DevOps 的项目和想法。如果有什么不清楚的地方,可以在评论区留言或通过LinkedIn联系我。
让我们在LinkedIn上联系 : 我的LinkedIn个人资料
探索更多实践项目(如果你发现我的仓库有帮助,别忘了在GitHub上关注我):我的GitHub主页
共同学习,写下你的评论
评论加载中...
作者其他优质文章