当前位置: 首页 > news >正文

河池网站推广中企动力如何

河池网站推广,中企动力如何,做网站的工作,网站建设包含域名目录 1.前提条件 2.进一步准备 2.1.安装golang 2.2.安装code#xff08;vscode的linux版本#xff09; 2.3.安装kubebuilder 3.开始创建Operator 3.1.什么是operator? 3.2.GV GVK GVR 3.3.创建operator 3.3.1. 生成工程框架 3.3.2.生成api(GVK) …目录 1.前提条件 2.进一步准备 2.1.安装golang 2.2.安装codevscode的linux版本 2.3.安装kubebuilder 3.开始创建Operator 3.1.什么是operator? 3.2.GV GVK GVR 3.3.创建operator 3.3.1. 生成工程框架 3.3.2.生成api(GVK)         3.3.3.实现代码逻辑更新yaml定义 3.3.3.1.实现CR 3.3.3.2.依据代码定义更新yaml 3.3.3.3.实现controller的Reconcile的方法 3.3.4.安装CRD 3.3.5.本地运行 3.3.5.1.运行项目 3.3.5.2.测试 3.3.5.1.1.准备测试CRD的yaml配置 3.3.5.1.2.使用kubectl apply将CRD 实例部署到集群中 3.3.5.3.停止运行 3.3.5.3.1.删除自定义的CRD实例 3.3.5.3.1.停止工程运行 3.3.6.集群运行测试 3.3.6.1.修改Makefile 3.3.6.2.将应用部署到k8s集群上 3.3.6.3.测试 3.3.6.4.停止运行 参考文章 1.前提条件 使用kind搭建本地k8s集群之后会准备好以下内容 本地多节点集群kubectl 客户端命令工具Lens k8s dashboard 可视化客户端工具 图1 查看本地集群信息 图2 本地集群workload信息 2.进一步准备 2.1.安装golang 按教程安装 图3 golang安装后查看go版本 当前安装版本是1.17.2  2.2.安装codevscode的linux版本 这里有两种方式一种是已经在windows上安装了vscode的情况下希望在子系统的Ubuntu中也能使用vscode一种是直接在Ubuntu安装Vscode。 我这里使用的第一种按官方教程安装。如果是第二种请按此方法安装。 # 使用命令打开vscode code . 图4 在WSL2中使用命令打开Vscode WSL2和Win10的文件夹是互通的当然可以直接在Win10中双击打开VScode然后打开对应的项目路径但是这样就有个缺点无法在Terminal中使用一些Unbuntu的命令有时候问题不大但我们操作k8s的客户端是基于kubectl的这个是使用这种方式的最重要原因后续调试需要的必须条件。 2.3.安装kubebuilder 按官方文档安装 os$(go env GOOS) arch$(go env GOARCH)# download kubebuilder and extract it to tmp curl -L https://go.kubebuilder.io/dl/2.2.0/${os}/${arch} | tar -xz -C /tmp/# move to a long-term location and put it on your path # (youll need to set the KUBEBUILDER_ASSETS env var if you put it somewhere else) sudo mv /tmp/kubebuilder_2.2.0_${os}_${arch} /usr/local/kubebuilder export PATH$PATH:/usr/local/kubebuilder/bin校验kubebuilder安装后的情况  图5 检查kubebuilder 3.开始创建Operator 3.1.什么是operator? 我理解就是K8s的核心组件无法满足一些特定需求而提供给开发者一个自定义资源的机会。当然在我参考的文章中也有比较系统的描述。但是从我的角度确实比较易懂的解释就是这样的。既然是自定义资源那我们需要知道一个资源需要有那些要素这样才能定义 3.2.GV GVK GVR GV: Api Group Version API Group 是相关 API 功能的集合每个 Group 拥有一或多个 Versions GVK: Group Version Kind 每个 GV 都包含 N 个 api 类型称之为 Kinds不同 Version 同一个 Kinds 可能不同 GVR: Group Version Resource Resource 是 Kind 的对象标识一般来 Kind 和 Resource 是 1:1 的但是有时候存在 1:n 的关系不过对于 Operator 来说都是 1:1 的关系 我们看个例子 apiVersion: apps/v1 # 这个是 GVG 是 appsV 是 v1 kind: Deployment # 这个就是 Kind metadata: # 这个是当前这种资源的媒体信息你可以理解为detail infoname: local-path-provisionernamespace: local-path-storage... spec: # spec就是Resource了GVR中的R... 3.3.创建operator 3.3.1. 生成工程框架 # 创建工程文件夹 mkdir create-crd-demo # 使用kubebuilder初始化一个项目框架 # --domain: 资源域名结合后续步骤进一步理解一下 # --repo: project是一个golang工程go工程使用package管理这个是go.mod的module信息如果该工程要作为其他工程的导入包那这个就要填可访问的repo路径才可以此处只要不是没意义的就可以了。 kubebuilder init --domain geoff.crd.demo --repo k8s-operator/kubebuilder-crd-demo 图6 使用kubebuilder创建工程框架 具体的工程目录如下 . ├── Dockerfile    # 工程Dockerfile构建镜像的时候使用 ├── Makefile    # 定义make命令集合将一些命令定义成一个function XXX, 然后make XXX执行命令。 ├── PROJECT    # 项目信息 ├── README.md    # 工程说明 ├── config    # 这个是生成CRD所需要的yaml定义使用Kustomize管理 │   ├── default    # 一些默认配置 │   │   ├── kustomization.yaml │   │   ├── manager_auth_proxy_patch.yaml │   │   └── manager_config_patch.yaml │   ├── manager    # 部署CRD所需的 yaml │   │   ├── controller_manager_config.yaml │   │   ├── kustomization.yaml │   │   └── manager.yaml │   ├── prometheus    # Prometheus监控相关配置demo应该用不到 │   │   ├── kustomization.yaml │   │   └── monitor.yaml  │   └── rbac    # 部署所需的 rbac 授权 yaml │       ├── auth_proxy_client_clusterrole.yaml │       ├── auth_proxy_role.yaml │       ├── auth_proxy_role_binding.yaml │       ├── auth_proxy_service.yaml │       ├── kustomization.yaml │       ├── leader_election_role.yaml │       ├── leader_election_role_binding.yaml │       ├── role_binding.yaml │       └── service_account.yaml ├── go.mod    # 项目直接依赖直接 ├── go.sum    # 项目全部依赖直接间接 ├── hack │   └── boilerplate.go.txt └── main.go    # 项目程序启动入口 3.3.2.生成api(GVK)         刚才只是创建一个工程框架一个壳子接下来我们创建一个api # 创建k8s的api (GVK) kubebuilder create api --group apps --version v1 --kind CustomeCrdDemo 图7 使用kubebuilder在生成的工程下继续生成apiGVK相关定义 我们注意到工程目录多出了一些文件夹 . ├── Dockerfile ├── Makefile ├── PROJECT ├── README.md ├── api # 新生成的和apiGVK相关的定义 │   └── v1 │   ├── customecrddemo_types.go # 这里是定义 spec 的地方 │   ├── groupversion_info.go # GV 的定义一般无需修改 │   └── zz_generated.deepcopy.go # 和deepcopy相关的方法 ├── bin │   └── controller-gen # 和go generater tool ├── config │   ├── crd # 自动生成的CRD文件不用修改这里只需要修改了v1中的go文件之后执行make generate会更新当前目录的yaml定义文件 │   │   ├── kustomization.yaml │   │   ├── kustomizeconfig.yaml │   │   └── patches │   │   ├── cainjection_in_customecrddemoes.yaml │   │   └── webhook_in_customecrddemoes.yaml │   ├── default │   │   ├── kustomization.yaml │   │   ├── manager_auth_proxy_patch.yaml │   │   └── manager_config_patch.yaml │   ├── manager │   │   ├── controller_manager_config.yaml │   │   ├── kustomization.yaml │   │   └── manager.yaml │   ├── prometheus │   │   ├── kustomization.yaml │   │   └── monitor.yaml │   ├── rbac │   │   ├── auth_proxy_client_clusterrole.yaml │   │   ├── auth_proxy_role.yaml │   │   ├── auth_proxy_role_binding.yaml │   │   ├── auth_proxy_service.yaml │   │   ├── customecrddemo_editor_role.yaml │   │   ├── customecrddemo_viewer_role.yaml │   │   ├── kustomization.yaml │   │   ├── leader_election_role.yaml │   │   ├── leader_election_role_binding.yaml │   │   ├── role_binding.yaml │   │   └── service_account.yaml │   └── samples # 这里是CRD示例文件可以使用kubectl apply -f用来部署到集群当中 │   └── apps_v1_customecrddemo.yaml ├── controllers │   ├── customecrddemo_controller.go # 在这里实现 CRD controller的逻辑 │   └── suite_test.go # 这里写测试 ├── go.mod ├── go.sum ├── hack │   └── boilerplate.go.txt └── main.go 3.3.3.实现代码逻辑更新yaml定义 3.3.3.1.实现CR 到上面部分为止我们已经通过kubebuilder生成了CRD所需的项目框架接下来我们进行自定义开发此时我们使用VScode来开发吧 # 在当前目录下打开VScode code . 我们随便增加CRD的spec字段增加ResourceName、AdditionalInfo。这字段会在之后生成的yaml文件中的spec字段体现。 //…… // CustomeCrdDemoSpec defines the desired state of CustomeCrdDemo type CustomeCrdDemoSpec struct {// INSERT ADDITIONAL SPEC FIELDS - desired state of cluster// Important: Run make to regenerate code after modifying this file// Foo is an example field of CustomeCrdDemo. Edit customecrddemo_types.go to remove/update// Foo string json:foo,omitempty// 资源名称ResouresName string json:resourceName,omitempty// 附加信息AdditionalInfo string json:additionalInfo,omitempty } //…… 图8 修改xxx_type.go中关于CRD spec字段的定义 3.3.3.2.依据代码定义更新yaml 执行命令更新yaml这里我们直接在VScode的Terminal中执行就可以了不需要在WSL2上执行命令方便开发。 # 重新生成yaml文件 make manifests generate 更新yamlstruct上字段备注成为了description是有意义的 # 新生成的yaml文件config/crd/bases/apps.geoff.crd.demo_customecrddemoes.yaml …… spec:description: CustomeCrdDemoSpec defines the desired state of CustomeCrdDemoproperties:additionalInfo:description: 附加信息type: stringresourceName:description: 资源名称type: string …… 其中yaml的路径和生成项目时设置的--domain是有关系的。 3.3.3.3.实现controller的Reconcile的方法 不做复杂的实现只增加日志打印。  // For more details, check Reconcile and its Result here: // - https://pkg.go.dev/sigs.k8s.io/controller-runtimev0.11.2/pkg/reconcile func (r *CustomeCrdDemoReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {log : log.FromContext(ctx)// TODO(user): your logic herelog.Info( Create a new CRD instance )return ctrl.Result{}, nil } 图9 实现controller的Reconcile的方法 3.3.4.安装CRD # 往k8s安装CRD的定义 make install 图11 直接在Vscode的Terminal执行make install 图12 在集群中能看到install后已经存在了CRD的定义 3.3.5.本地运行 3.3.5.1.运行项目 # 运行工程应用 make run 图12 运行工程项目在install之后 运行之后项目成功跑起来了没有报错就算是成功了。 3.3.5.2.测试 3.3.5.1.1.准备测试CRD的yaml配置 我们自己定义的struct有两个字段一个是resourceName、AdditionalInfo我们要实现一个CRD的实例dem哦目前项目工程路径config/samples/xxx.yaml下有个自动生成的CRD模板我们按照定义需要给这两个字段配置信息。 apiVersion: apps.geoff.crd.demo/v1 kind: CustomeCrdDemo metadata:name: customecrddemo-sample spec:# TODO(user): Add fields hereresourceName: my-crd-instance-1AdditionalInfo: 这是我测试的第一个CRD资源实例 图13 准备CRD测试实例的yaml需要实现spec的字段 3.3.5.1.2.使用kubectl apply将CRD 实例部署到集群中 # 使用kubectl apply一个CRD实例 # 其中项目目录下config/samples/xxx.yaml是make generate mainfests生成的 kubectl apply -f ./config/samples/apps_v1_customecrddemo.yaml 图14 部署CRD实例demo 图15 集群上已经能看到刚刚部署的CRD实例demo 图16 项目工程CRD operator日志打印了operator实现成功 3.3.5.3.停止运行 3.3.5.3.1.删除自定义的CRD实例 # 删除了刚刚的CRD demo实例 kubectl delete -f config/samples/ 图17 删除自定义的CRD实例demo 3.3.5.3.1.停止工程运行 直接在Vscode的Terminal中执行CtrlC即可停止项目运行 图18 将本地运行的项目停止 3.3.6.集群运行测试 上一章节我们看到可以在本地run了project直接看到当CRD被部署后直接触发了我们controller中实现的日志。实际上我们开发好了之后这个operator application是要部署到k8s集群上的主要controller的实现逻辑这样CRD才能起作用。如何操作其实工程的README.md也有说明的可以先看看。 3.3.6.1.修改Makefile # 本地集群的名称 KUBE_CLUSTER k8s-local-dev ……# 增加一个function将本地的image上传到Kind的容器中 .PHONY: kind-load kind-load: ## load the local image to the kind clusterkind load docker-image ${IMG} --name ${KUBE_CLUSTER}…… 图17 增加kind-load,可以将image上传到kind创建的集群容器中 3.3.6.2.将应用部署到k8s集群上 以下是部署到集群的步骤构建镜像、上传到集群容器中、部署 其中IMG是一个可以自行设置镜像名的变量此处为k8s-crd-demo:1.0。 按如下命令执行后即可在k8s集群中看到部署的CRD controller应用。 # 构建镜像有时候会失败可能是网络问题多试几遍IMG需要指定不然后面部署还是有问题 make docker-build IMGk8s-crd-demo:1.0 # local镜像上传到Kind创建的k8s集群所在的所有node中如果本地是 make kind-load IMGk8s-crd-demo:1.0 # 部署controller make deploy IMGk8s-crd-demo:1.0 在这个过程中bin/目录存在一些二进制的工具包可以先删除是之前make run时下载的有可能会报错。 图18 bin目录应该要提前删除kustomize工具 图19 make deploy IMGxxx将controller部署到k8s上 图20 将operator这个应用application部署到k8s集群 3.3.6.3.测试 同上面3.3.5.2直接测试即可 3.3.6.4.停止运行 # undeploy controller make undeploy # 卸载CRD make uninstall 参考文章 如何在 Ubuntu 20.04 上安装 Go-腾讯云开发者社区-腾讯云 开始通过 WSL 使用 VS Code | Microsoft Learn 快速入门 - Kubebuilder 中文文档 3. KubeBuilder 简明教程 - Mohuishou
文章转载自:
http://www.morning.yrjxr.cn.gov.cn.yrjxr.cn
http://www.morning.bhrkx.cn.gov.cn.bhrkx.cn
http://www.morning.rfyff.cn.gov.cn.rfyff.cn
http://www.morning.yrqb.cn.gov.cn.yrqb.cn
http://www.morning.ghphp.cn.gov.cn.ghphp.cn
http://www.morning.stph.cn.gov.cn.stph.cn
http://www.morning.ktmbp.cn.gov.cn.ktmbp.cn
http://www.morning.bpwdc.cn.gov.cn.bpwdc.cn
http://www.morning.ygmw.cn.gov.cn.ygmw.cn
http://www.morning.kbbmj.cn.gov.cn.kbbmj.cn
http://www.morning.rddlz.cn.gov.cn.rddlz.cn
http://www.morning.qjldz.cn.gov.cn.qjldz.cn
http://www.morning.kkzwn.cn.gov.cn.kkzwn.cn
http://www.morning.jkcpl.cn.gov.cn.jkcpl.cn
http://www.morning.mtbth.cn.gov.cn.mtbth.cn
http://www.morning.nyqxy.cn.gov.cn.nyqxy.cn
http://www.morning.qlkjh.cn.gov.cn.qlkjh.cn
http://www.morning.zglrl.cn.gov.cn.zglrl.cn
http://www.morning.rkfh.cn.gov.cn.rkfh.cn
http://www.morning.yjmns.cn.gov.cn.yjmns.cn
http://www.morning.bpmfq.cn.gov.cn.bpmfq.cn
http://www.morning.jcxqc.cn.gov.cn.jcxqc.cn
http://www.morning.hmhdn.cn.gov.cn.hmhdn.cn
http://www.morning.wrkcw.cn.gov.cn.wrkcw.cn
http://www.morning.mbmh.cn.gov.cn.mbmh.cn
http://www.morning.kwblwbl.cn.gov.cn.kwblwbl.cn
http://www.morning.ftldl.cn.gov.cn.ftldl.cn
http://www.morning.ywxln.cn.gov.cn.ywxln.cn
http://www.morning.hhqjf.cn.gov.cn.hhqjf.cn
http://www.morning.mhfbf.cn.gov.cn.mhfbf.cn
http://www.morning.wpjst.cn.gov.cn.wpjst.cn
http://www.morning.rtbj.cn.gov.cn.rtbj.cn
http://www.morning.rtlrz.cn.gov.cn.rtlrz.cn
http://www.morning.yjxfj.cn.gov.cn.yjxfj.cn
http://www.morning.jzxqj.cn.gov.cn.jzxqj.cn
http://www.morning.bpmnz.cn.gov.cn.bpmnz.cn
http://www.morning.psdsk.cn.gov.cn.psdsk.cn
http://www.morning.jwtwf.cn.gov.cn.jwtwf.cn
http://www.morning.dddcfr.cn.gov.cn.dddcfr.cn
http://www.morning.ssmhn.cn.gov.cn.ssmhn.cn
http://www.morning.nqpy.cn.gov.cn.nqpy.cn
http://www.morning.wdshp.cn.gov.cn.wdshp.cn
http://www.morning.gkjnz.cn.gov.cn.gkjnz.cn
http://www.morning.zffps.cn.gov.cn.zffps.cn
http://www.morning.lkpzx.cn.gov.cn.lkpzx.cn
http://www.morning.tkgxg.cn.gov.cn.tkgxg.cn
http://www.morning.mrccd.cn.gov.cn.mrccd.cn
http://www.morning.tqsnd.cn.gov.cn.tqsnd.cn
http://www.morning.tlbdy.cn.gov.cn.tlbdy.cn
http://www.morning.rhsg.cn.gov.cn.rhsg.cn
http://www.morning.qbjrf.cn.gov.cn.qbjrf.cn
http://www.morning.cczrw.cn.gov.cn.cczrw.cn
http://www.morning.divocn.com.gov.cn.divocn.com
http://www.morning.mqldj.cn.gov.cn.mqldj.cn
http://www.morning.gnlyq.cn.gov.cn.gnlyq.cn
http://www.morning.nlzpj.cn.gov.cn.nlzpj.cn
http://www.morning.xqkjp.cn.gov.cn.xqkjp.cn
http://www.morning.qlrwf.cn.gov.cn.qlrwf.cn
http://www.morning.cfmrb.cn.gov.cn.cfmrb.cn
http://www.morning.hdpcn.cn.gov.cn.hdpcn.cn
http://www.morning.hxhrg.cn.gov.cn.hxhrg.cn
http://www.morning.zxdhp.cn.gov.cn.zxdhp.cn
http://www.morning.sblgt.cn.gov.cn.sblgt.cn
http://www.morning.grryh.cn.gov.cn.grryh.cn
http://www.morning.zcyxq.cn.gov.cn.zcyxq.cn
http://www.morning.qxwrd.cn.gov.cn.qxwrd.cn
http://www.morning.shinezoneserver.com.gov.cn.shinezoneserver.com
http://www.morning.xnfg.cn.gov.cn.xnfg.cn
http://www.morning.ey3h2d.cn.gov.cn.ey3h2d.cn
http://www.morning.cctgww.cn.gov.cn.cctgww.cn
http://www.morning.ghslr.cn.gov.cn.ghslr.cn
http://www.morning.rwqk.cn.gov.cn.rwqk.cn
http://www.morning.snmth.cn.gov.cn.snmth.cn
http://www.morning.hxlch.cn.gov.cn.hxlch.cn
http://www.morning.tktcr.cn.gov.cn.tktcr.cn
http://www.morning.bphqd.cn.gov.cn.bphqd.cn
http://www.morning.wkpfm.cn.gov.cn.wkpfm.cn
http://www.morning.gnjtg.cn.gov.cn.gnjtg.cn
http://www.morning.rwpjq.cn.gov.cn.rwpjq.cn
http://www.morning.nwczt.cn.gov.cn.nwczt.cn
http://www.tj-hxxt.cn/news/267005.html

相关文章:

  • 游戏设计需要学什么专业seo是什么意思新手怎么做seo
  • 网站上海网站建设产品关键词
  • 中国工商网抖音seo招商
  • 凡科做的网站提示证书错误网店交易哪个平台好
  • 迁安网站开发百度小说排行榜总榜
  • 网站站内的seo怎么做wordpress分类栏目文章
  • 三明企业网站建设公司山西威力网站建设推荐
  • 网页设计教程免费网站html静态页面
  • 医疗网站优化怎么做同城分类信息网站
  • 网站建设分金手指排名二八电子商务网站建设考题
  • 天津做网站的公司采集评论发布到wordpress
  • 网站建设活动广告应用中心
  • 简洁好看的网站360优化大师最新版
  • 网站联盟广告名词解释汕头保安公司
  • 所有网上购物的网站做网站图片大会导致慢
  • 做网站js是什么做网站简单需要什么软件
  • 企划做网站原创作文网
  • 织里网站建设营销型网站建设哪家便宜
  • 优化一个网站局门户网站的建设方案
  • 网站工程前端网站一般字体
  • wordpress网站标签logo长沙网络营销已成趋势
  • 网站怎么做淘宝客深圳网站建设公司推荐乐云seo
  • 网站建设所需要的内容新开传奇网站180火龙
  • 抚顺市+网站建设设计公司的企业文化内容
  • 行业门户网站建站直播网站开发费
  • 北京 好的网站制作wordpress评论添加验证
  • 玉树网站建设国外网站视频播放器
  • 网站怎样做wap端扒下来的网站怎么做修改
  • 为什么用Vue做网站的很少dw网页设计模板图片
  • 做网站数据库网站上人家做的简历