ChatGPT 帮我跑了一个完整的 DevOps 流水线,离了个大谱...

news2024/11/17 7:23:59

大家好,我是米开朗基杨。

上篇文章给大家介绍了👉如何将 N 个 ChatGPT 账号接入微信,今天就来给大家演示一下如何利用 ChatGPT 帮我工作,让自己有更多的时间摸鱼!

上篇文章还没看的赶紧去看👇

5e6d4dafcf0e7ea13dbddfb738c22e34.jpeg

我将 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 的回答:

e7d183cf47dc78183f028b7bbf414b39.png f7247c38e5dacaa3d6af0691b34f7b8b.png

我按照 ChatGPT 的指示操作完了之后开始运行容器进行测试:

$ docker run -d -p 8080:8080 yangchuansheng/my-gin-app

完美!👇

f29203f63b31fbec5fd7b81488dd110d.jpeg

部署到 Kubernetes

接下来我需要将应用部署到 Kubernetes 中,并将编排文件上传到 GitHub 仓库。

对话开始:

非常棒,谢谢。

现在我需要将这个应用部署到我的 Kubernetes 集群中。

请生成所需的 YAML 编排文件,这些编排文件将会生成一个多副本的 Deployment 来部署我的 Gin 应用。

Deployment 会使用我上面提到的 DockerHub 用户名拉取“my-gin-app”镜像。

此外还需要生成两个 YAML 文件,一个是内部的 ClusterIP Service,另一个是暴露到外部的 Ingress,以便将我的应用向外界公开(您可以留空“hostname”字段)。请确保路由指向“/homepage”路径。

此外,还需要你告诉我如何将这些 YAML 文件推送到我的 GitHub 仓库(我的 GitHub 用户名是“yangchuansheng”)。

谢谢!

这里面有几个难点需要 ChatGPT 理解:

  1. 我想部署一个多副本的 Deployment;

  2. 我想看看 ChatGPT 能不能记住我之前提到的用户名。

下面是 ChatGPT 的回复:

d3866e9b3434a7375b45b979868a245e.png

我选择使用 KubeSphere 来验证该方案的正确性,毕竟鼠标点两下就完事了。

首先新建一个工作负载,将 Deployment 的内容粘贴进去:

c409856f30df0b4694fb2a440e599793.png

成功运行了 3 个副本:

74606dd4ddc198446cee1b9e3ff2acf8.png

再创建一个服务:

a8a1996ffc3173a11c2e0969802d73c6.png

最后再创建一个应用路由:

b92445b52b92db34fc02c26b692c7ec6.png

ChatGPT 给出的 Ingress 编排文件是有问题的,还是之前的旧语法(因为他从互联网上获取的知识只停留在 2021 年),这也不能怪他,我自己改下吧。

打开页面验证:

494f9e66e4d9ad33cdf1e8e99c6c99ac.jpeg

完美!!!

使用 GitOps 进行部署

最后一个挑战:让他给我提供一个 ArgoCD 的持续部署方案。

对话开始:

太🐂️🍺️了,谢谢!

最后,我希望我的应用能够适用于 GitOps 架构。

我目前使用的是 ArgoCD,请帮助我生成用于 ArgoCD 应用部署的 “Application” 编排文件。

我希望这个 GitOps 应用会自动同步,并使用 CreateNamespace=true 选项自动创建名为“gin-app-k8s”的命名空间。

我的 git 仓库名称为“gin-app-k8s”,请使用我的 GitHub 用户名。

该仓库是扁平的,没有子目录,因此无需访问特定路径。

请注意:我使用的是“kubectl”命令行,而不是“argo”命令行。

这里也有几个难点:

  1. 我希望 ChatGPT 能够理解我在使用 ArgoCD,并给出相应的 Application 编排文件;

  2. 我要看看 ChatGPT 能不能记住我之前说过的 DockerHub 用户名和 GitHub 用户名。

来看看ChatGPT 的回复:

482d67cd77d0edd5c1813123a3870f3e.png

他给出的编排文件还是有点小问题,我给他提供反馈,告诉他哪里有问题,最终在我的引导下给出了正确的编排文件:

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 成功:

f1d75536f5cdd786b9da3e43a329cc51.png

查看应用路由:

df1be247e3db057baca154198e7ab0ce.png

访问应用 URL:

cfc92efcf26f1ee2cfed8cf00170e1b3.png

完全没问题!离了个大谱!

自己不用写一行代码,就实现了一个半自动的 CI/CD 流水线。

我是该高兴呢?还是该恐惧呢?

总结

ChatGPT 表现出来的能力确实令人震惊,他就像一个潘朵拉魔盒,你永远不知道他还能做什么,只能不断去尝试,让人又期待又害怕呢,渣男!

从今天起我就是云原生摸鱼专家,工作上的事情麻烦找 ChatGPT,谢谢🙏

76d9fdb275021315a9d070197dad9785.gif

2ecbb690073ed3567389ac29e68e580b.png

你可能还喜欢

点击下方图片即可阅读

我将 9 个 ChatGPT 账号接入微信,我现在整个人都麻了...

2022-12-10

294d228f3323393c41fc718b426437fa.jpeg

AI 对话模型被网友玩坏了!这次还可以运行 Docker 容器...

2022-12-04

8d1bfea519a616bae2b8e277a8f7c8a9.jpeg

为什么 APISIX Ingress 是比 Traefik 更好的选择?

2022-12-19

9c4fcf06c15b6d4eb4158f003e68394e.jpeg

K8s 最强 CNI Cilium 网络故障排查指南

2022-12-16

a9e40c60a72f451980b5acd42b9374cc.jpeg

e034d838a2f44e1522d21d6847bfefab.gif

云原生是一种信仰 🤘

b01aa8a029968dd5c352281a1f9d5cd6.gif

efa50540a7e4962702674214720bbe68.gif

点击 "阅读原文" 获取更好的阅读体验!

发现朋友圈变“安静”了吗?

3eecd353bee5b8b5e4dd2047a777fff1.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/107360.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot2核心技术(核心功能)- 05、Web开发【5.3 请求参数处理】

5.3、请求参数处理 0、请求映射 1、rest使用与原理 xxxMapping;Rest风格支持(使用HTTP请求方式动词来表示对资源的操作) 以前:/getUser 获取用户 /deleteUser 删除用户 /editUser 修改用户 /saveUser 保存用户 现在&#xff1…

Google 释出开源软件漏洞扫描工具 OSV-Scanner​

开源开发人员可在项目使用 OSV-Scanner,透过比对依赖项目和 OSV 漏洞资料库,找出项目的依赖项目中所存在的漏洞。Google 推出免费工具 OSV-Scanner(https://github.com/google/osv-scanner),供开源开发人员可以更简单地…

docker网络模式 与 搭建nginx

目录 1. docker网络模式 2. 连接容器的三种方法 3. Docker Networking 3.1 创建网络 3.2 查看宿主机中创建的网络 3.3 删除网络 3.3 如何使用网络 4.搭建Nginx 1.准备工作 1.1 拉取镜像 1.2 在宿主机中创建挂载目录 2.准备2个tomcat 容器集群 3.准备 Nginx配置 3.…

ffmpeg 命令的简单使用

ffmpeg命令是在windows端使用的,使用前,需要先下载对应的 exe文件 1.准备环境 访问FFmpeg官网的下载地址(https://www.gyan.dev/ffmpeg/builds/)下载对应的压缩包,解压后即可使用 2.使用 ffmpeg.exe的使用 • 功能 …

利用Clion编译器完成C++的头文件与源文件的映射

1、前言 嘿嘿,众所周知,本人是一名Java后端人员,那么为什么开始搞C/C了咧? 因为Java是在C/C的基础上开发的语言,而且性能也是业界公认的除了机器语言外最好的编程语言,所以我就想啊,如果将Java…

记一次返工

记一次返工 作者:Grey 原文地址: 博客园:记一次返工 CSDN:记一次返工 本文搬运自自己的博客园博客,发布于 2018-05-12 说明 本周我经历了参加工作以来,最大的一次返工,这一周都是茶饭不思…

安全灵活,华为云桌面成为数字化办公最佳搭档

目前云上数字化办公已经是大势所趋,但是如何快速高效地为用户提供便捷高效的工作和生活体验,依然需要大量的技术投入来实现。而华为云桌面就是云上办公的门户与平台,它可以将各种业务系统在云端进行集中管理与调度,通过统一的接口…

二、collection接口

文章目录Collection接口和常用方法(以ArrayList为例)基本使用方法遍历元素方式1(iterator)遍历元素方式2(增强for)练习Collection接口和常用方法(以ArrayList为例) 以ArrayList,其他集合同理使用 基本使用方法 注:集合添加基本数据类型会自动装箱成对…

非零基础自学Golang 第15章 Go命令行工具 15.1 编译相关指令 15.1.2 run

非零基础自学Golang 文章目录非零基础自学Golang第15章 Go命令行工具15.1 编译相关指令15.1.2 run第15章 Go命令行工具 15.1 编译相关指令 15.1.2 run 我们在调试代码时通常会使用go run命令。 该命令会编译执行Go语言源码,不会在当前目录生成可执行文件&#x…

【LeetCode每日一题:1799. N 次操作后的最大分数和~~~记忆化搜索+动态规划+状态压缩+最大公约数】

题目描述 给你 nums ,它是一个大小为 2 * n 的正整数数组。你必须对这个数组执行 n 次操作。 在第 i 次操作时(操作编号从 1 开始),你需要: 选择两个元素 x 和 y 。 获得分数 i * gcd(x, y) 。 将 x 和 y 从 nums 中…

07. 渗透测试之针对网站的信息收集

07. 渗透测试之针对网站的信息收集 01 信息收集简介 什么是信息收集 信息收集(Information Gathering)是指通过各种方式获取所需要的信息。信息收集是信息得以利用的第一步,也是关键的一步。信息收集工作的好坏,会影响整个渗透…

全国各城市疫情达峰进度条感染高峰时间表最新

防疫政策放开之后,多位专家就研判,未来一个多月内全国疫情将达到感染高峰。而近日,一张全国各地疫情进度和最终高峰的预计时间表流传,对各城市首轮感染高峰期进行了预测。那么,全国各城市疫情达峰进度条如何了&#xf…

怎么高效的开发一款成功的产品?Working Backwards

过去的几天一直在回顾整个产品团队过去一年所做的工作,有的工作有亮点,有的工作可以说是乏善可陈。对于不好的,发现其中的一个核心原因就是没有坚持“以终为始”的原则。现将我2021年10月写的一篇公司内部博客再次分享给团队,也分…

Simple Yet Effective Graph Contrastive Learning for Recommendation

1. 摘要 图神经网络(GNN)是一种强大的基于图的推荐系统学习方法。最近,结合对比学习的gnn在处理高度稀疏数据时,在数据增强方案的推荐方面表现出了优异的性能。尽管它们取得了成功,但大多数现有的图对比学习方法要么在用户-项目交互图上执行随…

JAVA零基础小白学习教程之day08_接口多态

day08-JAVAOOP 课程目标 1. 【理解】什么是接口 2. 【掌握】接口的定义格式 3. 【掌握】接口的使用 4. 【理解】接口的成员特点 5. 【理解】类和接口 抽象类和接口之间的关系 6. 【掌握】单继承多实现 7. 【理解】接口之间的多继承 8. 【掌握】接口的案例 9. 【理解】什么是…

一个程序员的新冠防护最佳实践

至今未阳,做了几次抗原检测都是阴性,所以把个人的防护经验给广大程序员朋友分享一下,尤其家里有小孩老人的可以参考一下。 我一天的防护操作 1、午餐 吃午饭时,走楼梯不去挤电梯,而且是在其他人吃完饭后&#xff0c…

Unreal Engine中调试常用方法

目录 常用调试方法 AddOnScreenDebugMessage UE_LOG:在控制台看调试信息 在蓝图中直接调用PrintString 自定义日志分类 声明 定义 简化日志输出的宏 日志格式化输出 常用调试方法 在虚幻引擎中常用的打印日志方法有三种,分别是:UE_…

C++运算符重载,匿名对象

目录 1、加号运算符重载 1.1 通过自己写成员函数,实现两个对象相加属性后返回新的对象 1.2通过成员函数实现加法运算符重载 1.3通过全局函数实现加法运算符重载,运算符重载也可以发生函数重载 1.4总结--对于内置的数据类型的表达式运算符是不可以改变…

Python+Requests实现接口自动化测试

一般对于自动化的理解,有两种方式的自动化。 第一,不需要写代码,完全由工具实现,这种方式的工具一般是公司自己研发的,方便黑盒测试人员使用。这种工具的特点是学习成本低,方便使用,但是通用性…

面向5G C-RAN组网的机房配置标准与模型

【摘 要】当前5G网络建设成本高,投资压力大,基站建设进度受铁塔公司制约;基站机房电费、租赁、服务费用逐年上升,运营维护压力大。面向未来5G建设,通过C-RAN组网,实现BBU集中化部署,可促进降本增效,实现低成本建网。首先分析了C-RAN区所处的网络位置,其次从BBU框多基…