写点什么

DHorse 系列文章之操作手册

作者:tiandizhiguai
  • 2022-11-28
    浙江
  • 本文字数:1695 字

    阅读完需:约 6 分钟

在介绍DHorse的操作之前,我们先来看一下发布一个系统的流程是什么样的。

发布系统的流程

我们以一个 Springboot 系统为例,来说明一下发布流程。1.首先从代码仓库下载代码,比如 Gitlab;2.接着是进行打包,比如使用Maven;3.如果要使用 k8s 作为编排,还需要把步骤 2 产生的包制作成镜像,比如使用Docker;4.上传步骤 3 的镜像到远程仓库,比如 Harhor;5.最后,下载镜像并编写 Deployment 文件部署到云集群,比如 k8s;从以上步骤可以看出,发布需要的工具和环境至少包括:代码仓库(Gitlab)、打包环境(Maven)、镜像制作(Docker)、镜像仓库(Harbor)、云集群(k8s)等;在 DHorse 系统里,有些环境是对于用户来说是无需感知,因为已经做了集成,如:打包和镜像制作,可以参考文章:《DHorse系列文章之镜像制作》和《DHorse系列文章之maven打包》。其他的则需要配置,下面就一一介绍。

DHorse 操作说明

代码仓库配置

如图 1 所示:



图 1

镜像仓库配置

如图 2 所示:



图 2

Maven 配置

如图 3 所示:



图 3 在这里,可以指定打包时的 Java 版本信息,如果不指定,则默认使用 DHorse 系统所在的环境。

集群配置

进入“集群管理”菜单,可以进行添加集群操作,假如已经部署好 k8s 集群,则可以添加到 DHorse,如图 4 所示:



图 4 我们可以通过如下方式生成 k8s 的认证令牌:


kubectl create serviceaccount "k8sadmin-dhorse" -n kube-systemkubectl create clusterrolebinding "k8sadmin-dhorse" --clusterrole=cluster-admin --serviceaccount=kube-system:k8sadmin-dhorsesecret=$(kubectl get -n kube-system serviceaccounts "k8sadmin-dhorse" -o jsonpath='{.secrets[0].name}')kubectl get -n kube-system secrets $secret -o jsonpath='{.data.token}' | base64 -d
复制代码


也可以开启日志收集功能,但是首先需要配置 Dhorse 安装目录下的 conf/filebeat-k8s.yml 文件,进行 filebeat 的配置。在集群管理功能里,同时也提供了对命名空间管理的功能,如图 5 所示:



图 5 可以进行创建和删除命名空间。完成以上配置以后,接下来我们就可以创建项目、创建版本、创建环境,然后进行发布了。

创建项目

在“项目管理”菜单下,可以添加项目操作,这里以添加一个 Springboot 项目为例进行说明,如图 6、图 8 所示:



图 6 其中,代码仓库地址是对应代码仓库定义的项目路径或项目编号,比如 GitLab 项目编号如图 7 所示:



图 7



图 8


添加项目完成以后,就可以在“发布管理”菜单下看到分支信息,如图 9 所示:



图 9


可以看出,在分支列表里可以分别对每个分支进行“构建版本”操作,我们以对 master 分支进行构建版本为例,如图 10 所示:



图 10


然后进入“版本列表”菜单,可以看到产生了一条版本记录,同时也可以查看该版本的构建日志,如图 11 所示:



图 11


接下来,我们就可以创建一个环境,然后使用刚才构建的版本发布该环境。

发布项目

进入“环境管理”菜单,然后进行添加环境操作,如图 12 所示:



图 12


保存之后,“环境管理”列表里会出现一条环境记录,如果 13 所示:



图 13


接着,我们可以在“操作”列点击“部署”按钮,如图 14 所示:



图 14


选择刚才的版本,并点击“确认部署”。此时,进入到“部署历史”菜单下,可以看到产生了一条部署记录,同时可以查看该记录的日志,如图 15 所示:



图 15


等待部署完成以后,进入“副本管理”菜单,可以看到 Pod 的相关信息,如果 16 所示:



图 16


至此,一个完整的发布流程完成了。那么该如何访问 hello 项目的服务呢?

访问服务

集群内访问

假如 hello 项目里有一个/hello 的 api。


  1. 访问单个副本的服务通过“副本 IP:端口”进行访问,该方式在副本或 Node 节点都可以访问通,如图 16 所示的 IP,访问示例:http://10.32.1.153:8080/hello

  2. 通过负载均衡 DHorse 在部署项目以后,会默认为项目启动一个 ClusterIP 的 service 服务,可以通过“项目名称.命名空间:服务端口”来访问服务,该访问只能在副本里进行,示例如:http://hello.default:8080/hello 集群内服务之间的调用,推荐该方式。

集群外访问

两种方式:


  1. 通过创建 NodePort 或 LoadBalancer,目前 DHorse 不支持,如果需要可以手动在集群内创建;

  2. 打通集群内外的网络,该方式需要运维的支持,如:通过静态路由转发等。集群内外网络互通以后,在集群外部就可以直接访问副本的 IP 了。


如需更多了解,请访问DHorse

用户头像

tiandizhiguai

关注

我笑世人看不穿 2018-11-08 加入

还未添加个人简介

评论

发布
暂无评论
DHorse系列文章之操作手册_微服务_tiandizhiguai_InfoQ写作社区