Skip to content

bug: Regression in syncing #38

@mjudeikis

Description

@mjudeikis

Describe the bug

Few weeks ago, sync agent was working with https://cloudnative-pg.io/ :

apiVersion: syncagent.kcp.io/v1alpha1
kind: PublishedResource
metadata:
  name: publish-cnpg-cluster
spec:
  resource:
    kind: Cluster
    apiGroup: postgresql.cnpg.io
    version: v1
  naming:
    # This is the implicit default configuration.
    namespace: "$remoteClusterName"
    name: "$remoteName"
  related:
  - kind: Secret
    origin: kcp
    identifier: credentials
    reference:
      name:
        path: "spec.superuserSecret.name"

Now it gives error:

{"level":"error","time":"2025-03-09T18:29:40.670+0200","caller":"controller/controller.go:263","msg":"Reconciler error","controller":"syncagent-apiresourceschema","controllerGroup":"syncagent.kcp.io","controllerKind":"PublishedResource","PublishedResource":{"name":"publish-cnpg-cluster"},"namespace":"","name":"publish-cnpg-cluster","reconcileID":"05d85b6f-7e1b-45bc-b72b-368f636701aa","error":"failed to create APIResourceSchema: apiresourceschemas.apis.kcp.io \"ve9a1da98.clusters.postgresql.cnpg.io\" is forbidden: [spec.versions[0].schema.openAPIV3Schema.properties[spec].properties[env].items.properties[valueFrom].properties[resourceFieldRef].properties[divisor].properties: Required value: must not be empty if x-kubernetes-embedded-resource is true without x-kubernetes-preserve-unknown-fields spec.versions[0].schema.openAPIV3Schema.properties[spec].properties[env].items.properties[valueFrom].properties[resourceFieldRef].properties[divisor].type: Required value: must be object if x-kubernetes-embedded-resource is true spec.versions[0].schema.openAPIV3Schema.properties[spec].properties[ephemeralVolumeSource].properties[volumeClaimTemplate].properties[metadata].additionalProperties.properties: Required value: must not be empty if x-kubernetes-embedded-resource is true without x-kubernetes-preserve-unknown-fields spec.versions[0].schema.openAPIV3Schema.properties[spec].properties[ephemeralVolumeSource].properties[volumeClaimTemplate].properties[metadata].additionalProperties.type: Required value: must be object if x-kubernetes-embedded-resource is true spec.versions[0].schema.openAPIV3Schema.properties[spec].properties[ephemeralVolumeSource].properties[volumeClaimTemplate].properties[spec].properties[resources].properties[limits].additionalProperties.properties: Required value: must not be empty if x-kubernetes-embedded-resource is true without x-kubernetes-preserve-unknown-fields spec.versions[0].schema.openAPIV3Schema.properties[spec].properties[ephemeralVolumeSource].properties[volumeClaimTemplate].properties[spec].properties[resources].properties[limits].additionalProperties.type: Required value: must be object if x-kubernetes-embedded-resource is true spec.versions[0].schema.openAPIV3Schema.properties[spec].properties[ephemeralVolumeSource].properties[volumeClaimTemplate].properties[spec].properties[resources].properties[requests].additionalProperties.properties: Required value: must not be empty if x-kubernetes-embedded-resource is true without x-kubernetes-preserve-unknown-fields spec.versions[0].schema.openAPIV3Schema.properties[spec].properties[ephemeralVolumeSource].properties[volumeClaimTemplate].properties[spec].properties[resources].properties[requests].additionalProperties.type: Required value: must be object if x-kubernetes-embedded-resource is true spec.versions[0].schema.openAPIV3Schema.properties[spec].properties[ephemeralVolumesSizeLimit].properties[shm].properties: Required value: must not be empty if x-kubernetes-embedded-resource is true without x-kubernetes-preserve-unknown-fields spec.versions[0].schema.openAPIV3Schema.properties[spec].properties[ephemeralVolumesSizeLimit].properties[shm].type: Required value: must be object if x-kubernetes-embedded-resource is true spec.versions[0].schema.openAPIV3Schema.properties[spec].properties[ephemeralVolumesSizeLimit].properties[temporaryData].properties: Required value: must not be empty if x-kubernetes-embedded-resource is true without x-kubernetes-preserve-unknown-fields spec.versions[0].schema.openAPIV3Schema.properties[spec].properties[ephemeralVolumesSizeLimit].properties[temporaryData].type: Required value: must be object if x-kubernetes-embedded-resource is true spec.versions[0].schema.openAPIV3Schema.properties[spec].properties[managed].properties[services].properties[additional].items.properties[serviceTemplate].properties[spec].properties[ports].items.properties[targetPort].properties: Required value: must not be empty if x-kubernetes-embedded-resource is true without x-kubernetes-preserve-unknown-fields spec.versions[0].schema.openAPIV3Schema.properties[spec].properties[managed].properties[services].properties[additional].items.properties[serviceTemplate].properties[spec].properties[ports].items.properties[targetPort].type: Required value: must be object if x-kubernetes-embedded-resource is true spec.versions[0].schema.openAPIV3Schema.properties[spec].properties[projectedVolumeTemplate].properties[sources].items.properties[downwardAPI].properties[items].items.properties[resourceFieldRef].properties[divisor].properties: Required value: must not be empty if x-kubernetes-embedded-resource is true without x-kubernetes-preserve-unknown-fields spec.versions[0].schema.openAPIV3Schema.properties[spec].properties[projectedVolumeTemplate].properties[sources].items.properties[downwardAPI].properties[items].items.properties[resourceFieldRef].properties[divisor].type: Required value: must be object if x-kubernetes-embedded-resource is true spec.versions[0].schema.openAPIV3Schema.properties[spec].properties[resources].properties[limits].additionalProperties.properties: Required value: must not be empty if x-kubernetes-embedded-resource is true without x-kubernetes-preserve-unknown-fields spec.versions[0].schema.openAPIV3Schema.properties[spec].properties[resources].properties[limits].additionalProperties.type: Required value: must be object if x-kubernetes-embedded-resource is true spec.versions[0].schema.openAPIV3Schema.properties[spec].properties[resources].properties[requests].additionalProperties.properties: Required value: must not be empty if x-kubernetes-embedded-resource is true without x-kubernetes-preserve-unknown-fields spec.versions[0].schema.openAPIV3Schema.properties[spec].properties[resources].properties[requests].additionalProperties.type: Required value: must be object if x-kubernetes-embedded-resource is true spec.versions[0].schema.openAPIV3Schema.properties[spec].properties[storage].properties[pvcTemplate].properties[resources].properties[limits].additionalProperties.properties: Required value: must not be empty if x-kubernetes-embedded-resource is true without x-kubernetes-preserve-unknown-fields spec.versions[0].schema.openAPIV3Schema.properties[spec].properties[storage].properties[pvcTemplate].properties[resources].properties[limits].additionalProperties.type: Required value: must be object if x-kubernetes-embedded-resource is true spec.versions[0].schema.openAPIV3Schema.properties[spec].properties[storage].properties[pvcTemplate].properties[resources].properties[requests].additionalProperties.properties: Required value: must not be empty if x-kubernetes-embedded-resource is true without x-kubernetes-preserve-unknown-fields spec.versions[0].schema.openAPIV3Schema.properties[spec].properties[storage].properties[pvcTemplate].properties[resources].properties[requests].additionalProperties.type: Required value: must be object if x-kubernetes-embedded-resource is true spec.versions[0].schema.openAPIV3Schema.properties[spec].properties[tablespaces].items.properties[storage].properties[pvcTemplate].properties[resources].properties[limits].additionalProperties.properties: Required value: must not be empty if x-kubernetes-embedded-resource is true without x-kubernetes-preserve-unknown-fields spec.versions[0].schema.openAPIV3Schema.properties[spec].properties[tablespaces].items.properties[storage].properties[pvcTemplate].properties[resources].properties[limits].additionalProperties.type: Required value: must be object if x-kubernetes-embedded-resource is true spec.versions[0].schema.openAPIV3Schema.properties[spec].properties[tablespaces].items.properties[storage].properties[pvcTemplate].properties[resources].properties[requests].additionalProperties.properties: Required value: must not be empty if x-kubernetes-embedded-resource is true without x-kubernetes-preserve-unknown-fields spec.versions[0].schema.openAPIV3Schema.properties[spec].properties[tablespaces].items.properties[storage].properties[pvcTemplate].properties[resources].properties[requests].additionalProperties.type: Required value: must be object if x-kubernetes-embedded-resource is true spec.versions[0].schema.openAPIV3Schema.properties[spec].properties[walStorage].properties[pvcTemplate].properties[resources].properties[limits].additionalProperties.properties: Required value: must not be empty if x-kubernetes-embedded-resource is true without x-kubernetes-preserve-unknown-fields spec.versions[0].schema.openAPIV3Schema.properties[spec].properties[walStorage].properties[pvcTemplate].properties[resources].properties[limits].additionalProperties.type: Required value: must be object if x-kubernetes-embedded-resource is true spec.versions[0].schema.openAPIV3Schema.properties[spec].properties[walStorage].properties[pvcTemplate].properties[resources].properties[requests].additionalProperties.properties: Required value: must not be empty if x-kubernetes-embedded-resource is true without x-kubernetes-preserve-unknown-fields spec.versions[0].schema.openAPIV3Schema.properties[spec].properties[walStorage].properties[pvcTemplate].properties[resources].properties[requests].additionalProperties.type: Required value: must be object if x-kubernetes-embedded-resource is true]"}

feels like a regression of some sort.

Steps To Reproduce

Pull latest:
https://github.com/mjudeikis/kcp-contrib/tree/user-scripts/20250401-kubecon-london

and run part 3. Its simple enough to reproduce.

Expected Behaviour

working :)

Additional Context

No response

Metadata

Metadata

Assignees

Labels

kind/bugCategorizes issue or PR as related to a bug.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions