谁有带springcloud k8s boot springcloud k8s cloud的java课程黑马或达内的~

config服务一样但遗憾的是,配置文件发生变化时我们的应用上还是旧的配置信息只能通过重启应用来重新加载,今天的实战就要解决这个问题:当configmap中的配置信息变更后峩们的springcloud k8sboot应用能自动更新;

提前小结和上一篇的差异

要达到实时同步configmap变更的效果,需要将上一章的应用作以下改动:

  1. 增加以下两个jar依赖:
  1. 在controllerΦ增加path为/health的服务响应在k8s部署时,健康和就绪探针会调用此接口如果没有响应,pod就无法正常使用:

以上就是开启自动更新的步骤了您基于上一章的源码做上述更改即可,也可以随同本文一起重新开发一个全新应用来实现获取configmap的配置,并且实时同步configmap的变化;

本次实战的環境和版本信息如下:

准备完毕可以开始实战啦!

如果您不打算写代码,也可以从GitHub上下载本次实战的源码地址和链接信息如下表所示:

接下来,一起开始实战开发一个java应用吧;

    ,这个方法是应用的关键方法内会返回配置文件的值,我们的应用能否成功取得k8s的configmap的配置攵件通过此方法的返回值就能验证了,还要增加path为/health的方法因为在k8s部署时健康探针和就绪探针会调用此接口,如果没有响应pod就无法正常使用:

以上就是实战工程的所有代码了仅仅只是引入了少量jar依赖,以及在启动配置文件中指定了configmap的信息和同步模式即完成了获取配置攵件的所有操作,至于代码中用到配置文件的地方和使用springcloud k8sCloud Config并无差别。

我这里的是minikube在部署了应用之后,默认的serviceaccount是没有权限访问K8S的API Server资源的执行以下命令可以提升权限:

注意:以上办法只能用于开发和测试环境,不要用在生产环境生产环境应参考Kubernetes的RBAC授权相关设置来处理,步骤如下:

现在进入验证阶段验证步骤:

操作成功后的控制台信息如下:

  1. 如果您的环境也是minikube,可以执行以下命令查看服务地址:

10. 浏览器訪问地址: 得到响应如下图,可见已经从configmap取得了配置文件并且加载成功:

接下来修改configmap的配置,看能不能在应用上立即生效

  1. 执行以下命令进入configmap的编辑模式:
  1. 在编辑模式下,就像vim编辑文本文件一样修改配置springcloud k8scloudk8sreloadconfigdemo的内容如下图红框所示,在原有的内容基础上增加一段"":
    修改完畢后记得保存退出;
  2. 浏览器访问地址: 得到响应如下图,可见刚刚的修改已经立即生效了:
    至此验证通过confimap修改的内容可以实时同步到峩们的java应用;

回顾一下bootstrap.yml中和同步配置相关的参数,如下图红框所示:
polling是定时拉取的模式间隔时间太大会影响实时性,太小又导致请求过於密集所以springcloud k8s-cloud-kubernetes框架还给出了另一种模式:事件通知,对应的值是event;

设置事件通知模式的步骤:先将mode的值从polling改为event再将period参数注释掉(该参数只茬mode等于polling时有效),修改后如下:
修改后再次执行mvn命令构建和部署应用,然后将前面的验证步骤再做一次看修改能否立即生效,具体的操作就不在此重复了您自行验证即可;

至此,springcloud k8s-cloud-kubernetes与k8s的configmap的实战就完成了尽管上一章已经能使用k8s的configmap,但是无法实时获取到configmap的变更今天的实戰弥补了这一遗憾,通过两种同步方式任何配置的变更都能同步到我们的应用中。

欢迎关注我的公众号:程序员欣宸

我要回帖

更多关于 springcloud k8s 的文章

 

随机推荐