cyrpg520 commented on issue #1375:
URL:
https://github.com/apache/apisix-ingress-controller/issues/1375#issuecomment-1273064039
看了下源代码1.15.0版本
/pkg/ingress/status.go中apisixpluginconfig好像没有v2版本的类型,所以注解中添加插件时报错:`error
ingress/status.go:336 unsupported resource record`
这是不是1.15.0版本的bug啊?
```
switch v := at.(type) {
case *configv2beta3.ApisixTls:
// set to status
if v.Status.Conditions == nil {
conditions := make([]metav1.Condition, 0)
v.Status.Conditions = conditions
}
if c.verifyGeneration(&v.Status.Conditions, condition) {
meta.SetStatusCondition(&v.Status.Conditions, condition)
if _, errRecord :=
client.ApisixV2beta3().ApisixTlses(v.Namespace).
UpdateStatus(context.TODO(), v,
metav1.UpdateOptions{}); errRecord != nil {
log.Errorw("failed to record status change for
ApisixTls",
zap.Error(errRecord),
zap.String("name", v.Name),
zap.String("namespace", v.Namespace),
)
}
}
case *configv2.ApisixTls:
// set to status
if v.Status.Conditions == nil {
conditions := make([]metav1.Condition, 0)
v.Status.Conditions = conditions
}
if c.verifyGeneration(&v.Status.Conditions, condition) {
meta.SetStatusCondition(&v.Status.Conditions, condition)
if _, errRecord :=
client.ApisixV2().ApisixTlses(v.Namespace).
UpdateStatus(context.TODO(), v,
metav1.UpdateOptions{}); errRecord != nil {
log.Errorw("failed to record status change for
ApisixTls",
zap.Error(errRecord),
zap.String("name", v.Name),
zap.String("namespace", v.Namespace),
)
}
}
case *configv2beta3.ApisixUpstream:
// set to status
if v.Status.Conditions == nil {
conditions := make([]metav1.Condition, 0)
v.Status.Conditions = conditions
}
if c.verifyGeneration(&v.Status.Conditions, condition) {
meta.SetStatusCondition(&v.Status.Conditions, condition)
if _, errRecord :=
client.ApisixV2beta3().ApisixUpstreams(v.Namespace).
UpdateStatus(context.TODO(), v,
metav1.UpdateOptions{}); errRecord != nil {
log.Errorw("failed to record status change for
ApisixUpstream",
zap.Error(errRecord),
zap.String("name", v.Name),
zap.String("namespace", v.Namespace),
)
}
}
case *configv2.ApisixUpstream:
// set to status
if v.Status.Conditions == nil {
conditions := make([]metav1.Condition, 0)
v.Status.Conditions = conditions
}
if c.verifyGeneration(&v.Status.Conditions, condition) {
meta.SetStatusCondition(&v.Status.Conditions, condition)
if _, errRecord :=
client.ApisixV2().ApisixUpstreams(v.Namespace).
UpdateStatus(context.TODO(), v,
metav1.UpdateOptions{}); errRecord != nil {
log.Errorw("failed to record status change for
ApisixUpstream",
zap.Error(errRecord),
zap.String("name", v.Name),
zap.String("namespace", v.Namespace),
)
}
}
case *configv2.ApisixRoute:
// set to status
if v.Status.Conditions == nil {
conditions := make([]metav1.Condition, 0)
v.Status.Conditions = conditions
}
if c.verifyGeneration(&v.Status.Conditions, condition) {
meta.SetStatusCondition(&v.Status.Conditions, condition)
if _, errRecord :=
client.ApisixV2().ApisixRoutes(v.Namespace).
UpdateStatus(context.TODO(), v,
metav1.UpdateOptions{}); errRecord != nil {
log.Errorw("failed to record status change for
ApisixRoute",
zap.Error(errRecord),
zap.String("name", v.Name),
zap.String("namespace", v.Namespace),
)
}
}
case *configv2beta2.ApisixRoute:
// set to status
if v.Status.Conditions == nil {
conditions := make([]metav1.Condition, 0)
v.Status.Conditions = conditions
}
if c.verifyGeneration(&v.Status.Conditions, condition) {
meta.SetStatusCondition(&v.Status.Conditions, condition)
if _, errRecord :=
client.ApisixV2beta2().ApisixRoutes(v.Namespace).
UpdateStatus(context.TODO(), v,
metav1.UpdateOptions{}); errRecord != nil {
log.Errorw("failed to record status change for
ApisixRoute",
zap.Error(errRecord),
zap.String("name", v.Name),
zap.String("namespace", v.Namespace),
)
}
}
case *configv2beta3.ApisixRoute:
// set to status
if v.Status.Conditions == nil {
conditions := make([]metav1.Condition, 0)
v.Status.Conditions = conditions
}
if c.verifyGeneration(&v.Status.Conditions, condition) {
meta.SetStatusCondition(&v.Status.Conditions, condition)
if _, errRecord :=
client.ApisixV2beta3().ApisixRoutes(v.Namespace).
UpdateStatus(context.TODO(), v,
metav1.UpdateOptions{}); errRecord != nil {
log.Errorw("failed to record status change for
ApisixRoute",
zap.Error(errRecord),
zap.String("name", v.Name),
zap.String("namespace", v.Namespace),
)
}
}
case *configv2beta3.ApisixConsumer:
// set to status
if v.Status.Conditions == nil {
conditions := make([]metav1.Condition, 0)
v.Status.Conditions = conditions
}
if c.verifyGeneration(&v.Status.Conditions, condition) {
meta.SetStatusCondition(&v.Status.Conditions, condition)
if _, errRecord :=
client.ApisixV2beta3().ApisixConsumers(v.Namespace).
UpdateStatus(context.TODO(), v,
metav1.UpdateOptions{}); errRecord != nil {
log.Errorw("failed to record status change for
ApisixConsumer",
zap.Error(errRecord),
zap.String("name", v.Name),
zap.String("namespace", v.Namespace),
)
}
}
case *configv2.ApisixConsumer:
// set to status
if v.Status.Conditions == nil {
conditions := make([]metav1.Condition, 0)
v.Status.Conditions = conditions
}
if c.verifyGeneration(&v.Status.Conditions, condition) {
meta.SetStatusCondition(&v.Status.Conditions, condition)
if _, errRecord :=
client.ApisixV2().ApisixConsumers(v.Namespace).
UpdateStatus(context.TODO(), v,
metav1.UpdateOptions{}); errRecord != nil {
log.Errorw("failed to record status change for
ApisixConsumer",
zap.Error(errRecord),
zap.String("name", v.Name),
zap.String("namespace", v.Namespace),
)
}
}
case *configv2beta3.ApisixPluginConfig:
// set to status
if v.Status.Conditions == nil {
conditions := make([]metav1.Condition, 0)
v.Status.Conditions = conditions
}
if c.verifyGeneration(&v.Status.Conditions, condition) {
meta.SetStatusCondition(&v.Status.Conditions, condition)
if _, errRecord :=
client.ApisixV2beta3().ApisixPluginConfigs(v.Namespace).
UpdateStatus(context.TODO(), v,
metav1.UpdateOptions{}); errRecord != nil {
log.Errorw("failed to record status change for
ApisixPluginConfig",
zap.Error(errRecord),
zap.String("name", v.Name),
zap.String("namespace", v.Namespace),
)
}
}
case *configv2beta3.ApisixClusterConfig:
// set to status
if v.Status.Conditions == nil {
conditions := make([]metav1.Condition, 0)
v.Status.Conditions = conditions
}
if c.verifyGeneration(&v.Status.Conditions, condition) {
meta.SetStatusCondition(&v.Status.Conditions, condition)
if _, errRecord :=
client.ApisixV2beta3().ApisixClusterConfigs().
UpdateStatus(context.TODO(), v,
metav1.UpdateOptions{}); errRecord != nil {
log.Errorw("failed to record status change for
ApisixClusterConfig",
zap.Error(errRecord),
zap.String("name", v.Name),
)
}
}
case *configv2.ApisixClusterConfig:
// set to status
if v.Status.Conditions == nil {
conditions := make([]metav1.Condition, 0)
v.Status.Conditions = conditions
}
if c.verifyGeneration(&v.Status.Conditions, condition) {
meta.SetStatusCondition(&v.Status.Conditions, condition)
if _, errRecord :=
client.ApisixV2().ApisixClusterConfigs().
UpdateStatus(context.TODO(), v,
metav1.UpdateOptions{}); errRecord != nil {
log.Errorw("failed to record status change for
ApisixClusterConfig",
zap.Error(errRecord),
zap.String("name", v.Name),
)
}
}
case *networkingv1.Ingress:
// set to status
lbips, err := c.ingressLBStatusIPs()
if err != nil {
log.Errorw("failed to get APISIX gateway external IPs",
zap.Error(err),
)
}
v.ObjectMeta.Generation = generation
v.Status.LoadBalancer.Ingress = lbips
if _, errRecord :=
kubeClient.NetworkingV1().Ingresses(v.Namespace).UpdateStatus(context.TODO(),
v, metav1.UpdateOptions{}); errRecord != nil {
log.Errorw("failed to record status change for
IngressV1",
zap.Error(errRecord),
zap.String("name", v.Name),
zap.String("namespace", v.Namespace),
)
}
case *networkingv1beta1.Ingress:
// set to status
lbips, err := c.ingressLBStatusIPs()
if err != nil {
log.Errorw("failed to get APISIX gateway external IPs",
zap.Error(err),
)
}
v.ObjectMeta.Generation = generation
v.Status.LoadBalancer.Ingress = lbips
if _, errRecord :=
kubeClient.NetworkingV1beta1().Ingresses(v.Namespace).UpdateStatus(context.TODO(),
v, metav1.UpdateOptions{}); errRecord != nil {
log.Errorw("failed to record status change for
IngressV1",
zap.Error(errRecord),
zap.String("name", v.Name),
zap.String("namespace", v.Namespace),
)
}
case *extensionsv1beta1.Ingress:
// set to status
lbips, err := c.ingressLBStatusIPs()
if err != nil {
log.Errorw("failed to get APISIX gateway external IPs",
zap.Error(err),
)
}
v.ObjectMeta.Generation = generation
v.Status.LoadBalancer.Ingress = lbips
if _, errRecord :=
kubeClient.ExtensionsV1beta1().Ingresses(v.Namespace).UpdateStatus(context.TODO(),
v, metav1.UpdateOptions{}); errRecord != nil {
log.Errorw("failed to record status change for
IngressV1",
zap.Error(errRecord),
zap.String("name", v.Name),
zap.String("namespace", v.Namespace),
)
}
default:
// This should not be executed
log.Errorf("unsupported resource record: %s", v)
}
}
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]