前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Devtron:强大的 K8S 软件交付工作流程

Devtron:强大的 K8S 软件交付工作流程

作者头像
我的小碗汤
发布2023-03-19 17:28:10
8840
发布2023-03-19 17:28:10
举报
文章被收录于专栏:我的小碗汤

GitHub 语言类趋势真是日新月异

原文:https://towardsaws.com/devtron-complete-package-of-kubernetes-solutions-6c4fe1ffa42c

本文我们从讨论架构类型开始,然后开始介绍工具,比如为什么在这一步需要这个工具。然后来到 Devtron 部分配置,将部署一个 NodeJS 应用程序,以便能够看到 Devtron 如何使我们的工作更轻松。

大多数情况下,当构建应用程序时都有两种架构,可以在之上开发完整的应用程序。

  1. 单体架构
  2. 微服务架构

单体架构

如您所知,单体应用程序有一个庞大的代码库,它是一个单一的、具有一个代码库的大型进程。如果需要进行任何更改,得通过访问代码库来更新整个堆栈,这使得任务耗时,难以管理,可扩展性问题,缺乏灵活性等。

单体架构

微服务架构

而在微服务中,每个服务都有自己的代码库。可以轻松管理、灵活扩展和持续部署。

容器

Container 的出现又简化了微服务的部署。为了运行这些容器,需要容器引擎,它接受用户请求,包括拉取镜像,并运行容器。有许多容器引擎可用,例如 Docker、Containerd、Podman、RKT、CRI-O 和 LXD。

尽管如此,还是有缺点:由于某种原因容器出现故障,没有办法监视并且重新启动容器。如果负载增加,没有办法水平扩展容器。

这些问题的解决方案是 Kubernetes

Kubernetes

通常也称为容器管理工具。这可以在调度、自动缩放、故障自愈等方便提高容器自动化管理。但随之而来的服务部署,多集群管理方面也带来了很大的挑战。

所以,在这里我想介绍一个名为Devtron的工具,它可以让工作变的轻松,您只需执行一些步骤就可以在生产级别部署任何应用程序。

为什么需要 Devtron?

它包含了 CI/CD、监控、多集群管理等功能。

Devtron 的特点:

  • Kubernetes 的零代码软件交付工作流程
  • 多云部署
  • 轻松 DevSecOps 集成
  • 应用程序调试仪表板
  • 企业级安全性和合规性
  • GitOps
  • 运营可视化

实践

出于演示目的,将使用 microK8s

设置集群

代码语言:javascript
复制
$ sudo snap install microk8s --classic --channel=1.22
$ sudo usermod -a -G microk8s $USER
$ sudo chown -f -R $USER ~/.kube
$ sudo su - $USER microk8s enable dns storage helm3
$ echo "alias kubectl='microk8s kubectl '" >> .bashrc
$ echo "alias helm='microk8s helm3 '" >> .bashrc
$ source .bashrc

安装 Devtron

代码语言:javascript
复制
$ helm repo add devtron https://helm.devtron.ai
$ helm install devtron devtron/devtron-operator \
   --create-namespace --namespace devtroncd \
   --set installer.modules={cicd} \
   --set components.devtron.service.type=NodePort

这里 svc 类型是 NodePort

Devtron 安装状态

代码语言:javascript
复制
$ kubectl -n devtroncd get installers installer-devtron -o jsonpath='{.status.sync.status}'
  • Downloaded:已经下载完成安装程序所有的清单,安装正在进行中。
  • Applied:安装程序已成功应用所有清单,安装完成。

获取端口号,就可以访问仪表板了:

代码语言:javascript
复制
$ kubectl get svc -n devtroncd

配置安全组

允许该端口号上的流量:

访问仪表板:

获取管理员密码

代码语言:javascript
复制
$ kubectl -n devtroncd get secret devtron-secret -o jsonpath='{.data.ACD_PASSWORD}' | base64 -d

配置以下重要部分

  1. 添加主机 URL
  2. GitOps 配置
  3. 容器注册表配置

按照以下步骤部署应用程序

创建自定义应用程序

定制应用

Git 存储库设置

  • 提供存储库的 URL
  • 设置 checkout 路径(如果您使用多个 Git 存储库,则需要)
  • 递归提取子模块(如果您的存储库有子模块)

编辑 Git 存储库

Container Registry Repo 配置部分:

  • 容器存储仓库 URI
  • Dockerfile 路径

Docker 构建配置

部署模板(默认模板由 Devtron 提供,您可以根据自己的用例进行编辑),例如:

  • 应用程序端口为 4000
  • 所需 CPU = 50m
  • 服务类型 = NodePort

Deployment 模板

在工作流编辑器中设置持续集成部分,设置了从 Devtron 到 SCM 工具的管道。指定要部署应用程序的分支。Devtron 将检查推送请求。可以设置自动或手动触发构建。

设置 CI 部分

持续部署

点击 ci 的“+”图标

  • 选择 NameSpace
  • Pipeline Execution (自动或手动)
  • 部署策略 (Rolling, Recreate, Blue-Green, Canary)

ConfigMap

ConfigMap 用于存储常用的配置变量,允许用户将分布式系统中不同模块的环境变量统一到一个对象中。

Secrets

Secrets 是一个包含敏感数据的对象,例如密码、OAuth 令牌和 SSH 密钥。本示例中设置秘密访问令牌和应用程序需要的密码。

至此,应用配置部分已经完成:

构建和部署

构建历史

部署历史

获取公开此应用程序的端口号,以便能够访问此应用程序。

应用端口

在安全组中允许这个端口

安全组

访问应用程序 🚀

Application 主页

查看日志

- END -

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 进击云原生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 单体架构
  • 微服务架构
  • 容器
  • Kubernetes
  • 为什么需要 Devtron?
    • Devtron 的特点:
      • 实践
        • 设置集群
          • 安装 Devtron
            • Devtron 安装状态
              • 配置安全组
                • 获取管理员密码
                  • 配置以下重要部分
                  • 按照以下步骤部署应用程序
                    • 创建自定义应用程序
                      • 定制应用
                        • 编辑 Git 存储库
                          • Docker 构建配置
                            • Deployment 模板
                              • 持续部署
                                • ConfigMap
                                  • Secrets
                                  相关产品与服务
                                  容器镜像服务
                                  容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
                                  领券
                                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档