Lirt / velero-plugin-for-openstack

Openstack Cinder, Manila and Swift plugin for Velero backups
MIT License
26 stars 12 forks source link

[BUG] region_name is not correctly pulled from clouds.yaml #109

Closed KarlJJonsson closed 3 months ago

KarlJJonsson commented 3 months ago

Describe the bug When authenticating towards openstack using a clouds.yaml file the region_name is not correctly read and results in the following error: failed to create cinder storage client: No suitable endpoint could be found in the service catalog. when backing up cinder backed persistent volumes. Currently using AWS provider plugin to connect to object storage so cannot speak for how this would affect backups of other resources.

Setting the variable OS_REGION_NAME in the velero pod to the correct region solves the problem.

Steps to reproduce the behavior

  1. Deploy configmap with clouds.yaml:

    apiVersion: v1
    kind: ConfigMap
    metadata:
    name: openstack-credentials
    namespace: velero
    data:
    clouds.yaml: |
    clouds:
      openstack:
        region_name: myRegion
        auth:
          auth_url: "myOpenstackUrl:PORT/v3"
          application_credential_name: <credentialName>
          application_credential_id: <credentialID>
          application_credential_secret: <credentialSecret>
        insecure: true
  2. deploy velero with clouds.yaml mounted as volume using the following snippet:

...

extraVolumes:
  - name: openstack-config
    configMap:
      name: openstack-credentials

extraVolumeMounts:
  - name: openstack-config
    mountPath: /etc/openstack

configuration:
  volumeSnapshotLocation:
  - name: default
    provider: community.openstack.org/openstack-cinder
    config:
      method: backup
      volumeTimeout: 5m
      snapshotTimeout: 5m
      cloneTimeout: 5m
      backupTimeout: 5m
      imageTimeout: 5m
      ensureDeleted: "true"
      ensureDeletedDelay: 10s
      cascadeDelete: "true"
      containerName: "myBackend"
  extraEnvVars:
    OS_CLOUD: openstack

...
  1. Create PV with label backup-test: true
  2. Create a backup including persistent volumes backed by openstack cinder volume.
    apiVersion: velero.io/v1
    kind: Backup
    metadata:
    name: demo-backup-3
    namespace: velero
    spec:
    labelSelector:
    matchLabels:
      backup-test: "true"
    includedNamespaces:
    - '*'
    includedResources:
    - persistentvolumes

Expected behavior Velero would create a backup in openstack of persistent volumes backed by cinder in the cluster by using the declared region in the clouds.yaml file. Just as it does if i add ENV var OS_REGION_NAME: myRegion.

Used versions

Link to velero or backup log velero backup log demo-backup-3

Log snippet around error:

time="2024-03-28T10:22:21Z" level=info msg="Trying to authenticate against OpenStack using environment variables (including application credentials) or using files ~/.config/openstack/clouds.yaml, /etc/openstack/clouds.yaml and ./clouds.yaml" backup=velero/demo-backup-3 cmd=/plugins/velero-plugin-for-openstack logSource="/go/src/github.com/Lirt/velero-plugin-for-openstack/src/utils/auth.go:68" pluginName=velero-plugin-for-openstack
time="2024-03-28T10:22:22Z" level=info msg="Authentication against identity endpoint https://myOpenstackUrl:PORT/ was successful" backup=velero/demo-backup-3 cmd=/plugins/velero-plugin-for-openstack logSource="/go/src/github.com/Lirt/velero-plugin-for-openstack/src/utils/auth.go:113" pluginName=velero-plugin-for-openstack
time="2024-03-28T10:22:22Z" level=error msg="Error getting volume snapshotter for volume snapshot location" backup=velero/demo-backup-3 error="rpc error: code = Unknown desc = failed to create cinder storage client: No suitable endpoint could be found in the service catalog." logSource="pkg/backup/item_backupper.go:591" name=pvc-d20dfb58-a6a7-45bb-b65b-c7cfac3f557a namespace= persistentVolume=pvc-d20dfb58-a6a7-45bb-b65b-c7cfac3f557a resource=persistentvolumes volumeSnapshotLocation=default
time="2024-03-28T10:22:22Z" level=info msg="Persistent volume is not a supported volume type for Velero-native volumeSnapshotter snapshot, skipping." backup=velero/demo-backup-3 logSource="pkg/backup/item_backupper.go:612" name=pvc-d20dfb58-a6a7-45bb-b65b-c7cfac3f557a namespace= persistentVolume=pvc-d20dfb58-a6a7-45bb-b65b-c7cfac3f557a resource=persistentvolumes

Full log from backup:

time="2024-03-28T10:22:21Z" level=info msg="Setting up backup temp file" backup=velero/demo-backup-3 logSource="pkg/controller/backup_controller.go:620"
time="2024-03-28T10:22:21Z" level=info msg="Setting up plugin manager" backup=velero/demo-backup-3 logSource="pkg/controller/backup_controller.go:627"
time="2024-03-28T10:22:21Z" level=info msg="Getting backup item actions" backup=velero/demo-backup-3 logSource="pkg/controller/backup_controller.go:631"
time="2024-03-28T10:22:21Z" level=info msg="Setting up backup store to check for backup existence" backup=velero/demo-backup-3 logSource="pkg/controller/backup_controller.go:636"
time="2024-03-28T10:22:21Z" level=info msg="Writing backup version file" backup=velero/demo-backup-3 logSource="pkg/backup/backup.go:197"
time="2024-03-28T10:22:21Z" level=info msg="Including namespaces: *" backup=velero/demo-backup-3 logSource="pkg/backup/backup.go:203"
time="2024-03-28T10:22:21Z" level=info msg="Excluding namespaces: <none>" backup=velero/demo-backup-3 logSource="pkg/backup/backup.go:204"
time="2024-03-28T10:22:21Z" level=info msg="Including resources: persistentvolumes" backup=velero/demo-backup-3 logSource="pkg/util/collections/includes_excludes.go:506"
time="2024-03-28T10:22:21Z" level=info msg="Excluding resources: <none>" backup=velero/demo-backup-3 logSource="pkg/util/collections/includes_excludes.go:507"
time="2024-03-28T10:22:21Z" level=info msg="Backing up all volumes using pod volume backup: false" backup=velero/demo-backup-3 logSource="pkg/backup/backup.go:222"
time="2024-03-28T10:22:21Z" level=info msg="Getting items for group" backup=velero/demo-backup-3 group=v1 logSource="pkg/backup/item_collector.go:105"
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=v1 logSource="pkg/backup/item_collector.go:196" resource=pods
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=v1 logSource="pkg/backup/item_collector.go:255" resource=pods
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=v1 logSource="pkg/backup/item_collector.go:196" resource=persistentvolumeclaims
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=v1 logSource="pkg/backup/item_collector.go:255" resource=persistentvolumeclaims
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=v1 logSource="pkg/backup/item_collector.go:196" resource=persistentvolumes
time="2024-03-28T10:22:21Z" level=info msg="Listing items" backup=velero/demo-backup-3 group=v1 logSource="pkg/backup/item_collector.go:323" namespace= resource=persistentvolumes
time="2024-03-28T10:22:21Z" level=info msg="list for groupResource persistentvolumes was not paginated" backup=velero/demo-backup-3 logSource="pkg/backup/item_collector.go:496"
time="2024-03-28T10:22:21Z" level=info msg="Retrieved 1 items" backup=velero/demo-backup-3 group=v1 logSource="pkg/backup/item_collector.go:354" namespace= resource=persistentvolumes
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=v1 logSource="pkg/backup/item_collector.go:196" resource=resourcequotas
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=v1 logSource="pkg/backup/item_collector.go:255" resource=resourcequotas
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=v1 logSource="pkg/backup/item_collector.go:196" resource=podtemplates
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=v1 logSource="pkg/backup/item_collector.go:255" resource=podtemplates
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=v1 logSource="pkg/backup/item_collector.go:196" resource=limitranges
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=v1 logSource="pkg/backup/item_collector.go:255" resource=limitranges
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=v1 logSource="pkg/backup/item_collector.go:196" resource=secrets
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=v1 logSource="pkg/backup/item_collector.go:255" resource=secrets
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=v1 logSource="pkg/backup/item_collector.go:196" resource=services
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=v1 logSource="pkg/backup/item_collector.go:255" resource=services
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=v1 logSource="pkg/backup/item_collector.go:196" resource=nodes
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=v1 logSource="pkg/backup/item_collector.go:255" resource=nodes
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=v1 logSource="pkg/backup/item_collector.go:196" resource=serviceaccounts
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=v1 logSource="pkg/backup/item_collector.go:255" resource=serviceaccounts
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=v1 logSource="pkg/backup/item_collector.go:196" resource=replicationcontrollers
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=v1 logSource="pkg/backup/item_collector.go:255" resource=replicationcontrollers
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=v1 logSource="pkg/backup/item_collector.go:196" resource=endpoints
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=v1 logSource="pkg/backup/item_collector.go:255" resource=endpoints
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=v1 logSource="pkg/backup/item_collector.go:196" resource=configmaps
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=v1 logSource="pkg/backup/item_collector.go:255" resource=configmaps
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=v1 logSource="pkg/backup/item_collector.go:196" resource=events
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=v1 logSource="pkg/backup/item_collector.go:255" resource=events
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=v1 logSource="pkg/backup/item_collector.go:196" resource=namespaces
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=v1 logSource="pkg/backup/item_collector.go:255" resource=namespaces
time="2024-03-28T10:22:21Z" level=info msg="Getting items for group" backup=velero/demo-backup-3 group=apiregistration.k8s.io/v1 logSource="pkg/backup/item_collector.go:105"
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=apiregistration.k8s.io/v1 logSource="pkg/backup/item_collector.go:196" resource=apiservices
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=apiregistration.k8s.io/v1 logSource="pkg/backup/item_collector.go:255" resource=apiservices
time="2024-03-28T10:22:21Z" level=info msg="Getting items for group" backup=velero/demo-backup-3 group=apps/v1 logSource="pkg/backup/item_collector.go:105"
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=apps/v1 logSource="pkg/backup/item_collector.go:196" resource=deployments
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=apps/v1 logSource="pkg/backup/item_collector.go:255" resource=deployments
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=apps/v1 logSource="pkg/backup/item_collector.go:196" resource=controllerrevisions
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=apps/v1 logSource="pkg/backup/item_collector.go:255" resource=controllerrevisions
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=apps/v1 logSource="pkg/backup/item_collector.go:196" resource=replicasets
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=apps/v1 logSource="pkg/backup/item_collector.go:255" resource=replicasets
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=apps/v1 logSource="pkg/backup/item_collector.go:196" resource=statefulsets
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=apps/v1 logSource="pkg/backup/item_collector.go:255" resource=statefulsets
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=apps/v1 logSource="pkg/backup/item_collector.go:196" resource=daemonsets
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=apps/v1 logSource="pkg/backup/item_collector.go:255" resource=daemonsets
time="2024-03-28T10:22:21Z" level=info msg="Getting items for group" backup=velero/demo-backup-3 group=events.k8s.io/v1 logSource="pkg/backup/item_collector.go:105"
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=events.k8s.io/v1 logSource="pkg/backup/item_collector.go:196" resource=events
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=events.k8s.io/v1 logSource="pkg/backup/item_collector.go:255" resource=events
time="2024-03-28T10:22:21Z" level=info msg="Getting items for group" backup=velero/demo-backup-3 group=autoscaling/v2 logSource="pkg/backup/item_collector.go:105"
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=autoscaling/v2 logSource="pkg/backup/item_collector.go:196" resource=horizontalpodautoscalers
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=autoscaling/v2 logSource="pkg/backup/item_collector.go:255" resource=horizontalpodautoscalers
time="2024-03-28T10:22:21Z" level=info msg="Getting items for group" backup=velero/demo-backup-3 group=batch/v1 logSource="pkg/backup/item_collector.go:105"
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=batch/v1 logSource="pkg/backup/item_collector.go:196" resource=cronjobs
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=batch/v1 logSource="pkg/backup/item_collector.go:255" resource=cronjobs
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=batch/v1 logSource="pkg/backup/item_collector.go:196" resource=jobs
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=batch/v1 logSource="pkg/backup/item_collector.go:255" resource=jobs
time="2024-03-28T10:22:21Z" level=info msg="Getting items for group" backup=velero/demo-backup-3 group=certificates.k8s.io/v1 logSource="pkg/backup/item_collector.go:105"
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=certificates.k8s.io/v1 logSource="pkg/backup/item_collector.go:196" resource=certificatesigningrequests
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=certificates.k8s.io/v1 logSource="pkg/backup/item_collector.go:255" resource=certificatesigningrequests
time="2024-03-28T10:22:21Z" level=info msg="Getting items for group" backup=velero/demo-backup-3 group=networking.k8s.io/v1 logSource="pkg/backup/item_collector.go:105"
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=networking.k8s.io/v1 logSource="pkg/backup/item_collector.go:196" resource=ingressclasses
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=networking.k8s.io/v1 logSource="pkg/backup/item_collector.go:255" resource=ingressclasses
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=networking.k8s.io/v1 logSource="pkg/backup/item_collector.go:196" resource=networkpolicies
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=networking.k8s.io/v1 logSource="pkg/backup/item_collector.go:255" resource=networkpolicies
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=networking.k8s.io/v1 logSource="pkg/backup/item_collector.go:196" resource=ingresses
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=networking.k8s.io/v1 logSource="pkg/backup/item_collector.go:255" resource=ingresses
time="2024-03-28T10:22:21Z" level=info msg="Getting items for group" backup=velero/demo-backup-3 group=policy/v1 logSource="pkg/backup/item_collector.go:105"
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=policy/v1 logSource="pkg/backup/item_collector.go:196" resource=poddisruptionbudgets
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=policy/v1 logSource="pkg/backup/item_collector.go:255" resource=poddisruptionbudgets
time="2024-03-28T10:22:21Z" level=info msg="Getting items for group" backup=velero/demo-backup-3 group=rbac.authorization.k8s.io/v1 logSource="pkg/backup/item_collector.go:105"
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=rbac.authorization.k8s.io/v1 logSource="pkg/backup/item_collector.go:196" resource=clusterroles
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=rbac.authorization.k8s.io/v1 logSource="pkg/backup/item_collector.go:255" resource=clusterroles
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=rbac.authorization.k8s.io/v1 logSource="pkg/backup/item_collector.go:196" resource=clusterrolebindings
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=rbac.authorization.k8s.io/v1 logSource="pkg/backup/item_collector.go:255" resource=clusterrolebindings
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=rbac.authorization.k8s.io/v1 logSource="pkg/backup/item_collector.go:196" resource=roles
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=rbac.authorization.k8s.io/v1 logSource="pkg/backup/item_collector.go:255" resource=roles
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=rbac.authorization.k8s.io/v1 logSource="pkg/backup/item_collector.go:196" resource=rolebindings
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=rbac.authorization.k8s.io/v1 logSource="pkg/backup/item_collector.go:255" resource=rolebindings
time="2024-03-28T10:22:21Z" level=info msg="Getting items for group" backup=velero/demo-backup-3 group=storage.k8s.io/v1 logSource="pkg/backup/item_collector.go:105"
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=storage.k8s.io/v1 logSource="pkg/backup/item_collector.go:196" resource=storageclasses
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=storage.k8s.io/v1 logSource="pkg/backup/item_collector.go:255" resource=storageclasses
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=storage.k8s.io/v1 logSource="pkg/backup/item_collector.go:196" resource=csistoragecapacities
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=storage.k8s.io/v1 logSource="pkg/backup/item_collector.go:255" resource=csistoragecapacities
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=storage.k8s.io/v1 logSource="pkg/backup/item_collector.go:196" resource=csidrivers
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=storage.k8s.io/v1 logSource="pkg/backup/item_collector.go:255" resource=csidrivers
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=storage.k8s.io/v1 logSource="pkg/backup/item_collector.go:196" resource=csinodes
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=storage.k8s.io/v1 logSource="pkg/backup/item_collector.go:255" resource=csinodes
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=storage.k8s.io/v1 logSource="pkg/backup/item_collector.go:196" resource=volumeattachments
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=storage.k8s.io/v1 logSource="pkg/backup/item_collector.go:255" resource=volumeattachments
time="2024-03-28T10:22:21Z" level=info msg="Getting items for group" backup=velero/demo-backup-3 group=admissionregistration.k8s.io/v1 logSource="pkg/backup/item_collector.go:105"
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=admissionregistration.k8s.io/v1 logSource="pkg/backup/item_collector.go:196" resource=mutatingwebhookconfigurations
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=admissionregistration.k8s.io/v1 logSource="pkg/backup/item_collector.go:255" resource=mutatingwebhookconfigurations
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=admissionregistration.k8s.io/v1 logSource="pkg/backup/item_collector.go:196" resource=validatingwebhookconfigurations
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=admissionregistration.k8s.io/v1 logSource="pkg/backup/item_collector.go:255" resource=validatingwebhookconfigurations
time="2024-03-28T10:22:21Z" level=info msg="Getting items for group" backup=velero/demo-backup-3 group=apiextensions.k8s.io/v1 logSource="pkg/backup/item_collector.go:105"
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=apiextensions.k8s.io/v1 logSource="pkg/backup/item_collector.go:196" resource=customresourcedefinitions
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=apiextensions.k8s.io/v1 logSource="pkg/backup/item_collector.go:255" resource=customresourcedefinitions
time="2024-03-28T10:22:21Z" level=info msg="Getting items for group" backup=velero/demo-backup-3 group=scheduling.k8s.io/v1 logSource="pkg/backup/item_collector.go:105"
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=scheduling.k8s.io/v1 logSource="pkg/backup/item_collector.go:196" resource=priorityclasses
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=scheduling.k8s.io/v1 logSource="pkg/backup/item_collector.go:255" resource=priorityclasses
time="2024-03-28T10:22:21Z" level=info msg="Getting items for group" backup=velero/demo-backup-3 group=coordination.k8s.io/v1 logSource="pkg/backup/item_collector.go:105"
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=coordination.k8s.io/v1 logSource="pkg/backup/item_collector.go:196" resource=leases
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=coordination.k8s.io/v1 logSource="pkg/backup/item_collector.go:255" resource=leases
time="2024-03-28T10:22:21Z" level=info msg="Getting items for group" backup=velero/demo-backup-3 group=node.k8s.io/v1 logSource="pkg/backup/item_collector.go:105"
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=node.k8s.io/v1 logSource="pkg/backup/item_collector.go:196" resource=runtimeclasses
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=node.k8s.io/v1 logSource="pkg/backup/item_collector.go:255" resource=runtimeclasses
time="2024-03-28T10:22:21Z" level=info msg="Getting items for group" backup=velero/demo-backup-3 group=discovery.k8s.io/v1 logSource="pkg/backup/item_collector.go:105"
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=discovery.k8s.io/v1 logSource="pkg/backup/item_collector.go:196" resource=endpointslices
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=discovery.k8s.io/v1 logSource="pkg/backup/item_collector.go:255" resource=endpointslices
time="2024-03-28T10:22:21Z" level=info msg="Getting items for group" backup=velero/demo-backup-3 group=flowcontrol.apiserver.k8s.io/v1beta2 logSource="pkg/backup/item_collector.go:105"
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=flowcontrol.apiserver.k8s.io/v1beta2 logSource="pkg/backup/item_collector.go:196" resource=flowschemas
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=flowcontrol.apiserver.k8s.io/v1beta2 logSource="pkg/backup/item_collector.go:255" resource=flowschemas
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=flowcontrol.apiserver.k8s.io/v1beta2 logSource="pkg/backup/item_collector.go:196" resource=prioritylevelconfigurations
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=flowcontrol.apiserver.k8s.io/v1beta2 logSource="pkg/backup/item_collector.go:255" resource=prioritylevelconfigurations
time="2024-03-28T10:22:21Z" level=info msg="Getting items for group" backup=velero/demo-backup-3 group=acme.cert-manager.io/v1 logSource="pkg/backup/item_collector.go:105"
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=acme.cert-manager.io/v1 logSource="pkg/backup/item_collector.go:196" resource=challenges
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=acme.cert-manager.io/v1 logSource="pkg/backup/item_collector.go:255" resource=challenges
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=acme.cert-manager.io/v1 logSource="pkg/backup/item_collector.go:196" resource=orders
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=acme.cert-manager.io/v1 logSource="pkg/backup/item_collector.go:255" resource=orders
time="2024-03-28T10:22:21Z" level=info msg="Getting items for group" backup=velero/demo-backup-3 group=cert-manager.io/v1 logSource="pkg/backup/item_collector.go:105"
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=cert-manager.io/v1 logSource="pkg/backup/item_collector.go:196" resource=clusterissuers
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=cert-manager.io/v1 logSource="pkg/backup/item_collector.go:255" resource=clusterissuers
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=cert-manager.io/v1 logSource="pkg/backup/item_collector.go:196" resource=certificaterequests
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=cert-manager.io/v1 logSource="pkg/backup/item_collector.go:255" resource=certificaterequests
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=cert-manager.io/v1 logSource="pkg/backup/item_collector.go:196" resource=issuers
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=cert-manager.io/v1 logSource="pkg/backup/item_collector.go:255" resource=issuers
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=cert-manager.io/v1 logSource="pkg/backup/item_collector.go:196" resource=certificates
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=cert-manager.io/v1 logSource="pkg/backup/item_collector.go:255" resource=certificates
time="2024-03-28T10:22:21Z" level=info msg="Getting items for group" backup=velero/demo-backup-3 group=crd.projectcalico.org/v1 logSource="pkg/backup/item_collector.go:105"
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=crd.projectcalico.org/v1 logSource="pkg/backup/item_collector.go:196" resource=globalnetworksets
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=crd.projectcalico.org/v1 logSource="pkg/backup/item_collector.go:255" resource=globalnetworksets
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=crd.projectcalico.org/v1 logSource="pkg/backup/item_collector.go:196" resource=bgppeers
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=crd.projectcalico.org/v1 logSource="pkg/backup/item_collector.go:255" resource=bgppeers
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=crd.projectcalico.org/v1 logSource="pkg/backup/item_collector.go:196" resource=ippools
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=crd.projectcalico.org/v1 logSource="pkg/backup/item_collector.go:255" resource=ippools
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=crd.projectcalico.org/v1 logSource="pkg/backup/item_collector.go:196" resource=bgpconfigurations
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=crd.projectcalico.org/v1 logSource="pkg/backup/item_collector.go:255" resource=bgpconfigurations
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=crd.projectcalico.org/v1 logSource="pkg/backup/item_collector.go:196" resource=caliconodestatuses
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=crd.projectcalico.org/v1 logSource="pkg/backup/item_collector.go:255" resource=caliconodestatuses
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=crd.projectcalico.org/v1 logSource="pkg/backup/item_collector.go:196" resource=blockaffinities
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=crd.projectcalico.org/v1 logSource="pkg/backup/item_collector.go:255" resource=blockaffinities
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=crd.projectcalico.org/v1 logSource="pkg/backup/item_collector.go:196" resource=felixconfigurations
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=crd.projectcalico.org/v1 logSource="pkg/backup/item_collector.go:255" resource=felixconfigurations
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=crd.projectcalico.org/v1 logSource="pkg/backup/item_collector.go:196" resource=ipreservations
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=crd.projectcalico.org/v1 logSource="pkg/backup/item_collector.go:255" resource=ipreservations
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=crd.projectcalico.org/v1 logSource="pkg/backup/item_collector.go:196" resource=ipamhandles
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=crd.projectcalico.org/v1 logSource="pkg/backup/item_collector.go:255" resource=ipamhandles
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=crd.projectcalico.org/v1 logSource="pkg/backup/item_collector.go:196" resource=ipamconfigs
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=crd.projectcalico.org/v1 logSource="pkg/backup/item_collector.go:255" resource=ipamconfigs
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=crd.projectcalico.org/v1 logSource="pkg/backup/item_collector.go:196" resource=networksets
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=crd.projectcalico.org/v1 logSource="pkg/backup/item_collector.go:255" resource=networksets
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=crd.projectcalico.org/v1 logSource="pkg/backup/item_collector.go:196" resource=networkpolicies
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=crd.projectcalico.org/v1 logSource="pkg/backup/item_collector.go:255" resource=networkpolicies
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=crd.projectcalico.org/v1 logSource="pkg/backup/item_collector.go:196" resource=globalnetworkpolicies
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=crd.projectcalico.org/v1 logSource="pkg/backup/item_collector.go:255" resource=globalnetworkpolicies
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=crd.projectcalico.org/v1 logSource="pkg/backup/item_collector.go:196" resource=kubecontrollersconfigurations
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=crd.projectcalico.org/v1 logSource="pkg/backup/item_collector.go:255" resource=kubecontrollersconfigurations
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=crd.projectcalico.org/v1 logSource="pkg/backup/item_collector.go:196" resource=ipamblocks
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=crd.projectcalico.org/v1 logSource="pkg/backup/item_collector.go:255" resource=ipamblocks
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=crd.projectcalico.org/v1 logSource="pkg/backup/item_collector.go:196" resource=hostendpoints
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=crd.projectcalico.org/v1 logSource="pkg/backup/item_collector.go:255" resource=hostendpoints
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=crd.projectcalico.org/v1 logSource="pkg/backup/item_collector.go:196" resource=clusterinformations
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=crd.projectcalico.org/v1 logSource="pkg/backup/item_collector.go:255" resource=clusterinformations
time="2024-03-28T10:22:21Z" level=info msg="Getting items for group" backup=velero/demo-backup-3 group=helm.cattle.io/v1 logSource="pkg/backup/item_collector.go:105"
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=helm.cattle.io/v1 logSource="pkg/backup/item_collector.go:196" resource=helmchartconfigs
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=helm.cattle.io/v1 logSource="pkg/backup/item_collector.go:255" resource=helmchartconfigs
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=helm.cattle.io/v1 logSource="pkg/backup/item_collector.go:196" resource=helmcharts
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=helm.cattle.io/v1 logSource="pkg/backup/item_collector.go:255" resource=helmcharts
time="2024-03-28T10:22:21Z" level=info msg="Getting items for group" backup=velero/demo-backup-3 group=k3s.cattle.io/v1 logSource="pkg/backup/item_collector.go:105"
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=k3s.cattle.io/v1 logSource="pkg/backup/item_collector.go:196" resource=addons
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=k3s.cattle.io/v1 logSource="pkg/backup/item_collector.go:255" resource=addons
time="2024-03-28T10:22:21Z" level=info msg="Getting items for group" backup=velero/demo-backup-3 group=kustomize.toolkit.fluxcd.io/v1 logSource="pkg/backup/item_collector.go:105"
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=kustomize.toolkit.fluxcd.io/v1 logSource="pkg/backup/item_collector.go:196" resource=kustomizations
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=kustomize.toolkit.fluxcd.io/v1 logSource="pkg/backup/item_collector.go:255" resource=kustomizations
time="2024-03-28T10:22:21Z" level=info msg="Getting items for group" backup=velero/demo-backup-3 group=notification.toolkit.fluxcd.io/v1 logSource="pkg/backup/item_collector.go:105"
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=notification.toolkit.fluxcd.io/v1 logSource="pkg/backup/item_collector.go:196" resource=receivers
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=notification.toolkit.fluxcd.io/v1 logSource="pkg/backup/item_collector.go:255" resource=receivers
time="2024-03-28T10:22:21Z" level=info msg="Getting items for group" backup=velero/demo-backup-3 group=notification.toolkit.fluxcd.io/v1beta2 logSource="pkg/backup/item_collector.go:105"
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=notification.toolkit.fluxcd.io/v1beta2 logSource="pkg/backup/item_collector.go:196" resource=providers
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=notification.toolkit.fluxcd.io/v1beta2 logSource="pkg/backup/item_collector.go:255" resource=providers
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=notification.toolkit.fluxcd.io/v1beta2 logSource="pkg/backup/item_collector.go:196" resource=alerts
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=notification.toolkit.fluxcd.io/v1beta2 logSource="pkg/backup/item_collector.go:255" resource=alerts
time="2024-03-28T10:22:21Z" level=info msg="Getting items for group" backup=velero/demo-backup-3 group=postgresql.cnpg.io/v1 logSource="pkg/backup/item_collector.go:105"
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=postgresql.cnpg.io/v1 logSource="pkg/backup/item_collector.go:196" resource=poolers
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=postgresql.cnpg.io/v1 logSource="pkg/backup/item_collector.go:255" resource=poolers
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=postgresql.cnpg.io/v1 logSource="pkg/backup/item_collector.go:196" resource=scheduledbackups
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=postgresql.cnpg.io/v1 logSource="pkg/backup/item_collector.go:255" resource=scheduledbackups
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=postgresql.cnpg.io/v1 logSource="pkg/backup/item_collector.go:196" resource=backups
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=postgresql.cnpg.io/v1 logSource="pkg/backup/item_collector.go:255" resource=backups
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=postgresql.cnpg.io/v1 logSource="pkg/backup/item_collector.go:196" resource=clusters
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=postgresql.cnpg.io/v1 logSource="pkg/backup/item_collector.go:255" resource=clusters
time="2024-03-28T10:22:21Z" level=info msg="Getting items for group" backup=velero/demo-backup-3 group=source.toolkit.fluxcd.io/v1 logSource="pkg/backup/item_collector.go:105"
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=source.toolkit.fluxcd.io/v1 logSource="pkg/backup/item_collector.go:196" resource=gitrepositories
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=source.toolkit.fluxcd.io/v1 logSource="pkg/backup/item_collector.go:255" resource=gitrepositories
time="2024-03-28T10:22:21Z" level=info msg="Getting items for group" backup=velero/demo-backup-3 group=source.toolkit.fluxcd.io/v1beta2 logSource="pkg/backup/item_collector.go:105"
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=source.toolkit.fluxcd.io/v1beta2 logSource="pkg/backup/item_collector.go:196" resource=ocirepositories
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=source.toolkit.fluxcd.io/v1beta2 logSource="pkg/backup/item_collector.go:255" resource=ocirepositories
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=source.toolkit.fluxcd.io/v1beta2 logSource="pkg/backup/item_collector.go:196" resource=helmrepositories
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=source.toolkit.fluxcd.io/v1beta2 logSource="pkg/backup/item_collector.go:255" resource=helmrepositories
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=source.toolkit.fluxcd.io/v1beta2 logSource="pkg/backup/item_collector.go:196" resource=buckets
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=source.toolkit.fluxcd.io/v1beta2 logSource="pkg/backup/item_collector.go:255" resource=buckets
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=source.toolkit.fluxcd.io/v1beta2 logSource="pkg/backup/item_collector.go:196" resource=helmcharts
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=source.toolkit.fluxcd.io/v1beta2 logSource="pkg/backup/item_collector.go:255" resource=helmcharts
time="2024-03-28T10:22:21Z" level=info msg="Getting items for group" backup=velero/demo-backup-3 group=velero.io/v1 logSource="pkg/backup/item_collector.go:105"
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=velero.io/v1 logSource="pkg/backup/item_collector.go:196" resource=downloadrequests
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=velero.io/v1 logSource="pkg/backup/item_collector.go:255" resource=downloadrequests
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=velero.io/v1 logSource="pkg/backup/item_collector.go:196" resource=volumesnapshotlocations
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=velero.io/v1 logSource="pkg/backup/item_collector.go:255" resource=volumesnapshotlocations
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=velero.io/v1 logSource="pkg/backup/item_collector.go:196" resource=deletebackuprequests
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=velero.io/v1 logSource="pkg/backup/item_collector.go:255" resource=deletebackuprequests
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=velero.io/v1 logSource="pkg/backup/item_collector.go:196" resource=backups
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=velero.io/v1 logSource="pkg/backup/item_collector.go:255" resource=backups
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=velero.io/v1 logSource="pkg/backup/item_collector.go:196" resource=schedules
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=velero.io/v1 logSource="pkg/backup/item_collector.go:255" resource=schedules
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=velero.io/v1 logSource="pkg/backup/item_collector.go:196" resource=podvolumerestores
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=velero.io/v1 logSource="pkg/backup/item_collector.go:255" resource=podvolumerestores
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=velero.io/v1 logSource="pkg/backup/item_collector.go:196" resource=serverstatusrequests
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=velero.io/v1 logSource="pkg/backup/item_collector.go:255" resource=serverstatusrequests
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=velero.io/v1 logSource="pkg/backup/item_collector.go:196" resource=backuprepositories
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=velero.io/v1 logSource="pkg/backup/item_collector.go:255" resource=backuprepositories
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=velero.io/v1 logSource="pkg/backup/item_collector.go:196" resource=restores
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=velero.io/v1 logSource="pkg/backup/item_collector.go:255" resource=restores
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=velero.io/v1 logSource="pkg/backup/item_collector.go:196" resource=backupstoragelocations
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=velero.io/v1 logSource="pkg/backup/item_collector.go:255" resource=backupstoragelocations
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=velero.io/v1 logSource="pkg/backup/item_collector.go:196" resource=podvolumebackups
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=velero.io/v1 logSource="pkg/backup/item_collector.go:255" resource=podvolumebackups
time="2024-03-28T10:22:21Z" level=info msg="Getting items for group" backup=velero/demo-backup-3 group=velero.io/v2alpha1 logSource="pkg/backup/item_collector.go:105"
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=velero.io/v2alpha1 logSource="pkg/backup/item_collector.go:196" resource=datauploads
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=velero.io/v2alpha1 logSource="pkg/backup/item_collector.go:255" resource=datauploads
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=velero.io/v2alpha1 logSource="pkg/backup/item_collector.go:196" resource=datadownloads
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=velero.io/v2alpha1 logSource="pkg/backup/item_collector.go:255" resource=datadownloads
time="2024-03-28T10:22:21Z" level=info msg="Getting items for group" backup=velero/demo-backup-3 group=helm.toolkit.fluxcd.io/v2beta1 logSource="pkg/backup/item_collector.go:105"
time="2024-03-28T10:22:21Z" level=info msg="Getting items for resource" backup=velero/demo-backup-3 group=helm.toolkit.fluxcd.io/v2beta1 logSource="pkg/backup/item_collector.go:196" resource=helmreleases
time="2024-03-28T10:22:21Z" level=info msg="Skipping resource because it's excluded" backup=velero/demo-backup-3 group=helm.toolkit.fluxcd.io/v2beta1 logSource="pkg/backup/item_collector.go:255" resource=helmreleases
time="2024-03-28T10:22:21Z" level=info msg="Collected 1 items matching the backup spec from the Kubernetes API (actual number of items backed up may be more or less depending on velero.io/exclude-from-backup annotation, plugins returning additional related items to back up, etc.)" backup=velero/demo-backup-3 logSource="pkg/backup/backup.go:280" progress=
time="2024-03-28T10:22:21Z" level=info msg="Processing item" backup=velero/demo-backup-3 logSource="pkg/backup/backup.go:365" name=pvc-d20dfb58-a6a7-45bb-b65b-c7cfac3f557a namespace= progress= resource=persistentvolumes
time="2024-03-28T10:22:21Z" level=info msg="Backing up item" backup=velero/demo-backup-3 logSource="pkg/backup/item_backupper.go:179" name=pvc-d20dfb58-a6a7-45bb-b65b-c7cfac3f557a namespace= resource=persistentvolumes
time="2024-03-28T10:22:21Z" level=info msg="Executing takePVSnapshot" backup=velero/demo-backup-3 logSource="pkg/backup/item_backupper.go:509" name=pvc-d20dfb58-a6a7-45bb-b65b-c7cfac3f557a namespace= resource=persistentvolumes
time="2024-03-28T10:22:21Z" level=info msg="label \"topology.kubernetes.io/zone\" is not present on PersistentVolume, checking deprecated label..." backup=velero/demo-backup-3 logSource="pkg/backup/item_backupper.go:567" name=pvc-d20dfb58-a6a7-45bb-b65b-c7cfac3f557a namespace= persistentVolume=pvc-d20dfb58-a6a7-45bb-b65b-c7cfac3f557a resource=persistentvolumes
time="2024-03-28T10:22:21Z" level=info msg="label \"failure-domain.beta.kubernetes.io/zone\" is not present on PersistentVolume" backup=velero/demo-backup-3 logSource="pkg/backup/item_backupper.go:571" name=pvc-d20dfb58-a6a7-45bb-b65b-c7cfac3f557a namespace= persistentVolume=pvc-d20dfb58-a6a7-45bb-b65b-c7cfac3f557a resource=persistentvolumes
time="2024-03-28T10:22:21Z" level=info msg="zone info from nodeAffinity requirements: az2, key: topology.cinder.csi.openstack.org/zone" backup=velero/demo-backup-3 logSource="pkg/backup/item_backupper.go:574" name=pvc-d20dfb58-a6a7-45bb-b65b-c7cfac3f557a namespace= persistentVolume=pvc-d20dfb58-a6a7-45bb-b65b-c7cfac3f557a resource=persistentvolumes
time="2024-03-28T10:22:21Z" level=info msg="BlockStore.Init called" backup=velero/demo-backup-3 cmd=/plugins/velero-plugin-for-openstack config="map[backupTimeout:5m cascadeDelete:true cloneTimeout:5m containerName:backups ensureDeleted:true ensureDeletedDelay:10s imageTimeout:5m method:backup snapshotTimeout:5m volumeTimeout:5m]" logSource="/go/src/github.com/Lirt/velero-plugin-for-openstack/src/cinder/block_store.go:117" pluginName=velero-plugin-for-openstack
time="2024-03-28T10:22:21Z" level=info msg="Trying to authenticate against OpenStack using environment variables (including application credentials) or using files ~/.config/openstack/clouds.yaml, /etc/openstack/clouds.yaml and ./clouds.yaml" backup=velero/demo-backup-3 cmd=/plugins/velero-plugin-for-openstack logSource="/go/src/github.com/Lirt/velero-plugin-for-openstack/src/utils/auth.go:68" pluginName=velero-plugin-for-openstack
time="2024-03-28T10:22:22Z" level=info msg="Authentication against identity endpoint https://myOpenstackUrl:PORT/ was successful" backup=velero/demo-backup-3 cmd=/plugins/velero-plugin-for-openstack logSource="/go/src/github.com/Lirt/velero-plugin-for-openstack/src/utils/auth.go:113" pluginName=velero-plugin-for-openstack
time="2024-03-28T10:22:22Z" level=error msg="Error getting volume snapshotter for volume snapshot location" backup=velero/demo-backup-3 error="rpc error: code = Unknown desc = failed to create cinder storage client: No suitable endpoint could be found in the service catalog." logSource="pkg/backup/item_backupper.go:591" name=pvc-d20dfb58-a6a7-45bb-b65b-c7cfac3f557a namespace= persistentVolume=pvc-d20dfb58-a6a7-45bb-b65b-c7cfac3f557a resource=persistentvolumes volumeSnapshotLocation=default
time="2024-03-28T10:22:22Z" level=info msg="Persistent volume is not a supported volume type for Velero-native volumeSnapshotter snapshot, skipping." backup=velero/demo-backup-3 logSource="pkg/backup/item_backupper.go:612" name=pvc-d20dfb58-a6a7-45bb-b65b-c7cfac3f557a namespace= persistentVolume=pvc-d20dfb58-a6a7-45bb-b65b-c7cfac3f557a resource=persistentvolumes
time="2024-03-28T10:22:22Z" level=info msg="Backed up 1 items out of an estimated total of 1 (estimate will change throughout the backup)" backup=velero/demo-backup-3 logSource="pkg/backup/backup.go:405" name=pvc-d20dfb58-a6a7-45bb-b65b-c7cfac3f557a namespace= progress= resource=persistentvolumes
time="2024-03-28T10:22:22Z" level=info msg="hookTracker: map[], hookAttempted: 0, hookFailed: 0" backup=velero/demo-backup-3 logSource="pkg/backup/backup.go:436"
time="2024-03-28T10:22:22Z" level=info msg="Summary for skipped PVs: [{\"name\":\"pvc-d20dfb58-a6a7-45bb-b65b-c7cfac3f557a\",\"reasons\":[{\"approach\":\"volumeSnapshot\",\"reason\":\"no applicable volumesnapshotter found\"}]}]" backup=velero/demo-backup-3 logSource="pkg/backup/backup.go:445"
time="2024-03-28T10:22:22Z" level=info msg="Backed up a total of 1 items" backup=velero/demo-backup-3 logSource="pkg/backup/backup.go:449" progress=
KarlJJonsson commented 3 months ago

Current workaround is to add the following configuration in addition to the clouds.yaml:

configuration:
  extraEnvVars:
    OS_REGION_NAME: <myRegion>
Lirt commented 3 months ago

Hello @KarlJJonsson,

Checking the code I think we don't give Openstack config a chance to be respected :confused:. We try to override region first by ENV var OS_REGION_NAME and then by config["region"] (see the code). I will need to perform some tests to prove that and if that's right I will try to update the code to respect when the region_name is configured in clouds.yaml.

The latter one I mentioned (config["region"]) is something which could simplify your config and is officially supported (if you are not happy about current workaround until I check this topic). Cloud and region are configurable in VSL but not mentioned in the docs (I will also improve this part of documentation.)

---
apiVersion: velero.io/v1
kind: VolumeSnapshotLocation
metadata:
  name: <NAME>
  namespace: <NAMESPACE>
spec:
  provider: community.openstack.org/openstack-cinder
  config:
    cloud: openstack
    region: myRegion
    ...

Also note OS_CLOUD can be replaced by config["cloud"] in the VSL (as seen above).

Lirt commented 3 months ago

After some research I see this:

This is the part of the code that decides which endpoint from a list of endpoints in Provider object to use (gophercloud code):

                ...
                if (opts.Availability == gophercloud.Availability(endpoint.Interface)) &&
                    (opts.Region == "" || endpoint.Region == opts.Region || endpoint.RegionID == opts.Region) {
                    endpoints = append(endpoints, endpoint)
                }
                ...

It means that it searches for region if it is specified (non-empty). If region is empty, it picks the first found with "public" availability (default).

What we do in the code is this:

        region, ok := os.LookupEnv("OS_REGION_NAME")
        if !ok {
            if config["region"] != "" {
                region = config["region"]
            } else {
                region = "RegionOne"
            }
        }
        b.client, err = openstack.NewBlockStorageV3(b.provider, gophercloud.EndpointOpts{
            Region: region,
        })

So we default region to RegionOne. If there is only 1 CinderV3 endpoint, this doesn't matter. If there is more than 1 endpoint, it will prefer the one that matches region: "RegionOne".

Changing region to default to empty string "" would solve your issue. There could be possible side-effects:

  1. It could in theory break backwards compatibility in case a cloud has multiple cinders in catalog and one of them was called RegionOne.
  2. Plugin will not fail in case there is more than 1 endpoint and none of those endpoints are RegionOne. In this case the plugin will pick the first one.

On the other hand it might also be undesirable to prefer RegionOne in situation where there are more block storage regions.

Checking back in commit history I see that before v0.4.0 we defaulted region to empty string. The change to use RegionOne as default was added in v0.4.0. It makes sense for me to revert this back to empty string.

cc. @kayrus do you see this change breaking backwards compatibility in real-life scenarios?

PR draft: https://github.com/Lirt/velero-plugin-for-openstack/pull/110

KarlJJonsson commented 3 months ago

Hi @Lirt, sorry for late response. Easter got in the way.

The config section for VSL would be a good and clear enough solution for my part, I will go ahead and use this instead of the ENV var.

I don't have much insight into openstack or cinder, so I'm not aware of any standard defaults as RegionOne for example. Hence the following is just some thoughts from a outsider looking in:

When using the clouds.yaml and specifying the region_name while not specifying any region anywhere else, it feels intuitive that this would be the region picked by the plugin by default. Any additional configuration such as the config["region"] or OS_REGION_NAME would feel natural to take precedence since it's more fine grained or explicit.

This also looks slightly tricky as region in clouds.yaml doesn't neccesarilly mean that that region should be configured in Cinder.

From what I understand the regions in openstack and cinder might differ, which is why picking the clouds.yaml region_one might not be preferred? I think I would personally still prefer it to pick my specified region from clouds.yaml and have the plugin fail instead of defaulting to something unknown in the background.

This would also align with the openstack CLI as far as I can tell. If I set region_name: "NonExistingFakeRegion" in my clouds.yaml and run openstack volume list I get public endpoint for volumev3 service in NonExistingFakeRegion region not found.

KarlJJonsson commented 3 months ago

And to my understanding defaulting to an empty region would correspond to using the openstack CLI with a clouds.yaml without a region_name?

I think this is more what I had in mind:

        region, ok := os.LookupEnv("OS_REGION_NAME")
        if !ok {
            if config["region"] != "" {
                region = config["region"]
            } else if {
                // get region from clouds.yaml region_name
            } else {
                region = ""
            }
        }
        b.client, err = openstack.NewBlockStorageV3(b.provider, gophercloud.EndpointOpts{
            Region: region,
        })
Lirt commented 3 months ago

When using the clouds.yaml and specifying the region_name while not specifying any region anywhere else, it feels intuitive that this would be the region picked by the plugin by default. Any additional configuration such as the config["region"] or OS_REGION_NAME would feel natural to take precedence since it's more fine grained or explicit.

I completely agree.

Regarding the region selection part of the code it's more complicated. Basically the whole code to pick the config from clouds.yaml comes from gophercloud functions clientconfig.AuthOptions(&clientOpts) and openstack.Authenticate() plus there are more modifications to support swiftstack and and some additional options.

There isn't much flexibility regarding authentication process without possibility to break some case, so I'd like to not modify this standardized part much (reacting to this code part):

            } else if {
                // get region from clouds.yaml region_name

Simplified, the code will automatically parse OS_ variables if set and try to use them or if not pick what matches in clouds.yaml. Then if region is empty, it will pick first found.

This would also align with the openstack CLI as far as I can tell. If I set region_name: "NonExistingFakeRegion" in my clouds.yaml and run openstack volume list I get public endpoint for volumev3 service in NonExistingFakeRegion region not found.

This scenario is handled :+1: .

And if you try it with empty --os-region - openstack volume list --os-region "" - it will work as well which tells me that to match Openstack default behavior we shouldn't force region to be RegionOne, but let it be empty as last resort (default behavior).

KarlJJonsson commented 3 months ago

Did alot of digging in the codebase and I think I'm onboard on how it works now :) I agree that the else if would just complicate things further.

What you're saying is how I'd imagine it to work before writing the issue, so it sounds great

Lirt commented 3 months ago

Great!

I will review my change in a few days and maybe add more tests. Then when it's merged I'll release as new minor version and note there potentially breaking change.

Lirt commented 3 months ago

Hello again,

Just FYI, I will update some dependencies and release this change soon as v0.7.0.

Thank you for report, discussion and patience :+1: .