Kubernetes是一个开源项目,用于自动化容器的部署,扩展和管理。它已迅速成为运行生产工作负载的标准,周围的社区也很棒!
但是在Kubernetes中进行开发提出了一些挑战。典型的开发工作流程如下:编写代码,构建Docker映像,将其推送到注册表,重新部署,验证更改并重复。这种流程不仅速度缓慢,而且使我们无法从Go工具的标准功能中受益,例如快速增量构建,热重载器或调试器。
OkOkteto(https://github.com/okteto/okteto)创建就是为了解决这个问题。在此博客文章上,我们将向您展示Okteto如何改善Go开发人员在Kubernetes中的开发人员体验。在Kubernetes中直接开发应用程序时,您将能够充分利用诸如go build依赖项缓存,IDE调试器(VS Code,GoLand,Atom…)之类的工具。
步骤1:部署Go Sample App
通过执行以下命令来获取Go Sample App的本地版本:
$ git clone [https://github.com/okteto/go-getting-started](https://github.com/okteto/go-getting-started)
$ cd go-getting-started
该k8s.yml文件包含用于部署Go Sample App的Kubernetes清单。通过执行以下命令运行应用程序:
$ kubectl apply -f k8s.yml
deployment.apps “hello-world” created
service “hello-world” created
这很酷!您键入了一个命令,您的应用程序的开发版本仅运行。
步骤2:安装Okteto CLI
该Okteto CLI(https://github.com/okteto/okteto)是一个开源项目,可以让你直接在Kubernetes开发应用程序,同时充分利用当地知名的模具。我们将使用它来加快我们的开发周期,而不是使用基于构建docker映像和重新部署容器的典型开发工作流程。
通过运行以下命令来安装Okteto CLI:
MacOS / Linux
$ curl [https://get.okteto.com](https://get.okteto.com/) -sSfL | sh
Windows
$ wget [https://downloads.okteto.com/cli/okteto-Windows-x86_64](https://downloads.okteto.com/cli/okteto-Windows-x86_64) -OutFile c:\windows\system32\okteto.exe
步骤3:在Kubernetes中启动您的开发环境
部署Go Sample Application后,运行以下命令:
$ okteto up
✓ Development environment activated
✓ Files synchronized
Namespace: pchico83
Name: hello-world
Forward: 8080 -> 8080
2345 -> 2345
okteto>
该okteto up命令将启动Kubernetes开发环境,这意味着:
- Go Sample App容器已使用docker image更新okteto/golang:1。该图像包含构建,测试,调试和运行Go Sample App所需的开发工具。
- 一个文件同步服务创建,让您改变了最新的本地文件系统和应用程序之间的豆荚。
- 附加了一个卷以将Go缓存和软件包持久保存在Kubernetes开发环境中。
- 容器端口8080(应用程序)和2345(调试器)被转发到localhost。
- 在您的Kubernetes开发环境中启动了一个远程Shell。就像在本地计算机中一样,构建,测试和运行您的应用程序。
所有这些(以及更多)都可以通过okteto.yml 进行自定义。
要运行该应用程序,请在远程shell程序中执行:
okteto> go run main.go
Starting hello-world server...
第一次运行该应用程序时,Go会下载您的依赖项并编译您的应用程序。等待此过程完成并通过在本地shell程序中运行以下命令来测试您的应用程序:
$ curl localhost:8080
Hello world!
步骤4:直接在Kubernetes中进行开发
main.go在您喜欢的本地IDE中打开文件,然后在第17行上将响应消息修改为来自集群的Hello world!。保存您的更改。
func helloServer(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, “Hello world from the cluster!”)
}
Okteto将您的更改同步到Kubernetes中的开发环境。go run main.go通过按取消从远程Shell 执行ctrl + c。重新运行您的应用程序:
okteto> go run main.go
Starting hello-world server...
从本地外壳调用您的应用程序以验证更改:
$ curl localhost:8080
Hello world from the cluster!
您的代码更改立即应用于Kubernetes。无需提交,构建或推送!
步骤5:直接在Kubernetes中进行调试
Okteto使您可以直接从自己喜欢的IDE调试应用程序。让我们看一下它在VS Code中的工作原理,VS Code是Go开发中最受欢迎的IDE之一。
go run main.go通过按取消从远程Shell 执行ctrl + c。在调试模式下重新运行您的应用程序:
okteto> dlv debug --headless --listen=:2345 --log --api-version=2
API server listening at: [::]:2345
2019–10–17T14:39:24Z info layer=debugger launching process with args: [/okteto/__debug_bin]
打开Debug扩展并运行Connect to okteto启动配置:
{
“version”: “0.2.0”,
“configurations”: [
{
“name”: “Connect to okteto”,
“type”: “go”,
“request”: “attach”,
“mode”: “remote”,
“remotePath”: “/okteto”,
“port”: 2345,
“host”: “127.0.0.1”
}
]
}
在main.go第17行上添加一个断点。通过从本地Shell执行来调用您的应用程序:
$ curl localhost:8080
执行将在您的断点处停止。然后,您可以检查请求,可用变量等。
结论
Kubernetes有潜力成为一个强大的开发平台,提供可复制的,资源高效的和类似生产的开发环境。我们已经向您展示了如何使用Okteto创建开发工作流程,该工作流程还使您可以在直接在Kubernetes中直接开发应用程序时利用增量构建,热重载器或调试器等功能。
翻译自:https://medium.com/okteto/how-to-develop-go-applications-in-kubernetes-8d733391564c
推荐阅读:手机刚买来第一次充电
-
口红种草,姐妹们捂好钱包,这些口红竟然好用到
我相信全网的广大女性,没有人不羡慕李佳琦!他真的是我们女人的天敌,没有一个女生可以逃得过李佳琦的手掌心!魔鬼一般的存在,实名羡慕他拥有的口红啊啊啊啊~口红绝对是...
2019-10-09 -
最不挑人的绝美口红,巨美巨显白!谁涂谁好看
AV8D上午好鸭今天有没有元气满满呢昨天买到了早就想买又难买的口红肉肉今天嗨到能在办公室蹦迪OMG!Amazing!!“觉得口红不够日”又到了看着自己一堆口红却...
2019-10-09 -
爱敷面膜的注意了!这四个小技巧,让你护肤效果
现在大家爱美意识提高了,不管男女老少都特别注重保养。除了身体健康的注重,皮肤的保养也少不了,没事儿去个美容院做做护理什么的。敷面膜是很多人都喜欢做的一件事情,妹...
2019-10-09 -
你为什么喜欢购买日本护肤品?真的好用吗?有哪
现在很多女生都在使用日货或者是韩货,无论是不是化妆品、护肤品还是什么物件,大家对日本的东西越来越感冒,并不是说日本的东西用起来好,适合自己的才是最好的随着网红时...
2019-10-09 -
小S女儿许曦文,厌世脸杂志照广受好评,超模都
近日,小S13岁的女儿Elly许曦文与JORYA携手,拍摄的杂志照片曝光。许曦文看起来从容自信,表现力十足,真的不愧是“宝岛超模”S的女儿纤长的身材比例,优雅的...
2019-10-09 -
痤疮究竟是怎么来的?这些生活细节不可忽视
大家说的“痘痘”即是医学上的“痤疮”。由毛囊及皮脂腺阻塞形成,是一种损容性的慢性皮肤疾病,严重的痤疮会有发炎反应,在皮肤上呈现红色颗粒状疹子,并可能在症状消失后...
2019-10-09 -
涂了口红咋吃饭?不掉色,很健康的方法在这里
口红对于一个女人来说有多重要,相信不用说大家也知道。我们每次涂完之后,我们整个人都能“容光焕发”,所以,每个精致女生的包包里,可都是有一只口红的。在涂口红的时候...
2019-10-09 -
奔三奔四的女人,尽量别做着3款卷发,不减龄反
女人上了年纪,最忌讳的就是清汤寡水,年轻的时候毕竟胶原蛋白丰厚,有不少男生都喜欢文静温柔。但是等你到了奔三奔四的年纪,如果依旧那么寡淡无味,就难怪别人会感到无趣...
2019-10-09