From 4e4cbcf65fe2985577ba88fefabe816e8c29218e Mon Sep 17 00:00:00 2001 From: D8D Developer Date: Mon, 8 Sep 2025 12:22:14 +0000 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(eci):=20=E6=B7=BB=E5=8A=A0EIP?= =?UTF-8?q?=E6=B3=A8=E8=A7=A3=E6=94=AF=E6=8C=81=E5=B9=B6=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增EIP相关注解支持:k8s.aliyun.com/eci-with-eip和k8s.aliyun.com/eci-eip-instanceid - 添加EipInstanceId字段到CreateContainerGroupRequest结构体 - 优化EIP配置逻辑:当未配置EIP注解时默认启用自动创建EIP - 移除硬编码的AutoCreateEip设置,改为基于注解的灵活配置 --- eci.go | 17 ++++++++++++++++- eci/create_container_group.go | 1 + 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/eci.go b/eci.go index 48e9346..07940ff 100644 --- a/eci.go +++ b/eci.go @@ -190,12 +190,27 @@ func (p *ECIProvider) CreatePod(ctx context.Context, pod *v1.Pod) error { if specs, exists := pod.Annotations["k8s.aliyun.com/eci-use-specs"]; exists { request.InstanceType = specs } + + // 解析EIP注解 + if withEip, exists := pod.Annotations["k8s.aliyun.com/eci-with-eip"]; exists { + if autoCreate, err := strconv.ParseBool(withEip); err == nil { + request.AutoCreateEip = requests.Boolean(strconv.FormatBool(autoCreate)) + } + } + + if eipInstanceId, exists := pod.Annotations["k8s.aliyun.com/eci-eip-instanceid"]; exists { + request.EipInstanceId = eipInstanceId + } + } + + // 如果没有配置EIP注解,默认启用自动创建EIP + if request.AutoCreateEip == "" && request.EipInstanceId == "" { + request.AutoCreateEip = requests.Boolean(strconv.FormatBool(true)) } // 添加抢占式实例策略配置 request.SpotStrategy = "SpotAsPriceGo" // 设置抢占式实例策略为按价格竞价 //request.SpotDuration = 0 // 设置抢占式实例持续时间为0(非定时抢占) - request.AutoCreateEip = requests.Boolean(strconv.FormatBool(true)) // // get containers containers, err := p.getContainers(pod, false) diff --git a/eci/create_container_group.go b/eci/create_container_group.go index 5c9d31f..52c1205 100644 --- a/eci/create_container_group.go +++ b/eci/create_container_group.go @@ -90,6 +90,7 @@ type CreateContainerGroupRequest struct { Volumes []Volume `position:"Query" name:"Volume" type:"Repeated"` ContainerGroupName string `position:"Query" name:"ContainerGroupName"` AutoCreateEip requests.Boolean `position:"Query" name:"AutoCreateEip"` + EipInstanceId string `position:"Query" name:"EipInstanceId"` ZoneId string `position:"Query" name:"ZoneId"` SpotStrategy string `position:"Query" name:"SpotStrategy"` InstanceType string `position:"Query" name:"InstanceType"`