当前位置: 首页 > news >正文

网站建设公司南昌网站刷链接怎么做的

网站建设公司南昌,网站刷链接怎么做的,wordpress no follow,php js做网站k8s webhook实例#xff0c;java springboot程序实现 对Pod创建请求添加边车容器 #xff0c;模拟istio实现日志文件清理 大纲 背景与原理实现流程开发部署my-docker-demo-sp-user服务模拟业务项目开发部署my-sidecar服务模拟边车程序开发部署服务my-docker-demo-k8s-opera…k8s webhook实例java springboot程序实现 对Pod创建请求添加边车容器 模拟istio实现日志文件清理 大纲 背景与原理实现流程开发部署my-docker-demo-sp-user服务模拟业务项目开发部署my-sidecar服务模拟边车程序开发部署服务my-docker-demo-k8s-operator 提供webhook功能创建MutatingWebhookConfiguration 动态准入配置测试边车注入效果 背景与原理 背景 程序容器运行期间会大量产生日志文件久而久之会消耗大量的硬盘空间除非程序重新部署 如果手动的去删除比较麻烦如果把程序文件夹挂载到主机需要手动去配置磁盘卷挂载比较麻烦原理 由于业务程序镜像统一把日志写入到/data/service/logs, 所以在开发一个程序专门定时清理/data/service/logs文件夹下的文件利用k8s webhook 把这个定时程序作为边车挂载到业务程序中 利用边车的方式还可以实现很多对业务增强的功能涉及项目 my-docker-demo-sp-user 模拟业务项目my-sidecar 模拟边车程序my-docker-demo-k8s-operator 模拟webhook 实现流程 step1 开发部署my-docker-demo-sp-user服务模拟业务项目 my-docker-demo-sp-user是一个springboot项目主要代码如下 调用一个接口可以创建随机文件模拟生成大量日志文件my-docker-demo-sp-user 部署文件 deploy.yaml 如下 apiVersion: v1 kind: Namespace #类型 指定为Namespace metadata:name: my-sidecar-webhook #namespace的名称 注意只能是英文小写和数字 labels: my-sidecar-inject: enabled #注意 命名空间需要带有namespaceSelector中匹配的标签 ---apiVersion: v1 kind: Pod metadata: name: user-service-podnamespace: my-sidecar-webhook spec: # 容器配置 containers: - image: registry.cn-hangzhou.aliyuncs.com/jimliu/user-service:v5imagePullPolicy: IfNotPresent #Alwaysname: user-serviceports: - containerPort: 5588name: httpprotocol: TCP可以看到这是一个极简的部署文件创建一个命名空间和一个Pod, Pod只有一个容器user-service执行部署文件deploy.yaml 可以看到只有一个容器在运行 测试发现功能正常并且Pod中只有一个容器step2 开发部署my-sidecar服务模拟边车程序 my-sidecar (代码写在my-docker-demo-k8s-operator中打包的时候改了下jar包的名字)是一个springboot项目主要代码如下 有一个接口可以查看/data/service/logs文件夹下所有文件和一个接口和删除文件的接口 后续改造可以将删除功能做成定时任务执行将my-sidecar服务打包制作成镜像推送到私库待用 step3 开发部署服务my-docker-demo-k8s-operator 提供webhook功能 本次实验webhook使用部署在k8s集群外部的方式 webhook可以参考k8s Webhook 使用java springboot实现webhook 学习总结 RequestMapping(/mutate/v3)public String mutateV2(HttpServletRequest req ,HttpServletResponse rep) throws Exception {System.out.println(use mutate java k8s client lib [io.fabric8] );InputStream in req.getInputStream();/*** io.fabric8库 内置AdmissionReview对象* 使用 Serialization.unmarshal把输入流直接转化为对象*/AdmissionReview admissionReview Serialization.unmarshal(in, AdmissionReview.class);System.out.println(Serialization.asJson(admissionReview));/*** 需要给原始的Pod 添加一个边车容器用于管理原始容器中生成的文件* Pod配置文件修改* 1 添加一个空临时存储卷* 2 添加一个边车容器并挂载存储卷* 3 修改原始容器添加挂载存储卷* *///1 准备一个空临时存储卷对象//Volume与EmptyDirVolumeSource对象是 io.fabric8库 内置对象Volume v new Volume();v.setName(data);EmptyDirVolumeSource emptyDir new EmptyDirVolumeSource();v.setEmptyDir(emptyDir);//2 准备一个边车容器并挂载存储卷对象//Container对象是 io.fabric8库 内置对象Container sidecar new Container();sidecar.setImage(registry.cn-hangzhou.aliyuncs.com/jimliu/sidecar:v1); //边车程序镜像sidecar.setImagePullPolicy(IfNotPresent);sidecar.setName(sidecar);ContainerPort cp new ContainerPort();cp.setContainerPort(5533);cp.setName(http);cp.setProtocol(TCP);sidecar.setPorts(Arrays.asList(cp));//VolumeMount对象是 io.fabric8库 内置对象VolumeMount vm new VolumeMount();vm.setMountPath(/data/service/logs); //将容器内部的/data/service/logs 与 data 卷挂载vm.setName(data);sidecar.setVolumeMounts(Arrays.asList(vm));//3 修改原始容器添加挂载存储卷//Pod对象是 io.fabric8库 内置对象Pod pod (Pod) admissionReview.getRequest().getObject();ListContainer containers pod.getSpec().getContainers();for(Container container : containers) {VolumeMount vmt new VolumeMount();vmt.setMountPath(/data/service/logs);vmt.setName(data);container.getVolumeMounts().add(vmt);}//将边车容器加入containers.add(sidecar);/*** 开始制作jsonpatch* 对Pod的修改需要利用jsonpatch 提供的add 和 replace* JsonPatchBean为自定义的一个对象*/ListJsonPatchBean patchs new ArrayList();//添加卷patchs.add(new JsonPatchBean(add,/spec/volumes,Arrays.asList(v)));//替换容器加入边车容器patchs.add(new JsonPatchBean(replace,/spec/containers,containers));/*** patchs转换为字符串* 需要把字符串转换为base64编码*/String patchStr JSON.toJSONString(patchs);System.out.println(patchStr);Base64 base64 new Base64(); String patch new String(base64.encode(patchStr.getBytes()));/*** uid从发送到 Webhook 的 request.uid 中复制而来*/String uid admissionReview.getRequest().getUid();/*** io.fabric8库 内置AdmissionResponse对象*/AdmissionResponse response new AdmissionResponse();response.setAllowed(true);response.setUid(uid);response.setPatch(patch);response.setPatchType(JSONPatch);/*** 填充Response*/admissionReview.setResponse(response);return Serialization.asJson(admissionReview);}/*** 封装一个JsonPatch 操作对象* author liuyijiang*/public static class JsonPatchBean {private String op;private String path;private Object value;public JsonPatchBean(String op,String path,Object value) {this.op op;this.path path;this.value value;}... get set 省略}这里 my-docker-demo-k8s-operator 项目需要使用https方式访问 如何配置证书与域名可参考 k8s Webhook 使用java springboot实现webhook 学习总结 这里默认相关的证书配置k8s master节点的域名映射都完成本地eclipse启动my-docker-demo-k8s-operator 成功 step4 创建MutatingWebhookConfiguration 动态准入配置 MutatingWebhookConfiguration 内容如下 apiVersion: admissionregistration.k8s.io/v1 kind: MutatingWebhookConfiguration metadata: name: my-test-webhook1 #创建MutatingWebhookConfiguration 的名称 webhooks: - admissionReviewVersions: #指定可接受的 AdmissionReview 对象版本 这里支持v1beta1 v1- v1beta1- v1clientConfig:# CA根证书内容caBundle: LS0tLS1CRUdJTiBDR...略# 只支持https请求url: https://webhooktest.liuyijiang.com/mutate/v3 #webhook web服务访问的地址failurePolicy: FailmatchPolicy: Exact #精确匹配name: webhooktest.liuyijiang.com #名称随意但是必须是域名格式namespaceSelector:matchLabels:my-sidecar-inject: enabled #必须匹配标签为my-sidecar-injectenabled的命名空间内的资源才会被拦截rules:- apiGroups:- apiVersions: #匹配的版本- v1operations: #拦截CREATE操作- CREATEresources: #拦截执行类型是pod- podsscope: * #所有命名空间sideEffects: None #配置是否有副作用None表示调用 Webhook 没有副作用timeoutSeconds: 30 #请求超时时间caBundle根证书内容生成 可参考 k8s Webhook 使用java springboot实现webhook 学习总结 部署MutatingWebhookConfiguration step5 测试边车注入效果 再次部署my-docker-demo-sp-user项目 此时 我本机上已接收到k8s webhook请求 查看部署后的Pod 发现出现两个容器边车容器与业务容器实现了共享存储空间并可以清除日志文件后续只需改造为定时任务即可 kubectl -n my-sidecar-webhook get pods -o json
http://www.dnsts.com.cn/news/198140.html

相关文章:

  • 对于做房产做网站的感悟申请新账号 免费
  • 小县城做婚礼网站几何图形生成网站
  • 公司用员工信息做网站域名备案注册公司多少钱起步
  • 什么公司做网站好介绍好的免费网站模板下载
  • 秦皇岛手机网站制作价格wordpress 引号被转义
  • 公司建网站怎么建企业网站架构
  • 天梭手表官方网站建设asp网站视频教程
  • 三亚人才招聘网站商务网站建设与维护(专21春)
  • 制作网站需要多少费用网站标题应该怎么做SEO优化
  • 网站建设大体包含申请个人网站
  • 甘肃建设厅网站二级建造师报名时间网站建设地域名
  • 哪个网站可以做会计题网站标签设置
  • 牛商网网站模板wordpress间文章同步
  • 亚马逊做国际外贸在哪个网站手机报价大全
  • 网站自助建站网站建设第三方平台
  • 针对人群不同,网站做细分这么自己建设网站
  • 网站建设受众网站建设方案基本流程
  • 上海市建设工程定额官方网站城市文明建设网站
  • 网站推广推广怎么用源码建站
  • 莆田专业网站制作成都营销网站
  • 网站大全网址大全广胜达建设集团网站
  • 代理 网站前置审批比较好网站设计公司
  • 网站开发需要什么关键技术市场营销的策划方案
  • 网站空间的存放种类网站建设与管理收获
  • 自己做淘宝客登录网站免费咨询义诊
  • 电子商务网站建设合同签订做淘宝要网站?
  • 广州专业制作网站怎样做网络营销
  • 那些提卡网站是怎么做的福州做网站销售公司
  • 怎么建商城网站吗网页设计实验报告3000
  • 上海公司网站建设pageadmin是免费的吗