9da206dc7c
PVCs and CloudNativePG Clusters need S3 buckets and backup schedules
provisioned consistently. This operator watches the
backups.unkin.net/{schedule,destination} annotations on those objects and
provisions everything needed to back them up, with no new CRDs.
- Add a PVC controller that provisions cephrgw ObjectStoreUser/Bucket/BucketAccess,
auto-generates a restic repo-password Secret and creates a k8up Schedule scoped
to the PVC via spec.backup.volumes[].persistentVolumeClaim.claimName.
- Add a CNPG Cluster controller that provisions the same bucket stack, idempotently
patches spec.backup.barmanObjectStore (leaving a user-set destinationPath alone
with a Warning event) and creates a ScheduledBackup.
- Resolve destinations through a ConfigMap lookup table; requeue until the
BucketAccess is Ready before creating schedule resources; own-reference created
resources and retain bucket data by default.
- Add schedule-mapping helpers (k8up 5-field/shortcut pass-through, CNPG 6-field
seconds-first) and deterministic, length-bounded name derivation.
- Add unit tests (schedule mapping, name derivation, destination resolution) and
envtest controller tests for both paths, wiring the external CRDs into envtest.
- Add kubebuilder-generated RBAC, a Dockerfile (distroless/nonroot), Woodpecker
lint/test/build pipelines and a tag-triggered image push to the artifactapi
docker-internal registry, plus a version-bump Makefile and deploy manifests.
68 lines
1.2 KiB
YAML
68 lines
1.2 KiB
YAML
version: "2"
|
|
linters:
|
|
default: all
|
|
disable:
|
|
- depguard
|
|
- funlen
|
|
- godox
|
|
- exhaustruct
|
|
- nlreturn
|
|
- nonamedreturns
|
|
- noinlineerr
|
|
- paralleltest
|
|
- recvcheck
|
|
- testpackage
|
|
- thelper
|
|
- tparallel
|
|
- varnamelen
|
|
- whitespace
|
|
- wrapcheck
|
|
- wsl
|
|
- wsl_v5
|
|
settings:
|
|
dupl:
|
|
threshold: 200
|
|
goconst:
|
|
min-len: 2
|
|
min-occurrences: 3
|
|
cyclop:
|
|
max-complexity: 20
|
|
gocyclo:
|
|
min-complexity: 20
|
|
exhaustive:
|
|
default-signifies-exhaustive: true
|
|
default-case-required: true
|
|
lll:
|
|
line-length: 180
|
|
exclusions:
|
|
generated: lax
|
|
presets:
|
|
- comments
|
|
- common-false-positives
|
|
- legacy
|
|
- std-error-handling
|
|
paths:
|
|
- third_party$
|
|
- builtin$
|
|
- examples$
|
|
formatters:
|
|
enable:
|
|
- gofmt
|
|
- goimports
|
|
- gofumpt
|
|
exclusions:
|
|
generated: lax
|
|
paths:
|
|
- third_party$
|
|
- builtin$
|
|
- examples$
|
|
issues:
|
|
# Maximum issues count per one linter.
|
|
# Set to 0 to disable.
|
|
# Default: 50
|
|
max-issues-per-linter: 0
|
|
# Maximum count of issues with the same text.
|
|
# Set to 0 to disable.
|
|
# Default: 3
|
|
max-same-issues: 0
|