本文从启动、配置、扩容、伸缩、存储等方面介绍如何使用开普勒云平台。
kplcloud是一个基于Kubernetes的轻量级PaaS平台,通过可视化的界面对应用进行管理,降低应用容器化的对度,从而减少应用容器化的时间成本。
Kplcloud已在宜信服务于宜人财富等多个团队,稳定运行了近两年,目前平台已在生产环境跑着上百个应用,近千个容器。
登陆可以分为三种,分别是LDAP登陆、邮箱密码登陆、三方授权登陆,咱们没有注册功能。下面对这三种登陆方式进行讲解。
LDAP与邮箱登陆大同小异,只需要简单的配置即可。
在app.cfg文件找到[server]的login_type参数,设置为 ldap并且找到[ldap]块
[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
,应该把它注释掉。
在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
调整服务时间(菜单栏:工具集->调整时间)
在项目列表中筛选您要修改的项目,点击 修改时间,确认之后会重启服务生效。
作者:宜人金科-财富技术部-创新团队
来源:宜信技术学院