从您提供的错误信息来看,这个问题可能是由于您在定义TrafficRoutings时使用了不正确的API版本或者对象类型导致的。在这个例子中,您正在尝试使用Apache APISIX的路由对象(ApisixRoute)来定义TrafficRoutings,但是这个对象类型并不被OpenKruise所支持。
在OpenKruise中,您应该使用ServicePortTrafficRouter来定义TrafficRoutings。这是一个ServicePort级别的路由器,可以用来为特定的ServicePort定义路由规则。
以下是修改后的示例:
apiVersion: apps/v1
kind: Deployment
metadata:
name: report-api
labels:
app: report-api
spec:
replicas: 1
selector:
matchLabels:
app: report-api
template:
metadata:
labels:
app: report-api
spec:
containers:
- name: report-api
image: your-image
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
---
apiVersion: kruise.io/v1alpha1
kind: Rollout
metadata:
name: report-api
spec:
strategy:
canary:
trafficRouters:
- servicePortTrafficRouter:
service: report-api
targetServicePort: 80
在这个示例中,我们首先创建了一个Deployment和一个Rollout。然后,在Rollout的定义中,我们为Canary策略定义了一个ServicePortTrafficRouter,它将请求路由到Deployment中的80端口。
apiVersion: rollouts.kruise.io/v1alpha1
kind: Rollout
metadata:
annotations:
rollouts.kruise.io/hash: wx9vd42474b4cc548dz825b59ffzvd44c95x9dcd48v4w5678878vvz8b9wbbvcc
rollouts.kruise.io/rolling-style: partition
creationTimestamp: "2023-11-02T08:17:11Z"
deletionGracePeriodSeconds: 0
deletionTimestamp: "2023-11-09T03:35:49Z"
finalizers:
- rollouts.kruise.io/rollout
generation: 2
labels:
app: report-api
name: report-api
namespace: default
resourceVersion: "377449399"
uid: f57b0007-cd27-4b25-889f-417781430129
spec:
objectRef:
workloadRef:
apiVersion: apps/v1
kind: Deployment
name: report-api
strategy:
canary:
steps:
- pause: {}
replicas: 1
weight: 1
- pause: {}
replicas: 2
weight: 100
trafficRoutings:
- service: report-api
customNetworkRefs:
- apiVersion: ~[apisix.apache.org/v2](http://apisix.apache.org/v2)~
kind: ApisixRoute
name: report-api
。
此回答整理自钉群“OpenKruise 社区交流群”
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。