ChatGPT 幫我跑了一個完整的 DevOps 流水線,離了個大譜...
大家好,我是米開朗基楊。
上篇文章給大家介紹了??如何將 N 個 ChatGPT 賬號接入微信,今天就來給大家演示一下如何利用 ChatGPT 幫我工作,讓自己有更多的時間摸魚!
上篇文章還沒看的趕緊去看??
我將 9 個 ChatGPT 賬號接入微信,我現(xiàn)在整個人都麻了...
作為一名云原生搬磚工程師,我經(jīng)常需要給各路大神演示各種 Demo 環(huán)境,奈何自己太菜,總是會遇到各種各樣的小問題,有時候需要花上半天時間來解決問題,太折磨人啦!我太菜啦!
于是乎我冒出個想法,ChatGPT 不是上知天文下知地理啥都會嘛,想必云原生也不在話下嘍。我想讓他給我整個 Gin 應(yīng)用,然后通過 GitOps 的方式把它部署到 Kubernetes 集群中,這點(diǎn)小小的需求對他來說應(yīng)該不過分吧??
不試不知道,以試嚇一跳。ChatGPT 給出的方案質(zhì)量高的嚇人啊,挑不出啥毛病來,大家可以一起來鑒別一下。
首先需要說明一下規(guī)則:ChatGPT 只是一個語言模型,他只會說話,所以我只能向他描述我的需求,然后他給我提供詳細(xì)的方案和編排文件,最后我再到實(shí)際環(huán)境中去驗(yàn)證。
編寫代碼,構(gòu)建鏡像
第一步當(dāng)然是編寫應(yīng)用代碼,并構(gòu)建 Docker 鏡像推送到鏡像倉庫中。
我提出的需求如下:
?你好!
我需要你的幫助來編寫一個模擬的 Gin 應(yīng)用。
這個應(yīng)用將會有一個路由 “/homepage”,并會在頁面中顯示一條消息,消息內(nèi)容是 “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 的架構(gòu)圖。
OpenFunction 的架構(gòu)圖可以從這個鏈接獲取:https://openfunction.dev/openfunction-0.5-architecture.svg
請注意:這張架構(gòu)圖的格式是 svg
請確保我的 Gin 應(yīng)用綁定了所有主機(jī)端口(例如,0.0.0.0)。
Gin 應(yīng)用必須使用容器化,并使用我自己的用戶名 “yangchuansheng” 構(gòu)建鏡像推送到 Docker Hub。容器鏡像體積越小越好。
你能幫我構(gòu)建所有需要的編排文件嗎?
謝謝!
這是 ChatGPT 的回答:


我按照 ChatGPT 的指示操作完了之后開始運(yùn)行容器進(jìn)行測試:
$?docker?run?-d?-p?8080:8080?yangchuansheng/my-gin-app
完美!??

部署到 Kubernetes
接下來我需要將應(yīng)用部署到 Kubernetes 中,并將編排文件上傳到 GitHub 倉庫。
對話開始:
?非常棒,謝謝。
現(xiàn)在我需要將這個應(yīng)用部署到我的 Kubernetes 集群中。
請生成所需的 YAML 編排文件,這些編排文件將會生成一個多副本的 Deployment 來部署我的 Gin 應(yīng)用。
Deployment 會使用我上面提到的 DockerHub 用戶名拉取“my-gin-app”鏡像。
此外還需要生成兩個 YAML 文件,一個是內(nèi)部的 ClusterIP Service,另一個是暴露到外部的 Ingress,以便將我的應(yīng)用向外界公開(您可以留空“hostname”字段)。請確保路由指向“/homepage”路徑。
此外,還需要你告訴我如何將這些 YAML 文件推送到我的 GitHub 倉庫(我的 GitHub 用戶名是“yangchuansheng”)。
謝謝!
這里面有幾個難點(diǎn)需要 ChatGPT 理解:
- 我想部署一個多副本的 Deployment;
- 我想看看 ChatGPT 能不能記住我之前提到的用戶名。
下面是 ChatGPT 的回復(fù):

我選擇使用 KubeSphere 來驗(yàn)證該方案的正確性,畢竟鼠標(biāo)點(diǎn)兩下就完事了。
首先新建一個工作負(fù)載,將 Deployment 的內(nèi)容粘貼進(jìn)去:

成功運(yùn)行了 3 個副本:

再創(chuàng)建一個服務(wù):

最后再創(chuàng)建一個應(yīng)用路由:

ChatGPT 給出的 Ingress 編排文件是有問題的,還是之前的舊語法(因?yàn)樗麖幕ヂ?lián)網(wǎng)上獲取的知識只停留在 2021 年),這也不能怪他,我自己改下吧。
打開頁面驗(yàn)證:

完美!!!
使用 GitOps 進(jìn)行部署
最后一個挑戰(zhàn):讓他給我提供一個 ArgoCD 的持續(xù)部署方案。
對話開始:
?太??????了,謝謝!
最后,我希望我的應(yīng)用能夠適用于 GitOps 架構(gòu)。
我目前使用的是 ArgoCD,請幫助我生成用于 ArgoCD 應(yīng)用部署的 “Application” 編排文件。
我希望這個 GitOps 應(yīng)用會自動同步,并使用 CreateNamespace=true 選項(xiàng)自動創(chuàng)建名為“gin-app-k8s”的命名空間。
我的 git 倉庫名稱為“gin-app-k8s”,請使用我的 GitHub 用戶名。
該倉庫是扁平的,沒有子目錄,因此無需訪問特定路徑。
請注意:我使用的是“kubectl”命令行,而不是“argo”命令行。
這里也有幾個難點(diǎn):
- 我希望 ChatGPT 能夠理解我在使用 ArgoCD,并給出相應(yīng)的 Application 編排文件;
- 我要看看 ChatGPT 能不能記住我之前說過的 DockerHub 用戶名和 GitHub 用戶名。
來看看ChatGPT 的回復(fù):

他給出的編排文件還是有點(diǎn)小問題,我給他提供反饋,告訴他哪里有問題,最終在我的引導(dǎo)下給出了正確的編排文件:
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
創(chuàng)建 Application 成功:

查看應(yīng)用路由:

訪問應(yīng)用 URL:

完全沒問題!離了個大譜!
自己不用寫一行代碼,就實(shí)現(xiàn)了一個半自動的 CI/CD 流水線。
我是該高興呢?還是該恐懼呢?
總結(jié)
ChatGPT 表現(xiàn)出來的能力確實(shí)令人震驚,他就像一個潘朵拉魔盒,你永遠(yuǎn)不知道他還能做什么,只能不斷去嘗試,讓人又期待又害怕呢,渣男!
從今天起我就是云原生摸魚專家,工作上的事情麻煩找 ChatGPT,謝謝??


你可能還喜歡
點(diǎn)擊下方圖片即可閱讀
我將 9 個 ChatGPT 賬號接入微信,我現(xiàn)在整個人都麻了...
AI 對話模型被網(wǎng)友玩壞了!這次還可以運(yùn)行 Docker 容器...
為什么 APISIX Ingress 是比 Traefik 更好的選擇?
K8s 最強(qiáng) CNI Cilium 網(wǎng)絡(luò)故障排查指南

云原生是一種信仰? ??


點(diǎn)擊 ?"閱讀原文"? 獲取 更好的閱讀體驗(yàn)!
發(fā)現(xiàn)朋友圈變“安靜”了嗎?
