本文从启动、配置、扩容、伸缩、存储等方面介绍如何使用开普勒云平台。前端
kplcloud是一个基于Kubernetes的轻量级PaaS平台,经过可视化的界面对应用进行管理,下降应用容器化的对度,从而减小应用容器化的时间成本。java
Kplcloud已在宜信服务于宜人财富等多个团队,稳定运行了近两年,目前平台已在生产环境跑着上百个应用,近千个容器。git
登录能够分为三种,分别是LDAP登录、邮箱密码登录、三方受权登录,我们没有注册功能。下面对这三种登录方式进行讲解。github
LDAP与邮箱登录大同小异,只须要简单的配置便可。web
在app.cfg文件找到[server]的login_type参数,设置为 ldap而且找到[ldap]块docker
[ldap] ldap_host = 127.0.0.1 ldap_port = 389 ldap_base = DC=yourdomain,DC=corp ldap_sseSSL = false ldap_bindDN = ldap_bind_password = ldap_user_filter = (userPrincipalName=%s) ldap_group_filter = (&(objectCategory=Group)) ldap_attr = name;mail [server] ;auth_login login_type = ldap
输入你家LDAP的相关信息便可。后端
不要设置auth_login
,应该把它注释掉。tomcat
在app.cfg文件找到[server]的login_type参数,设置为 email服务器
[server] ;auth_login login_type = ldap
不要设置auth_login
,应该把它注释掉。网络
经过Github受权登录须要的app.cfg将[server]下的 auth_login参数设置为github
[server]
块下的client_id和client_secret
上面设置好以后, 就可使用github受权登录的方式进入平台了,默认分配的空间及权限能够在app.cfg文件下的[server]
块下的default_namespace和default_role_id
配置。
[server] client_id = balabalabalbabiubiubiu client_secret = balabalabalbabiubiubiu auth_login = github default_namespace = default-app default_role_id = 4C
工做台是咱们进入以后看到的第一个页面,主要列出如下一些信息
监控只是简易的集群网络,内存、CPU及语言,详情的监控能够从grafana查看。
本模块主要是对一些应用发布的状况进行一些统计,如应用失败的应用的次数中断及回滚的次数,点击应用名称能够看应用详情。
在建立应用以前,首先咱们要作的是在你的git项目上将Dockerfile文件提交上去,而且生成一个Tag或releases版本。
Dockerfile 参考
FROM openjdk:latest COPY xxxx.jar /opt/app WORKDIR /opt/app CMD ["java", "xxx.jar"]
进入建立应用页面,填写基本信息
^[a-z0-9]([-a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*$
填写详细信息
kplcloud/hello
填写完后会自动获取项目的tags列表提交成功以后会显示以下页面,管理就能够在审核页面进行部署。
(建立Golang/Python/NodeJs/静态应用的步骤请参看开源文档。)
应用服务启动能够在多个地方进行调整,如下介绍两种方案,Dockerfile 和 平台详情页调整
Dockerfile CMD启动方式
看一下简单的例子:
FROM hub.kpaas.nsini.com/app/hello:v0.0.3 CMD ["/go/bin/hello"]
启动命令写在CMD这个后面,若是后面有多个参数能够以逗号隔开例如: CMD ["static-web", "-path", "app", "-port", ":8080"]
平台详情页调整
打开应用详情页:
在详情这一选卡上找到“命令,参数”,点右边的编辑icon,弹出对话框进行填写:
填定启动的命令和参数,参数用逗号隔开。点提交服务会自动重启动。
注意:在平台详情页修改的命令会覆盖掉Dockerfile 下的CMD命令。
日志采集配置
在应用详情页中间有一个叫做“日志采集”的模块
点击右边的“添加”按钮,在弹出的对话框中选择日志的路径及正则规则
提交后服务会自动重启动。
日志采集
若是配置了上面采集器,那么它会向服务所在的Pod注入一个Filebeat采集器对应用服务的业务日志进行采集。把采集到的日志入到kafka集群,而后logstash进行消息处理及格式化。
处理完后入到ES集群,最终咱们就能够经过kibana查询到咱们的业务日志了。
固然kafka、logstash、es得您本身去搭建。
若您可把这几个服务跑在Kubernetes能够参考我给您生成的yaml 直接apply 进去就能跑。
模版配置
生成filebeat会用到两个模版,一个是容器的模版FilebeatContainer,另外一个是ConfigMap的模版FilebeatConfigMap,您可根据本身的需求调整相应的模版文件。
构建应用的流程是经过建立应用提交一些信息进行处理
以上是构建应用的后端流程,而前端就变得比较简单了。只须要在应用详情页点击"Build"按钮,在弹出的对话框中选择相应用的tags版本并提交就好了,以下图:
查询构建日志
点击详情页的build日志选项卡,会显示最近的构建记录,点击左侧相应的版本能够查看该版本的构建状况,也能够对正在松建的应用进行中断,以下图:
服务模式切换比较麻烦,须要您的Kubernetes支持,目前咱们使用的是istio的方案,也就是说您须要在你的kubernetes上安装istio的相关服务,而且在咱们的模版管理将istio所须要的几个模版配置上。才能开启此功能。
若是您没有安装Istio,可跳过此章。
依赖
在"模版管理"菜单找到Gateway、VritualService、InitContainer、IstioProxy这几个模版,根据本身环境的状况进行调整。
使用过Istio的同窗应该都知道,要实现Istio所提供的相关功能须要在Pods里注入两个容器,一个是proxy_init,另外一个是proxyv2
流程
下图是咱们架构流量进入到咱们容器所图:
一键切换
以下图,在应用详情页面选择“模式”按钮,在弹出的对话框中选择"Service Mesh"选项目,后点击提交后Pods会自动重起。
你须要在app.cfg文件开起ServiceMesh功能
[server] service_mesh = true
扩容是对Pods的使用资源进行扩容,例如最大使用的CPU及内存资源。
在应用的详情页面,在右上角找到“扩容”按钮,并点开。
在弹出的对话框中拖动CPU和内存,可对其设置一个基础值及一个最大值,以下图:
选择好相应的值后点击“保存”按钮后,会重起该应用的全部POD。重启后的POD可以使用的最大CPU及内存资源就是您刚刚设置的值。
所对应用以deployment的yaml参数:
requests: limits: cpu: 1 memory: 128Mi requests: cpu: 500m memory: 64Mi
伸缩是对该应用所启动的pods数量进行一个控制。
一样进入应用的详情页页,在右上角找到“伸缩”按钮并点开。
在弹出来的对话框中选择启动的POD数量,以下图:
提交以后若数量大于以前的数量,则会启动缺乏的POD数量,若小于以前的值,将会逐步减小应用的POD。
目前给的最大值是8个pod,资源可以使用的内存是16G,若您的应用超过咱们所设定的最大值。想办法优化吧,64核128G内存都不够用,这种级别的应用不适合用Docker。
这种级别的应用最好是拆了吧。
本平台是经过storageclass来动态建立PV。也就是说我们依赖于storageclass,若是您的Kubernetes不支持相应的存储试,将没法很是方便的进行挂载。
目前暂不支持挂载多个PVC,或许之后会更新吧。
这里演示的是用的NFS进行演示,实际使用时可根据本身的需求配置相应的provisioner,其余配置是同样的不须要调整,只须要在“模版管理” 调整StorageClass和PersistentVolumeClaim模版。
建立持久化存储卷声明
在菜单找到“配置与存储”->"持久化存储卷声明"。
选择应用的空间,并点击“建立”按钮
在弹出的对话框中会有几个选项目:
^[a-z0-9]([-a-z0-9])?([a-z0-9]([-a-z0-9]*[a-z0-9])?)*$)
挂载到应用目录
当存储卷建立好以后就能够在应用进行挂载了。
一样的进入应用详情页面,找到“持久化存储”选项卡,如图:
点击“添加”按钮,在弹出来的对话框加输入相关信息:
填写好路径及选择好存储卷后点击提交,改应用的全部POD的逐步重启动。
挂载完成以后能够看到所挂载的相关信息:
最终生成的yaml结果:
volumes: - name: soup-hello-pvc persistentVolumeClaim: claimName: test-data containers: - volumeMounts: - name: "soup-hello-pvc" mountPath: "/soupzhang"
若是配置了邮箱,用户提交审核以后会给管理员发送邮件,邮件里带有审核地址。
或者您也能够在应用列表里找到未审核的应用进入。
提交的基础信息
生成的kubernetes yaml
代码库中的Dockerfile文件
驳回
若是管理员以为提交的有问题,能够进行驳回,驳回填定理由会发送至提交者的邮箱。
若没有啥问题,能够点击“开始部署”按钮。
开始部署以后应用会自动在jenkins上建立一个job,并自动进行build。
在咱们项目维护过程当中,可能会遇到须要修改服务器时间,平台的工具集功能就能够知足您的需求了~
在这须要注意,此功能依赖faketime,请在宿主机编译faketime扩展。路径在 /usr/local/lib/libfaketime.so.1
调整服务时间(菜单栏:工具集->调整时间)
在项目列表中筛选您要修改的项目,点击 修改时间,确认以后会重启服务生效。
做者:宜人金科-财富技术部-创新团队
来源:宜信技术学院