为了账号安全,请及时绑定邮箱和手机立即绑定

DevOps 项目想法 💡 附带解决方案:中级难度

大家好👋,在这篇文章里,我要和大家分享一下我在学习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: 用于存储敏感信息,例如 usernamepassword
  • ConfigMap: 在我们的情况下,用于存储 database URL
  • PersistentVolume 和 PersistentVolumeClaim: 用于存储数据库中的数据,即使我们的 pod 崩溃了,数据也会安全保存。

仓库链接:点击这里

博客链接: 点击此处
从零开始的MongoDB管理界面应用的Helm图表

  1. 使用 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主页

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消