ChatGPT 帮我跑了一个完整的 DevOps 流水线,离了个大谱...
大家好,我是米开朗基杨。
上篇文章给大家介绍了👉如何将 N 个 ChatGPT 账号接入微信,今天就来给大家演示一下如何利用 ChatGPT 帮我工作,让自己有更多的时间摸鱼!
上篇文章还没看的赶紧去看👇
![e045504ed194cf83c2fe48c9989b7577.webp](https://filescdn.proginn.com/a1444ed300371d217382a6be06cec8dd/e045504ed194cf83c2fe48c9989b7577.webp)
我将 9 个 ChatGPT 账号接入微信,我现在整个人都麻了...
作为一名云原生搬砖工程师,我经常需要给各路大神演示各种 Demo 环境,奈何自己太菜,总是会遇到各种各样的小问题,有时候需要花上半天时间来解决问题,太折磨人啦!我太菜啦!
于是乎我冒出个想法,ChatGPT 不是上知天文下知地理啥都会嘛,想必云原生也不在话下喽。我想让他给我整个 Gin 应用,然后通过 GitOps 的方式把它部署到 Kubernetes 集群中,这点小小的需求对他来说应该不过分吧??
不试不知道,以试吓一跳。ChatGPT 给出的方案质量高的吓人啊,挑不出啥毛病来,大家可以一起来鉴别一下。
首先需要说明一下规则:ChatGPT 只是一个语言模型,他只会说话,所以我只能向他描述我的需求,然后他给我提供详细的方案和编排文件,最后我再到实际环境中去验证。
编写代码,构建镜像
第一步当然是编写应用代码,并构建 Docker 镜像推送到镜像仓库中。
我提出的需求如下:
❝你好!
我需要你的帮助来编写一个模拟的 Gin 应用。
这个应用将会有一个路由 “/homepage”,并会在页面中显示一条消息,消息内容是 “OpenFunction is a cloud-native open-source FaaS (Function as a Service) platform aiming to let you focus on your business logic without having to maintain the underlying runtime environment and infrastructure. You can concentrate on developing business-related source code in the form of functions.”。
“/homepage” 页面在“OpenFunction is a cloud-native open-source FaaS (Function as a Service) platform aiming to let you focus on your business logic without having to maintain the underlying runtime environment and infrastructure. You can concentrate on developing business-related source code in the form of functions.”这条消息下面显示一张 OpenFunction 的架构图。
OpenFunction 的架构图可以从这个链接获取:https://openfunction.dev/openfunction-0.5-architecture.svg
请注意:这张架构图的格式是 svg
请确保我的 Gin 应用绑定了所有主机端口(例如,0.0.0.0)。
Gin 应用必须使用容器化,并使用我自己的用户名 “yangchuansheng” 构建镜像推送到 Docker Hub。容器镜像体积越小越好。
你能帮我构建所有需要的编排文件吗?
谢谢!
这是 ChatGPT 的回答:
![928c7f82b099ebbe1e5770059e1d1e6a.webp](https://filescdn.proginn.com/d546efb5ea7692ecd567b76d4221ef46/928c7f82b099ebbe1e5770059e1d1e6a.webp)
![8313be564e8a87891470745e2c8d6d63.webp](https://filescdn.proginn.com/1a2965c8c569d9a2b7892dd81eb21f03/8313be564e8a87891470745e2c8d6d63.webp)
我按照 ChatGPT 的指示操作完了之后开始运行容器进行测试:
$ docker run -d -p 8080:8080 yangchuansheng/my-gin-app
完美!👇
![35b1d2062e08a240d483f2cb81fb2b50.webp](https://filescdn.proginn.com/24a4cf7bdeb8e3d5c7f61d13ff7a5065/35b1d2062e08a240d483f2cb81fb2b50.webp)
部署到 Kubernetes
接下来我需要将应用部署到 Kubernetes 中,并将编排文件上传到 GitHub 仓库。
对话开始:
❝非常棒,谢谢。
现在我需要将这个应用部署到我的 Kubernetes 集群中。
请生成所需的 YAML 编排文件,这些编排文件将会生成一个多副本的 Deployment 来部署我的 Gin 应用。
Deployment 会使用我上面提到的 DockerHub 用户名拉取“my-gin-app”镜像。
此外还需要生成两个 YAML 文件,一个是内部的 ClusterIP Service,另一个是暴露到外部的 Ingress,以便将我的应用向外界公开(您可以留空“hostname”字段)。请确保路由指向“/homepage”路径。
此外,还需要你告诉我如何将这些 YAML 文件推送到我的 GitHub 仓库(我的 GitHub 用户名是“yangchuansheng”)。
谢谢!
这里面有几个难点需要 ChatGPT 理解:
- 我想部署一个多副本的 Deployment;
- 我想看看 ChatGPT 能不能记住我之前提到的用户名。
下面是 ChatGPT 的回复:
![c85f532c06a6af1e9c14e281e578b71d.webp](https://filescdn.proginn.com/485a49f01ad153b8ce3901e6010f0bc5/c85f532c06a6af1e9c14e281e578b71d.webp)
我选择使用 KubeSphere 来验证该方案的正确性,毕竟鼠标点两下就完事了。
首先新建一个工作负载,将 Deployment 的内容粘贴进去:
![bdb25261376d0f2755b3869688d18fbc.webp](https://filescdn.proginn.com/51d9e459284a504d53e5e0ccd8e98c66/bdb25261376d0f2755b3869688d18fbc.webp)
成功运行了 3 个副本:
![7fa84c0a4302a844af5021e5fe8b2298.webp](https://filescdn.proginn.com/b13be03516b5dfe768bd60d71d1d2d09/7fa84c0a4302a844af5021e5fe8b2298.webp)
再创建一个服务:
![ec6fcf08f0e233e13f921863e295ee33.webp](https://filescdn.proginn.com/d7fad12cea24bc8d2a6a2034a220bd81/ec6fcf08f0e233e13f921863e295ee33.webp)
最后再创建一个应用路由:
![dc2853f210778b2cb3a1367e6c88d252.webp](https://filescdn.proginn.com/983739a21787fe9fc2a962d0cf7d4d3a/dc2853f210778b2cb3a1367e6c88d252.webp)
ChatGPT 给出的 Ingress 编排文件是有问题的,还是之前的旧语法(因为他从互联网上获取的知识只停留在 2021 年),这也不能怪他,我自己改下吧。
打开页面验证:
![314d54eebfce7d51e7578264616098a1.webp](https://filescdn.proginn.com/186653a349f16ca062ad1f27db217536/314d54eebfce7d51e7578264616098a1.webp)
完美!!!
使用 GitOps 进行部署
最后一个挑战:让他给我提供一个 ArgoCD 的持续部署方案。
对话开始:
❝太🐂️🍺️了,谢谢!
最后,我希望我的应用能够适用于 GitOps 架构。
我目前使用的是 ArgoCD,请帮助我生成用于 ArgoCD 应用部署的 “Application” 编排文件。
我希望这个 GitOps 应用会自动同步,并使用 CreateNamespace=true 选项自动创建名为“gin-app-k8s”的命名空间。
我的 git 仓库名称为“gin-app-k8s”,请使用我的 GitHub 用户名。
该仓库是扁平的,没有子目录,因此无需访问特定路径。
请注意:我使用的是“kubectl”命令行,而不是“argo”命令行。
这里也有几个难点:
- 我希望 ChatGPT 能够理解我在使用 ArgoCD,并给出相应的 Application 编排文件;
- 我要看看 ChatGPT 能不能记住我之前说过的 DockerHub 用户名和 GitHub 用户名。
来看看ChatGPT 的回复:
![f8d907832c7b0a561955de3c44bc6aaa.webp](https://filescdn.proginn.com/9ac057582857613aac795b6d08869fcf/f8d907832c7b0a561955de3c44bc6aaa.webp)
他给出的编排文件还是有点小问题,我给他提供反馈,告诉他哪里有问题,最终在我的引导下给出了正确的编排文件:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: gin-app-k8s
namespace: argocd
spec:
destination:
namespace: gin-app-k8s
server: https://kubernetes.default.svc
source:
repoURL: https://github.com/yangchuansheng/gin-app-k8s
path: ./
targetRevision: HEAD
project: default
syncPolicy:
automated:
prune: true
selfHeal: true
syncOptions:
- createNamespace=true
创建 Application 成功:
![4ce2db2726fe60d6c2b0ec039266bbb3.webp](https://filescdn.proginn.com/4a8b222db04fc0bfb3cbc61e6084a65b/4ce2db2726fe60d6c2b0ec039266bbb3.webp)
查看应用路由:
![acf07a376d85f7e45ca73da9917f0c28.webp](https://filescdn.proginn.com/579888c39c1dc36c1cc41db57cdaea07/acf07a376d85f7e45ca73da9917f0c28.webp)
访问应用 URL:
![94ad76c1eb1b82323e929a0c66c41f31.webp](https://filescdn.proginn.com/3d8293d0515fa060ff3848385805cf1d/94ad76c1eb1b82323e929a0c66c41f31.webp)
完全没问题!离了个大谱!
自己不用写一行代码,就实现了一个半自动的 CI/CD 流水线。
我是该高兴呢?还是该恐惧呢?
总结
ChatGPT 表现出来的能力确实令人震惊,他就像一个潘朵拉魔盒,你永远不知道他还能做什么,只能不断去尝试,让人又期待又害怕呢,渣男!
从今天起我就是云原生摸鱼专家,工作上的事情麻烦找 ChatGPT,谢谢🙏
你可能还喜欢
点击下方图片即可阅读
我将 9 个 ChatGPT 账号接入微信,我现在整个人都麻了...
![887c8f574a8f7399d58d7b1d49a6906d.webp](https://filescdn.proginn.com/d58e4bea45f8682bbb530eaf3d478ecc/887c8f574a8f7399d58d7b1d49a6906d.webp)
AI 对话模型被网友玩坏了!这次还可以运行 Docker 容器...
![c1c4d4743909b92cba3aa7062db9a83c.webp](https://filescdn.proginn.com/103fccc71543c3a2e1aeb5cc39ec6143/c1c4d4743909b92cba3aa7062db9a83c.webp)
为什么 APISIX Ingress 是比 Traefik 更好的选择?
![fea0a6504bab9d9730189aa9445b160a.webp](https://filescdn.proginn.com/4c79c5a2236a75cba39242fdf85512ef/fea0a6504bab9d9730189aa9445b160a.webp)
![82d5cc0e2ccf2d0584f72513af753ee9.webp](https://filescdn.proginn.com/63fecfc03a6093d875a3be43dac4daaa/82d5cc0e2ccf2d0584f72513af753ee9.webp)
云原生是一种信仰 🤘
![ae8de7b8087d06eb88f2cdb464ee9b9b.webp](https://filescdn.proginn.com/8aa8c0ddf4a1d9adcf640b45e991e643/ae8de7b8087d06eb88f2cdb464ee9b9b.webp)
点击 "阅读原文" 获取 更好的阅读体验!
发现朋友圈变“安静”了吗?
![917fd82987cdc057bdf104c4bc152250.webp](https://filescdn.proginn.com/1831d984e9019cebf179fd20bd436e82/917fd82987cdc057bdf104c4bc152250.webp)