前言

在介绍DHorse的操作之前,先来介绍一下使用k8s发布应用的步骤,以SpringBoot应用为例进行说明。

1.首先从代码仓库下载代码,比如GitLab;

2.接着进行构建,比如使用Maven;

3.如果要使用k8s作为编排,还需要把步骤2产生的包制作成镜像,比如使用Docker;

4.上传步骤3的镜像到远程仓库,比如Harhor;

5.最后,下载镜像并编写Deployment文件部署到云集群,比如k8s;

DHorse简化了以上步骤的流程,使用它部署应用变得更简单,下面详细介绍。

DHorse操作说明

配置代码仓库

如图1所示:

图1

配置镜像仓库

如图2所示:

图2

配置集群

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

图4

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

  1. 小于1.24版本
kubectl create serviceaccount dhorse-admin -n kube-system
kubectl create clusterrolebinding dhorse-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dhorse-admin
secret=$(kubectl get -n kube-system serviceaccounts dhorse-admin -o jsonpath='{.secrets[0].name}')
kubectl get -n kube-system secrets $secret -o jsonpath='{.data.token}' | base64 -d
  1. 大于等于1.24版本
kubectl create serviceaccount dhorse-admin -n kube-system
kubectl create clusterrolebinding dhorse-cluster-admin --clusterrole=cluster-admin --serviceaccount=kube-system:dhorse-admin
kubectl create token dhorse-admin -n kube-system --duration 867240h

创建应用

在“应用管理”菜单下,以添加SpringBoot应用为例(https://jihulab.com/tiandizhiguai/hello-springboot),如图6、图7所示:

图6

图7

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

图8

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

图9

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

图10

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

图11

特别注意,第一次构建版本时由于Maven需要下载依赖的包,速度会比较慢,需要耐心等待。接下来,就可以创建一个环境,然后使用刚才构建的版本发布该环境。

发布服务

进入“环境管理”菜单,然后进行添加环境操作,如图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

  1. 通过负载均衡

DHorse在部署应用以后,会为每个应用启动一个ClusterIP的service服务,那么就可以在副本里通过“应用名称-环境标识.命名空间:服务端口”的形式来访问其他应用的服务,访问示例如:http://hello-qa.default:8080/hello ,集群内服务之间的调用,推荐该方式。

集群外访问

两种方式:

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

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

使用DHorse发布SpringBoot项目到K8S的更多相关文章

  1. windows jenkins 发布 springboot项目脚本

    windows  jenkins 发布 springboot项目脚本 1.关闭现有程序 (按端口关闭) [与按应用关闭 二选一] @echo off for /f "tokens=1-5&q ...

  2. resin发布spring-boot项目报错“java.lang.NoSuchMethodError: org.jboss.logging.Logger.getMessageLogger”

    说白了还是jar包冲突问题,直接说解决方式: 首先将resin/lib下的validation-api-1.0.0.GA.jar替换成项目中的包validation-api-2.0.1.Final.j ...

  3. 用eclipse发布springboot项目

    使用eclipse打包springboot项目时一直报错 [ERROR] No compiler is provided in this environment. Perhaps you are ru ...

  4. vmware14中安装centos7并使用docker发布spring-boot项目

    1.vmare中centos7安装(同一路由器无线网络下) 1.1选择桥接模式 1.2修改配置文件 vi /etc/sysconfig/network-scripts/ifcfg-ens33(这里不一 ...

  5. maven 发布springboot项目

    1.把Spring Boot打包成JAR的形式,需要在pom.xml文件对应以下代码 <build> <finalName>ljl</finalName> //打包 ...

  6. Jenkins安装配置 远程发布SpringBoot项目

    环境要求: Java : 1.8.0_161. Maven :http://maven.apache.org/download.cgi 3.6.1 下载完解压,配置环境变量:vim /etc/prof ...

  7. 外部tomcat发布springboot项目步骤和异常处理:java.lang.NoClassDefFoundError: javax/el/ELManager

  8. SpringBoot项目打成jar包后上传文件到服务器 目录与jar包同级问题

    看标题好像很简单的样子,但是针对使用jar包发布SpringBoot项目就不一样了.当你使用tomcat发布项目的时候,上传文件存放会变得非常简单,因为你可以随意操作项目路径下的资源.但是当你使用Sp ...

  9. K8S 部署 SpringBoot 项目(一篇够用)

    现在比较多的互联网公司都在尝试将微服务迁到云上,这样的能够通过一些成熟的云容器管理平台更为方便地管理微服务集群,从而提高微服务的稳定性,同时也能较好地提升团队开发效率. 但是迁云存在一定的技术难点,今 ...

  10. springboot项目发布到独立的tomcat中运行&打成jar包运行

    springboot的打包方式依赖于插件:(下面插件打出的包与普通的包目录结构有区别) <plugin> <groupId>org.springframework.boot&l ...

随机推荐

  1. 如何操作(增、删、改、查)常见的 HTML 元素呢?(包含原生 js 和 JQuery 语法对照)

    一.通用的操作示例 1.查询 根据 id 查询(结果为单个对象) // 原生 js 写法 var elementobj = document.getElementById("elementi ...

  2. vue 脚手架文件结构及加载过程浅谈

    1. 初始化脚手架 1.1  全局安装 @vue/cli  npm install -g @vue/cli 1.2 切换到创建项目的目录,执行 vue create projectname 1.3 选 ...

  3. java与es8实战之六:用JSON创建请求对象(比builder pattern更加直观简洁)

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本文是<java与es8实战>系 ...

  4. 快手根据关键词取商品列表 API 返回值说明

    item_search-根据关键词取商品列表 注册开通 ks.item_search 公共参数 名称 类型 必须 描述 key String 是 调用key(必须以GET方式拼接在URL中) secr ...

  5. textarea自动适应高度

    textarea自动适应高度,兼容IE/Firefox.chrome 代码:<textarea name="textarea" id="textarea" ...

  6. 物理服务器不重启分配raid

    一.MegaCli 命令的安装及使用 目录 一.MegaCli 命令的安装及使用 1.下载rpm包 2.安装 3.安装完,就会在/opt/下创建个MegaRAID目录,文件都在里面 4.添加软连接 5 ...

  7. 简单聊一聊SpringBoot的约定优于配置

    Spring Boot的约定优于配置 对于今天聊的SpringBoot的约定优于配置,我打算从三个方面去展开: 1.什么是约定优于配置 1> 约定优于配置是一种软件设计的范式,其核心思想:使用一 ...

  8. Web攻防--JNDI注入--Log4j漏洞--Fastjson反序列化漏洞

    JNDI注入 什么是JNDI JNDI全称为 Java Naming and Directory Interface(Java命名和目录接口),是一组应用程序接口,为开发人员查找和访问各种资源提供了统 ...

  9. 升讯威在线客服系统的并发高性能数据处理技术:PLINQ并行查询技术

    我在业余时间开发维护了一款免费开源的升讯威在线客服系统,也收获了许多用户.对我来说,只要能获得用户的认可,就是我最大的动力. 最近客服系统成功经受住了客户现场组织的压力测试,获得了客户的认可. 客户组 ...

  10. 【uniapp】【微信小程序】wxml-to-canvas

    真是搞吐了,研究了整整两天,困死我了 本来使用生成二维码插件好好的,插件页也支持导出二维码图片,可是领导说要带上文件的名称,那就涉及html转图片了,当然也可以改二维码插件的源码,不过源码做了混淆,看 ...