Kubefwd——Openshift/K8S 本地开发的福音

Kubefwd

小志:“kubefwd 本地开发的福音啊,本地环境直接连接svc。”
当小志推荐这个工具的时候,我正在Kubecon大会的现场,听着Kubernetes近一年的各种成就和各种新特性。我无法看到微信另一头小志的表情,也许平静,也许跟我现在一样激动。
kubefwd,这是第一次听到这个工具,“本地环境直接连接svc”,openshift的port-fowrward命令就能做到,没什么也不起的吧。
我回复道:“openshift的port-forward,再加个自动更新本地hosts文件”。
小志发来了kubefwd请求流向图。

image.png

服务api与服务auth提供的都是80端口,但是它们能够同时被本地访问,这是port-forward无法做到的!我意识到这个工具很不简单,刚才的想法太草率了。
我马上回复:“我刚才理解得不对,它可以做到一个port对应多个service!”
此刻的心情其实已经非常激动了,因为意识到kubefwd这个工具也许解决了困扰我多天的问题。

近一周一直在脑中徘徊的是徐磊老师介绍微软的TFS时的演示:开发人员本地修改代码,可以在开发环境独立的namespace下实时查看代码生效的结果,当时我为之震惊。因为之前想的各种流程,终究是需要开发者提交代码才能进行下一步测试的。
“创建一个环境,让开发者能够以最方便的形式进行开发,这是最直接地提高效率的方式。”
于是我开始寻找一种在openshift/k8s环境下的开源解决方案,测试了openshift-connector,虽然它跟TFS中的代码同步功能有些类似,但是一直没有测试成功,这个插件的关注者很少。后来找了redhat的朋友确认,他告诉我这个项目也许已经停止了。我继续寻找,但终究没有新的收获。

我跟一起参会的小伙伴说:“对我而言,也许这次大会的内容,都不及知道了这个工具。”

晚上回到家,我赶紧做测试。

  • 第一个要验证的就是kubefwd对Openshift是否支持,毕竟我们开发测试环境,甚至有些项目的生产环境是在Openshift上。
  • 第二个要验证的就是kubefwd是否支持在windows系统上运行,毕竟研发几乎都在windows上做开发。

测试结论

  • kubefwd对Openshift完全支持
  • kubefwd在windows系统上运行正常

我为什么会如此激动?或者说使用kubefwd带来什么样的改变?

  • 开发人员无需在本地模拟一套完整的线上应用环境就能够测试与其他应用的集成效果
  • 本地开发应用也能使用远端集群下的中间件,同时使用的配置与集群中的应用完成一样,无需专门做本地访问的配置管理
  • 开发人员无需提交代码就能与其他应用集成,查看代码生效后的效果
  • 开发环境变成了相对稳定的集成环境,每个开发者本地版本不会互相影响,降低多个应用同时开发的相互干扰

对于kubefwd如何使用,看它的帮助说明就够了,非常简单。

Usage:
  kubefwd services [flags]

Aliases:
  services, svcs, svc

Examples:
  kubefwd svc -n the-project
  kubefwd svc -n the-project -l env=dev,component=api
  kubefwd svc -n default -l "app in (ws, api)"
  kubefwd svc -n default -n the-project
  kubefwd svc -n default -d internal.example.com
  kubefwd svc -n the-project -x prod-cluster


Flags:
  -x, --context strings     specify a context to override the current context
  -d, --domain string       Append a pseudo domain name to generated host names.
      --exitonfailure       Exit(1) on failure. Useful for forcing a container restart.
  -h, --help                help for services
  -c, --kubeconfig string   absolute path to a kubectl config fil (default "/Users/cjimti/.kube/config")
  -n, --namespace strings   Specify a namespace. Specify multiple namespaces by duplicating this argument.
  -l, --selector string     Selector (label query) to filter on; supports '=', '==', and '!=' (e.g. -l key1=value1,key2=value2).
  -v, --verbose             Verbose output.

项目地址

kubefwd https://github.com/txn2/kubefwd

补充

小志还分享了个方便端口转发的应用,“oc port-forward的图形化应用”。地址:https://kube-forwarder.pixelpoint.io/

进一步发现了一个新的工具kt-connect ,一个可以让开发环境访问K8S集群下应用的工具,可以直接访问容器。

$ # 检查依赖环境
$ ktctl check
$ # 1. 安装sshuttle
$ sudo pip install sshuttle -i https://pypi.douban.com/simple
$ # openshift中,先创建一个project
$ oc new-project ktconnect
$ oc adm policy add-scc-to-user anyuid -z default #因为默认kt-connect-daemon需要root用户启动
$ sudo ktctl -n ktconnect connect 

11:15AM INF Connect Start At 67595
11:15AM INF Client address 192.168.0.138
11:15AM INF deploy shadow deployment kt-connect-daemon-yuiaq in namespace ktconnect

11:15AM INF pod label: kt=kt-connect-daemon-yuiaq
11:15AM INF pod: kt-connect-daemon-yuiaq-665dd6bc55-tzb74 is running,but not ready
11:15AM INF pod: kt-connect-daemon-yuiaq-665dd6bc55-tzb74 is running,but not ready
11:15AM INF pod: kt-connect-daemon-yuiaq-665dd6bc55-tzb74 is running,but not ready
11:15AM INF pod: kt-connect-daemon-yuiaq-665dd6bc55-tzb74 is running,but not ready
11:15AM INF Shadow pod: kt-connect-daemon-yuiaq-665dd6bc55-tzb74 is ready.
11:15AM INF Fail to get pod cidr from node.Spec.PODCIDR, try to get with pod sample
Forwarding from 127.0.0.1:2222 -> 22
Forwarding from [::1]:2222 -> 22
11:16AM INF port-forward start at pid: 67596
Handling connection for 2222
Warning: Permanently added '[127.0.0.1]:2222' (ECDSA) to the list of known hosts.
client: Connected.
11:16AM INF vpn(sshuttle) start at pid: 67597
11:16AM INF KT proxy start successful
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,640评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,254评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,011评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,755评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,774评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,610评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,352评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,257评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,717评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,894评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,021评论 1 350
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,735评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,354评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,936评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,054评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,224评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,974评论 2 355