原文:https://towardsaws.com/devtron-complete-package-of-kubernetes-solutions-6c4fe1ffa42c
本文我们从讨论架构类型开始,然后开始介绍工具,比如为什么在这一步需要这个工具。然后来到 Devtron 部分配置,将部署一个 NodeJS 应用程序,以便能够看到 Devtron 如何使我们的工作更轻松。
大多数情况下,当构建应用程序时都有两种架构,可以在之上开发完整的应用程序。
如您所知,单体应用程序有一个庞大的代码库,它是一个单一的、具有一个代码库的大型进程。如果需要进行任何更改,得通过访问代码库来更新整个堆栈,这使得任务耗时,难以管理,可扩展性问题,缺乏灵活性等。
单体架构
而在微服务中,每个服务都有自己的代码库。可以轻松管理、灵活扩展和持续部署。
Container 的出现又简化了微服务的部署。为了运行这些容器,需要容器引擎,它接受用户请求,包括拉取镜像,并运行容器。有许多容器引擎可用,例如 Docker、Containerd、Podman、RKT、CRI-O 和 LXD。
尽管如此,还是有缺点:由于某种原因容器出现故障,没有办法监视并且重新启动容器。如果负载增加,没有办法水平扩展容器。
这些问题的解决方案是 Kubernetes。
通常也称为容器管理工具。这可以在调度、自动缩放、故障自愈等方便提高容器自动化管理。但随之而来的服务部署,多集群管理方面也带来了很大的挑战。
所以,在这里我想介绍一个名为Devtron
的工具,它可以让工作变的轻松,您只需执行一些步骤就可以在生产级别部署任何应用程序。
它包含了 CI/CD、监控、多集群管理等功能。
出于演示目的,将使用 microK8s
$ 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
$ 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
$ kubectl -n devtroncd get installers installer-devtron -o jsonpath='{.status.sync.status}'
获取端口号,就可以访问仪表板了:
$ kubectl get svc -n devtroncd
允许该端口号上的流量:
访问仪表板:
$ kubectl -n devtroncd get secret devtron-secret -o jsonpath='{.data.ACD_PASSWORD}' | base64 -d
Git 存储库设置
Container Registry Repo 配置部分:
部署模板(默认模板由 Devtron 提供,您可以根据自己的用例进行编辑),例如:
在工作流编辑器中设置持续集成部分,设置了从 Devtron 到 SCM 工具的管道。指定要部署应用程序的分支。Devtron 将检查推送请求。可以设置自动或手动触发构建。
设置 CI 部分
点击 ci 的“+”图标
ConfigMap 用于存储常用的配置变量,允许用户将分布式系统中不同模块的环境变量统一到一个对象中。
Secrets 是一个包含敏感数据的对象,例如密码、OAuth 令牌和 SSH 密钥。本示例中设置秘密访问令牌和应用程序需要的密码。
至此,应用配置部分已经完成:
构建和部署
构建历史
部署历史
获取公开此应用程序的端口号,以便能够访问此应用程序。
应用端口
在安全组中允许这个端口
安全组
访问应用程序 🚀
Application 主页
查看日志
- END -