KT Connnect 轻量级云原生测试环境治理工具
简介
KT Connect ( Kubernetes Developer Tool ) 是轻量级的面向 Kubernetes 用户的开发测试环境治理辅助工具。其核心是通过建立本地到集群以及集群到本地的双向通道,从而提升在持续交付生命周期中开发环节的效率问题以及开发测试环境的复用问题:
使用场景
场景一:本地与远端服务联调
在这种场景下,开发者只要直接使用 ktctl connect 打通本地到集群的网络即可,就可以直接在本地通过 PodIP/ClusterIP/DNS 地址访问集群中的服务。
场景二:集群内服务于联调本地
在这个场景下,我们希望集群中所有对服务 C 的访问能够请求到本地正在开发的 C’。因此开发者可以通过 ktctl exhcnage 命令,在集群内部署一个 Shadow 容器已接管所有原本对 C 实例的请求,再通过 Shadow 容器将请求转发到本地。并在退出命令式恢复集群中 C 的实例状态。
场景三:集群内服务于联调本地(共享模式)
mesh 与 exchange 的最大区别在于,exchange 会完全替换原有的应用实例。mesh 命令创建代理容器,但是会保留原应用容器,代理容器会动态生成 version 标签,以便用于可以通过 Istio 流量规则将特定的流量转发到本地,同时保证环境正常链路始终可用。在这种场景下,在确保开发测试环境稳定的同时,基于 Istio 的流量规则,我们可以把部分流量转到本地,从而实现在共享的开发测试环境中的联调能力。
场景四:更复杂的联调场景
在微服务模式下,服务将往往会存在大量的相互依赖。通过 connect/exchange/mesh 的组合,可以方便的实现在团队协作下的开发与联调。通过这种方式,开发人员可以极大的提升本地的开发效率,并且可以快速的实现服务与服务之间的集成与测试。
Dashboard 可视化
Cli 工具从客户端的角度为研发人员提供了相对便捷的方式能够让研发能够在本地快速完成联调测试,而站在测试环境管理的维度上,我们需要了解测试环境的状态,例如,当前有多少服务是被 Exchange 到了开发人员本地,服务一共 Mesh 了多少个本地版本? 这部分内容在 KT Connect 中通过一个集中式的 Dashboard 提供相关的能力支撑,我们可以清楚的了解当前服务下运行了容器实例,同时是否有本地环境接入,从而可以更好的支撑多人协作的场景。
安装 dashboard
设置 RBAC 权限,以使 Dashboard 组件能够获取和监听 Kubernetes 集群的资源变化
rbac-setup.yaml
apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRole metadata: name: ktadmin rules: - apiGroups: [""] resources: - namespaces - nodes - nodes/proxy - services - endpoints - pods verbs: ["get", "list", "watch"] - apiGroups: - extensions resources: - ingresses verbs: ["get", "list", "watch"] - nonResourceURLs: ["/metrics"] verbs: ["get"] --- apiVersion: v1 kind: ServiceAccount metadata: name: ktadmin namespace: default --- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding metadata: name: ktadmin roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: ktadmin subjects: - kind: ServiceAccount name: ktadmin namespace: default
创建服务和 Deployment 实例
dashboard.yaml
apiVersion: v1 kind: Service metadata: name: kt-dashboard spec: ports: - port: 80 targetPort: 80 selector: app: kt-dashboard type: NodePort --- apiVersion: extensions/v1beta1 kind: Deployment metadata: labels: app: kt-dashboard name: kt-dashboard spec: replicas: 1 selector: matchLabels: app: kt-dashboard template: metadata: labels: app: kt-dashboard spec: serviceAccount: ktadmin containers: - image: registry.cn-shanghai.aliyuncs.com/kube-helm/kt-dashboard:stable imagePullPolicy: Always name: dashboard ports: - containerPort: 80 - image: registry.cn-shanghai.aliyuncs.com/kube-helm/kt-controller:stable imagePullPolicy: Always name: controller ports: - containerPort: 8000
通过 kubectl 部署
kubectl apply -f rbac-setup.yaml kubectl apply -f dashboard.yaml
可以通过 NodePort 进行访问,或者通过 port-forward 在本地访问:
$ kubectl port-forward deployments/kt-dashboard 8000:80 Forwarding from 127.0.0.1:8000 -> 80 Forwarding from [::1]:8000 -> 80
创建 guest 权限,开发本地配置 kubeConfig
apiVersion: v1 kind: ServiceAccount metadata: name: guest namespace: spt-dev --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: guest:guest roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: guest subjects: - kind: ServiceAccount name: guest namespace: spt-dev --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: annotations: rbac.authorization.kubernetes.io/autoupdate: "true" name: guest rules: - apiGroups: - "" resources: - pods/portforward verbs: - create - apiGroups: - "" resources: - configmaps - endpoints - persistentvolumeclaims - pods - replicationcontrollers - replicationcontrollers/scale - serviceaccounts - services verbs: - get - list - watch - apiGroups: - "" resources: - bindings - events - limitranges - namespaces/status - pods/log - pods/exec - pods/status - replicationcontrollers/status - resourcequotas - resourcequotas/status verbs: - get - list - watch - apiGroups: - "" resources: - namespaces verbs: - get - list - watch - apiGroups: - "" resources: - pods/exec verbs: - create - apiGroups: - apps resources: - daemonsets - deployments - deployments/scale - replicasets - replicasets/scale - statefulsets - statefulsets/scale verbs: - get - list - watch - apiGroups: - autoscaling resources: - horizontalpodautoscalers verbs: - get - list - watch - apiGroups: - batch resources: - cronjobs - jobs verbs: - get - list - watch - apiGroups: - extensions resources: - daemonsets - deployments - deployments/scale - ingresses - networkpolicies - replicasets - replicasets/scale - replicationcontrollers/scale verbs: - get - list - watch - apiGroups: - policy resources: - poddisruptionbudgets verbs: - get - list - watch - apiGroups: - networking.k8s.io resources: - networkpolicies verbs: - get - list - watch
下载和安装客户端
二进制包
Mac:
- Darwin amd64
- Darwin 386
Linux:
- Linux Amd64
- Linux 386
Mac 用户
安装 sshuttle
brew install sshuttle
下载并安装 KT
$ curl -OL https://rdc-incubators.oss-cn-beijing.aliyuncs.com/stable/ktctl_darwin_amd64.tar.gz $ tar -xzvf ktctl_darwin_amd64.tar.gz $ mv ktctl_darwin_amd64 /usr/local/bin/ktctl $ ktctl -h
Linux 用户
安装 sshuttle
pip install sshuttle
下载并安装 KT
$ curl -OL https://rdc-incubators.oss-cn-beijing.aliyuncs.com/stable/ktctl_linux_amd64.tar.gz $ tar -xzvf ktctl_linux_amd64.tar.gz $ mv ktctl_linux_amd64 /usr/local/bin/ktctl $ ktctl -h
windows 用户
Windows10 上使用 Linux 子系统(WSL)
https://www.cnblogs.com/xiaoliangge/p/9124089.html
KT: A simple kubernetes development tools
作者:fish2018
链接:https://ld246.com/article/1573205665774
来源:链滴
协议:CC BY-SA 4.0 https://creativecommons.org/licenses/by-sa/4.0/
KT Connnect 轻量级云原生测试环境治理工具相关推荐
- 云原生开发环境初探 | CSDN 博文精选
作者 | 倚天码农 责编 | 屠敏 出品 | CSDN(ID:CSDNnews) 此前,我们分享了云原生的引申含义(https://blog.csdn.net/weixin_38748858/arti ...
- 波司登云原生微服务治理探索
作者:山猎,珑乘 01 背景 Aliware 波司登创始于1976年,专注于羽绒服的研发.设计.制作,是全球知名的羽绒服生产商.波司登用一系列世人瞩目的辉煌成绩证明了自己的实力:连续26年全国销量领先 ...
- Spinnaker:云原生多云环境持续部署的未来这样玩!
Gartner的报告指出,到2020年,将有50%的传统老旧应用会以云原生的方式被改造,到2022年,云原生和容器化的普及率将达到75%. 随着2020 KubeCon线上大会的结束,我们发现企业拥抱 ...
- 干货 | 基于开源体系的云原生微服务治理实践与探索
作者简介 CH3CHO,携程高级研发经理,负责微服务.网关等中间件产品的研发工作,关注云原生.微服务等技术领域. 一.携程微服务产品的发展历程 携程微服务产品起步于2013年.最初,公司基于开源项目S ...
- 基于开源体系的云原生微服务治理实践与探索
作者:董艺荃|携程服务框架负责人 携程微服务产品的发展历程 携程微服务产品起步于 2013 年.最初,公司基于开源项目 ServiceStack 进行二次开发,推出 .Net 平台下的微服务框架 CS ...
- CODING —— 云原生时代的研发工具领跑者
本文为 CODING 创始人兼 CEO 张海龙在腾讯云 CIF 工程效能峰会上所做的分享. 文末可前往峰会官网,观看回放并下载 PPT. 大家上午好,很高兴能有机会与大家分享 CODING 最近的一些 ...
- 会员测试环境治理之路
01 背景 会员业务是公司的重要业务之一,为广大会员用户承载最基础的服务保障,随着会员数的破亿,业务复杂度也是呈现几何倍的增加,如何高效的支持会员业务的测试,也成为了会员测试团队不得不面对客观挑 ...
- 在 KubeSphere 中使用 Rook 构建云原生存储环境
作者:尹珉 Rook 介绍 Rook 是一个开源的云原生存储编排器,为各种存储解决方案提供平台.框架和支持,以便与云原生环境进行原生集成. Rook 将分布式存储系统转变为自管理.自扩展.自修复的存储 ...
- 专访 KubeVela 核心团队:如何简化云原生复杂环境下的应用交付和管理
01 背景 Aliware 12 月 9 日,在 2021 年 KubeCon 云原生技术峰会上,CNCF 开源项目 KubeVela 宣布推出了 1.2 版本. KubeVela 是一个简单易用且高 ...
最新文章
- centos mysql权限不够_centos执行文件时权限不够怎么解决_网站服务器运行维护,centos...
- 如何在多台web服务器上共享session?
- fis 详细介绍(mac版) - 12-26没有弄完 - 暂停
- java日期的运用(DateUtils工具类)
- URI,URL与URN的区别
- 互联网控制协议ICMP
- Mysql 性能优化——必胜之道
- 【pandas教程】索引操作
- matlab临界转速教学,转子动力学求解转子临界转速与固有频率详解.ppt
- petalinux 设备树驱动GPIOLED
- 聚焦新生代 戮默科技创造正向价值
- java桌面应用开发利器JavaFx
- 360 安全入门 · 课程测试
- 哎我就不信了,Java IO有这么难吗?
- ByVal和ByRef有什么区别
- mac pro 键帽 方向键 上下键 拆卸
- 电脑录麦克风声音软件的选择
- 移动端系统:scroll,fixed
- 本科毕业论文的引言怎么写?
- Codeforces Round #376 (Div. 2) D. 80-th Level Archeology —— 差分法 + 线段扫描法