kubebuilder实战之五:operator编码,神策数据java面试

本文介绍了如何使用kubebuilder创建名为elasticweb的项目,详细阐述了CRD编码、业务逻辑实现、资源访问权限、常量定义以及关键方法的实现,如创建Service和Deployment的方法,以及更新状态的方法。此外,文章还提及了与神策数据Java面试的相关内容。
摘要由CSDN通过智能技术生成
  • 新建名为elasticweb的文件夹,在里面执行以下命令即可创建名为elas
【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】

浏览器打开:qq.cn.hn/FTf 免费领取

ticweb的项目,domain为com.bolingcavalry:

go mod init elasticweb

kubebuilder init --domain com.bolingcavalry

  • 然后是CRD,执行以下命令即可创建相关资源:

kubebuilder create api \

–group elasticweb \

–version v1 \

–kind ElasticWeb

  • 然后用IDE打开整个工程,我这里是goland:

在这里插入图片描述

CRD编码

  • 打开文件api/v1/elasticweb_types.go,做以下几步改动:
  1. 修改数据结构ElasticWebSpec,增加前文设计的四个字段;

  2. 修改数据结构ElasticWebStatus,增加前文设计的一个字段;

  3. 增加String方法,这样打印日志时方便我们查看,注意RealQPS字段是指针,因此可能为空,需要判空;

  • 完整的elasticweb_types.go如下所示:

package v1

import (

“fmt”

metav1 “k8s.io/apimachinery/pkg/apis/meta/v1”

“strconv”

)

// 期望状态

type ElasticWebSpec struct {

// 业务服务对应的镜像,包括名称:tag

Image string json:"image"

// service占用的宿主机端口,外部请求通过此端口访问pod的服务

Port *int32 json:"port"

// 单个pod的QPS上限

SinglePodQPS *int32 json:"singlePodQPS"

// 当前整个业务的总QPS

TotalQPS *int32 json:"totalQPS"

}

// 实际状态,该数据结构中的值都是业务代码计算出来的

type ElasticWebStatus struct {

// 当前kubernetes中实际支持的总QPS

RealQPS *int32 json:"realQPS"

}

// +kubebuilder:object:root=true

// ElasticWeb is the Schema for the elasticwebs API

type ElasticWeb struct {

metav1.TypeMeta json:",inline"

metav1.ObjectMeta json:"metadata,omitempty"

Spec ElasticWebSpec json:"spec,omitempty"

Status ElasticWebStatus json:"status,omitempty"

}

func (in *ElasticWeb) String() string {

var realQPS string

if nil == in.Status.RealQPS {

realQPS = “nil”

} else {

realQPS = strconv.Itoa(int(*(in.Status.RealQPS)))

}

return fmt.Sprintf(“Image [%s], Port [%d], SinglePodQPS [%d], TotalQPS [%d]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值