#
tokens: 65471/50000 1/898 files (page 96/126)
lines: on (toggle) GitHub
raw markdown copy reset
This is page 96 of 126. Use http://codebase.md/controlplaneio-fluxcd/flux-operator?lines=true&page={x} to view the full context.

# Directory Structure

```
├── .github
│   ├── actions
│   │   └── runner-cleanup
│   │       └── action.yml
│   ├── copilot-instructions.md
│   ├── dependabot.yaml
│   └── workflows
│       ├── actions-test.yaml
│       ├── e2e-olm.yaml
│       ├── preview.yaml
│       ├── push-manifests.yaml
│       ├── release.yaml
│       └── test.yaml
├── .gitignore
├── .golangci.yml
├── .goreleaser.yml
├── actions
│   └── setup
│       ├── action.yaml
│       └── README.md
├── AGENTS.md
├── api
│   └── v1
│       ├── common_types_test.go
│       ├── common_types.go
│       ├── fluxinstance_types.go
│       ├── fluxreport_types.go
│       ├── groupversion_info.go
│       ├── history_types_test.go
│       ├── history_types.go
│       ├── resourceset_types.go
│       ├── resourcesetinputprovider_types.go
│       ├── schedule_types.go
│       └── zz_generated.deepcopy.go
├── cmd
│   ├── cli
│   │   ├── build_instance.go
│   │   ├── build_resourceset_test.go
│   │   ├── build_resourceset.go
│   │   ├── build.go
│   │   ├── client.go
│   │   ├── completion_bash.go
│   │   ├── completion_fish.go
│   │   ├── completion_powershell.go
│   │   ├── completion_zsh.go
│   │   ├── completion.go
│   │   ├── create_secret_basicauth_test.go
│   │   ├── create_secret_basicauth.go
│   │   ├── create_secret_githubapp.go
│   │   ├── create_secret_proxy_test.go
│   │   ├── create_secret_proxy.go
│   │   ├── create_secret_registry_test.go
│   │   ├── create_secret_registry.go
│   │   ├── create_secret_sops_test.go
│   │   ├── create_secret_sops.go
│   │   ├── create_secret_ssh.go
│   │   ├── create_secret_tls.go
│   │   ├── create_secret.go
│   │   ├── create.go
│   │   ├── debug_web_cookie.go
│   │   ├── debug_web.go
│   │   ├── debug.go
│   │   ├── delete_inputprovider_test.go
│   │   ├── delete_inputprovider.go
│   │   ├── delete_instance_test.go
│   │   ├── delete_instance.go
│   │   ├── delete_resourceset_test.go
│   │   ├── delete_resourceset.go
│   │   ├── delete.go
│   │   ├── distro_decrypt_manifests_test.go
│   │   ├── distro_decrypt_manifests.go
│   │   ├── distro_decrypt_token_test.go
│   │   ├── distro_decrypt_token.go
│   │   ├── distro_decrypt.go
│   │   ├── distro_encrypt_manifests_test.go
│   │   ├── distro_encrypt_manifests.go
│   │   ├── distro_encrypt_token_test.go
│   │   ├── distro_encrypt_token.go
│   │   ├── distro_encrypt.go
│   │   ├── distro_keygen_enc_test.go
│   │   ├── distro_keygen_enc.go
│   │   ├── distro_keygen_sig_test.go
│   │   ├── distro_keygen_sig.go
│   │   ├── distro_keygen.go
│   │   ├── distro_revoke_license_key_test.go
│   │   ├── distro_revoke_license_key.go
│   │   ├── distro_revoke.go
│   │   ├── distro_sign_artifacts_test.go
│   │   ├── distro_sign_artifacts.go
│   │   ├── distro_sign_license_key_test.go
│   │   ├── distro_sign_license_key.go
│   │   ├── distro_sign_manifests_test.go
│   │   ├── distro_sign_manifests.go
│   │   ├── distro_sign.go
│   │   ├── distro_verify_artifacts_test.go
│   │   ├── distro_verify_artifacts.go
│   │   ├── distro_verify_license_key_test.go
│   │   ├── distro_verify_license_key.go
│   │   ├── distro_verify_manifests_test.go
│   │   ├── distro_verify_manifests.go
│   │   ├── distro_verify.go
│   │   ├── distro.go
│   │   ├── Dockerfile
│   │   ├── export_report_test.go
│   │   ├── export_report.go
│   │   ├── export_resource_test.go
│   │   ├── export_resource.go
│   │   ├── export.go
│   │   ├── get_inputprovider_test.go
│   │   ├── get_inputprovider.go
│   │   ├── get_instance.go
│   │   ├── get_resources.go
│   │   ├── get_resourceset_test.go
│   │   ├── get_resourceset.go
│   │   ├── get.go
│   │   ├── install.go
│   │   ├── main.go
│   │   ├── README.md
│   │   ├── reconcile_inputprovider.go
│   │   ├── reconcile_instance.go
│   │   ├── reconcile_resource.go
│   │   ├── reconcile_resources.go
│   │   ├── reconcile_resourceset.go
│   │   ├── reconcile.go
│   │   ├── resume_inputprovider.go
│   │   ├── resume_instance.go
│   │   ├── resume_resource.go
│   │   ├── resume_resourceset.go
│   │   ├── resume.go
│   │   ├── stats.go
│   │   ├── suite_test.go
│   │   ├── suspend_inputprovider.go
│   │   ├── suspend_instance.go
│   │   ├── suspend_resource.go
│   │   ├── suspend_resourceset.go
│   │   ├── suspend.go
│   │   ├── testdata
│   │   │   └── build_resourceset
│   │   │       ├── golden-labeled.yaml
│   │   │       ├── golden-named.yaml
│   │   │       ├── golden-permuted.yaml
│   │   │       ├── golden.yaml
│   │   │       ├── inputs.yaml
│   │   │       ├── rset-standalone.yaml
│   │   │       ├── rset-with-rsip-labeled.yaml
│   │   │       ├── rset-with-rsip-named.yaml
│   │   │       ├── rset-with-rsip-permuted.yaml
│   │   │       ├── rset-with-rsip.yaml
│   │   │       ├── rsip-labeled.yaml
│   │   │       ├── rsip-named.yaml
│   │   │       └── rsip.yaml
│   │   ├── trace_test.go
│   │   ├── trace_types.go
│   │   ├── trace.go
│   │   ├── tree_helmrelease.go
│   │   ├── tree_kustomization.go
│   │   ├── tree_resourceset_test.go
│   │   ├── tree_resourceset.go
│   │   ├── tree.go
│   │   ├── uninstall.go
│   │   ├── version_test.go
│   │   ├── version.go
│   │   ├── wait_inputprovider_test.go
│   │   ├── wait_inputprovider.go
│   │   ├── wait_instance_test.go
│   │   ├── wait_instance.go
│   │   ├── wait_resourceset_test.go
│   │   ├── wait_resourceset.go
│   │   └── wait.go
│   ├── mcp
│   │   ├── Dockerfile
│   │   ├── k8s
│   │   │   ├── actions_test.go
│   │   │   ├── actions.go
│   │   │   ├── client_test.go
│   │   │   ├── client.go
│   │   │   ├── config.go
│   │   │   ├── events_test.go
│   │   │   ├── events.go
│   │   │   ├── export_test.go
│   │   │   ├── export.go
│   │   │   ├── helm.go
│   │   │   ├── logs.go
│   │   │   ├── metrics.go
│   │   │   └── suite_test.go
│   │   ├── main.go
│   │   ├── prompter
│   │   │   ├── debug_helmrelease_test.go
│   │   │   ├── debug_helmrelease.go
│   │   │   ├── debug_kustomization_test.go
│   │   │   ├── debug_kustomization.go
│   │   │   ├── index.go
│   │   │   └── manager.go
│   │   ├── README.md
│   │   └── toolbox
│   │       ├── apply_manifest_test.go
│   │       ├── apply_manifest.go
│   │       ├── delete_resource_test.go
│   │       ├── delete_resource.go
│   │       ├── get_apis_test.go
│   │       ├── get_apis.go
│   │       ├── get_contexts_test.go
│   │       ├── get_contexts.go
│   │       ├── get_instance_test.go
│   │       ├── get_instance.go
│   │       ├── get_logs_test.go
│   │       ├── get_logs.go
│   │       ├── get_metrics_test.go
│   │       ├── get_metrics.go
│   │       ├── get_resource_test.go
│   │       ├── get_resource.go
│   │       ├── helpers.go
│   │       ├── indexer
│   │       │   └── main.go
│   │       ├── install_instance_test.go
│   │       ├── install_instance.go
│   │       ├── library
│   │       │   ├── bm25_test.go
│   │       │   ├── bm25.go
│   │       │   ├── index.go
│   │       │   ├── index.gob
│   │       │   ├── library.go
│   │       │   ├── search_test.go
│   │       │   ├── search.go
│   │       │   ├── tokenizer_test.go
│   │       │   └── tokenizer.go
│   │       ├── manager_test.go
│   │       ├── manager.go
│   │       ├── reconcile_helmrelease_test.go
│   │       ├── reconcile_helmrelease.go
│   │       ├── reconcile_kustomization_test.go
│   │       ├── reconcile_kustomization.go
│   │       ├── reconcile_resourceset_test.go
│   │       ├── reconcile_resourceset.go
│   │       ├── reconcile_source_test.go
│   │       ├── reconcile_source.go
│   │       ├── resume_reconciliation_test.go
│   │       ├── resume_reconciliation.go
│   │       ├── scopes_test.go
│   │       ├── scopes.go
│   │       ├── search_flux_docs_test.go
│   │       ├── search_flux_docs.go
│   │       ├── set_context_test.go
│   │       ├── set_context.go
│   │       ├── suspend_reconciliation_test.go
│   │       ├── suspend_reconciliation.go
│   │       └── testdata
│   │           ├── kubeconfig_golden.yaml
│   │           └── kubeconfig.yaml
│   └── operator
│       └── main.go
├── config
│   ├── crd
│   │   ├── bases
│   │   │   ├── fluxcd.controlplane.io_fluxinstances.yaml
│   │   │   ├── fluxcd.controlplane.io_fluxreports.yaml
│   │   │   ├── fluxcd.controlplane.io_resourcesetinputproviders.yaml
│   │   │   └── fluxcd.controlplane.io_resourcesets.yaml
│   │   ├── kustomization.yaml
│   │   └── kustomizeconfig.yaml
│   ├── data
│   │   ├── flux
│   │   │   ├── v2.2.3
│   │   │   │   ├── helm-controller.yaml
│   │   │   │   ├── image-automation-controller.yaml
│   │   │   │   ├── image-reflector-controller.yaml
│   │   │   │   ├── kustomize-controller.yaml
│   │   │   │   ├── notification-controller.yaml
│   │   │   │   ├── policies.yaml
│   │   │   │   ├── rbac.yaml
│   │   │   │   └── source-controller.yaml
│   │   │   ├── v2.3.0
│   │   │   │   ├── helm-controller.yaml
│   │   │   │   ├── image-automation-controller.yaml
│   │   │   │   ├── image-reflector-controller.yaml
│   │   │   │   ├── kustomize-controller.yaml
│   │   │   │   ├── notification-controller.yaml
│   │   │   │   ├── policies.yaml
│   │   │   │   ├── rbac.yaml
│   │   │   │   └── source-controller.yaml
│   │   │   ├── v2.4.0
│   │   │   │   ├── helm-controller.yaml
│   │   │   │   ├── image-automation-controller.yaml
│   │   │   │   ├── image-reflector-controller.yaml
│   │   │   │   ├── kustomize-controller.yaml
│   │   │   │   ├── notification-controller.yaml
│   │   │   │   ├── policies.yaml
│   │   │   │   ├── rbac.yaml
│   │   │   │   └── source-controller.yaml
│   │   │   ├── v2.5.0
│   │   │   │   ├── helm-controller.yaml
│   │   │   │   ├── image-automation-controller.yaml
│   │   │   │   ├── image-reflector-controller.yaml
│   │   │   │   ├── kustomize-controller.yaml
│   │   │   │   ├── notification-controller.yaml
│   │   │   │   ├── policies.yaml
│   │   │   │   ├── rbac.yaml
│   │   │   │   └── source-controller.yaml
│   │   │   ├── v2.5.1
│   │   │   │   ├── helm-controller.yaml
│   │   │   │   ├── image-automation-controller.yaml
│   │   │   │   ├── image-reflector-controller.yaml
│   │   │   │   ├── kustomize-controller.yaml
│   │   │   │   ├── notification-controller.yaml
│   │   │   │   ├── policies.yaml
│   │   │   │   ├── rbac.yaml
│   │   │   │   └── source-controller.yaml
│   │   │   ├── v2.6.0
│   │   │   │   ├── helm-controller.yaml
│   │   │   │   ├── image-automation-controller.yaml
│   │   │   │   ├── image-reflector-controller.yaml
│   │   │   │   ├── kustomize-controller.yaml
│   │   │   │   ├── notification-controller.yaml
│   │   │   │   ├── policies.yaml
│   │   │   │   ├── rbac.yaml
│   │   │   │   └── source-controller.yaml
│   │   │   ├── v2.6.1
│   │   │   │   ├── helm-controller.yaml
│   │   │   │   ├── image-automation-controller.yaml
│   │   │   │   ├── image-reflector-controller.yaml
│   │   │   │   ├── kustomize-controller.yaml
│   │   │   │   ├── notification-controller.yaml
│   │   │   │   ├── policies.yaml
│   │   │   │   ├── rbac.yaml
│   │   │   │   └── source-controller.yaml
│   │   │   ├── v2.6.2
│   │   │   │   ├── helm-controller.yaml
│   │   │   │   ├── image-automation-controller.yaml
│   │   │   │   ├── image-reflector-controller.yaml
│   │   │   │   ├── kustomize-controller.yaml
│   │   │   │   ├── notification-controller.yaml
│   │   │   │   ├── policies.yaml
│   │   │   │   ├── rbac.yaml
│   │   │   │   └── source-controller.yaml
│   │   │   ├── v2.6.3
│   │   │   │   ├── helm-controller.yaml
│   │   │   │   ├── image-automation-controller.yaml
│   │   │   │   ├── image-reflector-controller.yaml
│   │   │   │   ├── kustomize-controller.yaml
│   │   │   │   ├── notification-controller.yaml
│   │   │   │   ├── policies.yaml
│   │   │   │   ├── rbac.yaml
│   │   │   │   └── source-controller.yaml
│   │   │   ├── v2.6.4
│   │   │   │   ├── helm-controller.yaml
│   │   │   │   ├── image-automation-controller.yaml
│   │   │   │   ├── image-reflector-controller.yaml
│   │   │   │   ├── kustomize-controller.yaml
│   │   │   │   ├── notification-controller.yaml
│   │   │   │   ├── policies.yaml
│   │   │   │   ├── rbac.yaml
│   │   │   │   └── source-controller.yaml
│   │   │   ├── v2.7.0
│   │   │   │   ├── helm-controller.yaml
│   │   │   │   ├── image-automation-controller.yaml
│   │   │   │   ├── image-reflector-controller.yaml
│   │   │   │   ├── kustomize-controller.yaml
│   │   │   │   ├── notification-controller.yaml
│   │   │   │   ├── policies.yaml
│   │   │   │   ├── rbac.yaml
│   │   │   │   ├── source-controller.yaml
│   │   │   │   └── source-watcher.yaml
│   │   │   ├── v2.7.1
│   │   │   │   ├── helm-controller.yaml
│   │   │   │   ├── image-automation-controller.yaml
│   │   │   │   ├── image-reflector-controller.yaml
│   │   │   │   ├── kustomize-controller.yaml
│   │   │   │   ├── notification-controller.yaml
│   │   │   │   ├── policies.yaml
│   │   │   │   ├── rbac.yaml
│   │   │   │   ├── source-controller.yaml
│   │   │   │   └── source-watcher.yaml
│   │   │   ├── v2.7.2
│   │   │   │   ├── helm-controller.yaml
│   │   │   │   ├── image-automation-controller.yaml
│   │   │   │   ├── image-reflector-controller.yaml
│   │   │   │   ├── kustomize-controller.yaml
│   │   │   │   ├── notification-controller.yaml
│   │   │   │   ├── policies.yaml
│   │   │   │   ├── rbac.yaml
│   │   │   │   ├── source-controller.yaml
│   │   │   │   └── source-watcher.yaml
│   │   │   ├── v2.7.3
│   │   │   │   ├── helm-controller.yaml
│   │   │   │   ├── image-automation-controller.yaml
│   │   │   │   ├── image-reflector-controller.yaml
│   │   │   │   ├── kustomize-controller.yaml
│   │   │   │   ├── notification-controller.yaml
│   │   │   │   ├── policies.yaml
│   │   │   │   ├── rbac.yaml
│   │   │   │   ├── source-controller.yaml
│   │   │   │   └── source-watcher.yaml
│   │   │   ├── v2.7.4
│   │   │   │   ├── helm-controller.yaml
│   │   │   │   ├── image-automation-controller.yaml
│   │   │   │   ├── image-reflector-controller.yaml
│   │   │   │   ├── kustomize-controller.yaml
│   │   │   │   ├── notification-controller.yaml
│   │   │   │   ├── policies.yaml
│   │   │   │   ├── rbac.yaml
│   │   │   │   ├── source-controller.yaml
│   │   │   │   └── source-watcher.yaml
│   │   │   └── v2.7.5
│   │   │       ├── helm-controller.yaml
│   │   │       ├── image-automation-controller.yaml
│   │   │       ├── image-reflector-controller.yaml
│   │   │       ├── kustomize-controller.yaml
│   │   │       ├── notification-controller.yaml
│   │   │       ├── policies.yaml
│   │   │       ├── rbac.yaml
│   │   │       ├── source-controller.yaml
│   │   │       └── source-watcher.yaml
│   │   ├── flux-images
│   │   │   ├── v2.2.0
│   │   │   │   ├── enterprise-alpine.yaml
│   │   │   │   ├── enterprise-distroless.yaml
│   │   │   │   └── upstream-alpine.yaml
│   │   │   ├── v2.2.1
│   │   │   │   ├── enterprise-alpine.yaml
│   │   │   │   ├── enterprise-distroless.yaml
│   │   │   │   └── upstream-alpine.yaml
│   │   │   ├── v2.2.2
│   │   │   │   ├── enterprise-alpine.yaml
│   │   │   │   ├── enterprise-distroless.yaml
│   │   │   │   └── upstream-alpine.yaml
│   │   │   ├── v2.2.3
│   │   │   │   ├── enterprise-alpine.yaml
│   │   │   │   ├── enterprise-distroless.yaml
│   │   │   │   └── upstream-alpine.yaml
│   │   │   ├── v2.3.0
│   │   │   │   ├── enterprise-alpine.yaml
│   │   │   │   ├── enterprise-distroless.yaml
│   │   │   │   └── upstream-alpine.yaml
│   │   │   ├── v2.4.0
│   │   │   │   ├── enterprise-alpine.yaml
│   │   │   │   ├── enterprise-distroless.yaml
│   │   │   │   └── upstream-alpine.yaml
│   │   │   ├── v2.5.0
│   │   │   │   ├── enterprise-alpine.yaml
│   │   │   │   ├── enterprise-distroless.yaml
│   │   │   │   └── upstream-alpine.yaml
│   │   │   ├── v2.5.1
│   │   │   │   ├── enterprise-alpine.yaml
│   │   │   │   ├── enterprise-distroless-fips.yaml
│   │   │   │   ├── enterprise-distroless.yaml
│   │   │   │   └── upstream-alpine.yaml
│   │   │   ├── v2.6.0
│   │   │   │   ├── enterprise-alpine.yaml
│   │   │   │   ├── enterprise-distroless.yaml
│   │   │   │   └── upstream-alpine.yaml
│   │   │   ├── v2.6.1
│   │   │   │   ├── enterprise-alpine.yaml
│   │   │   │   ├── enterprise-distroless.yaml
│   │   │   │   └── upstream-alpine.yaml
│   │   │   ├── v2.6.2
│   │   │   │   ├── enterprise-alpine.yaml
│   │   │   │   ├── enterprise-distroless.yaml
│   │   │   │   └── upstream-alpine.yaml
│   │   │   ├── v2.6.3
│   │   │   │   ├── enterprise-alpine.yaml
│   │   │   │   ├── enterprise-distroless.yaml
│   │   │   │   └── upstream-alpine.yaml
│   │   │   ├── v2.6.4
│   │   │   │   ├── enterprise-alpine.yaml
│   │   │   │   ├── enterprise-distroless-fips.yaml
│   │   │   │   ├── enterprise-distroless.yaml
│   │   │   │   └── upstream-alpine.yaml
│   │   │   ├── v2.7.0
│   │   │   │   ├── enterprise-alpine.yaml
│   │   │   │   ├── enterprise-distroless.yaml
│   │   │   │   └── upstream-alpine.yaml
│   │   │   ├── v2.7.1
│   │   │   │   ├── enterprise-alpine.yaml
│   │   │   │   ├── enterprise-distroless.yaml
│   │   │   │   └── upstream-alpine.yaml
│   │   │   ├── v2.7.2
│   │   │   │   ├── enterprise-alpine.yaml
│   │   │   │   ├── enterprise-distroless.yaml
│   │   │   │   └── upstream-alpine.yaml
│   │   │   ├── v2.7.3
│   │   │   │   ├── enterprise-alpine.yaml
│   │   │   │   ├── enterprise-distroless.yaml
│   │   │   │   └── upstream-alpine.yaml
│   │   │   ├── v2.7.4
│   │   │   │   ├── enterprise-alpine.yaml
│   │   │   │   ├── enterprise-distroless.yaml
│   │   │   │   └── upstream-alpine.yaml
│   │   │   ├── v2.7.5
│   │   │   │   ├── enterprise-alpine.yaml
│   │   │   │   ├── enterprise-distroless-fips.yaml
│   │   │   │   ├── enterprise-distroless.yaml
│   │   │   │   └── upstream-alpine.yaml
│   │   │   └── VERSION
│   │   └── flux-vex
│   │       ├── v2.2.json
│   │       ├── v2.3.json
│   │       ├── v2.4.json
│   │       ├── v2.5.json
│   │       ├── v2.6.json
│   │       └── v2.7.json
│   ├── default
│   │   ├── kustomization.yaml
│   │   ├── namespace.yaml
│   │   └── rbac.yaml
│   ├── manager
│   │   ├── account.yaml
│   │   ├── deployment.yaml
│   │   ├── kustomization.yaml
│   │   └── service.yaml
│   ├── mcp
│   │   ├── deployment.yaml
│   │   ├── kustomization.yaml
│   │   └── service.yaml
│   ├── monitoring
│   │   ├── dashboards
│   │   │   ├── flux-k8s-api-performance.json
│   │   │   └── flux-performance.json
│   │   ├── flux-controllers.yaml
│   │   ├── flux-operator.yaml
│   │   └── kustomization.yaml
│   ├── olm
│   │   ├── build
│   │   │   └── Dockerfile
│   │   ├── bundle
│   │   │   ├── manifests
│   │   │   │   ├── flux-operator.clusterserviceversion.yaml
│   │   │   │   ├── flux-operator.service.yaml
│   │   │   │   ├── fluxinstances.fluxcd.controlplane.io.crd.yaml
│   │   │   │   ├── fluxreports.fluxcd.controlplane.io.crd.yaml
│   │   │   │   ├── resourcesetinputproviders.fluxcd.controlplane.io.crd.yaml
│   │   │   │   └── resourcesets.fluxcd.controlplane.io.crd.yaml
│   │   │   ├── metadata
│   │   │   │   └── annotations.yaml
│   │   │   └── tests
│   │   │       └── scorecard
│   │   │           └── config.yaml
│   │   ├── ci.yaml
│   │   └── test
│   │       ├── bundle.Dockerfile
│   │       ├── olm.yaml
│   │       └── opm.Dockerfile
│   ├── rbac
│   │   ├── fluxinstance_editor_role.yaml
│   │   ├── fluxinstance_viewer_role.yaml
│   │   ├── fluxreport_editor_role.yaml
│   │   ├── fluxreport_viewer_role.yaml
│   │   ├── kustomization.yaml
│   │   ├── leader_election_role_binding.yaml
│   │   ├── leader_election_role.yaml
│   │   ├── resourceset_editor_role.yaml
│   │   ├── resourceset_viewer_role.yaml
│   │   ├── role_binding.yaml
│   │   ├── role.yaml
│   │   └── service_account.yaml
│   ├── samples
│   │   ├── fluxcd_v1_fluxinstance.yaml
│   │   ├── fluxcd_v1_fluxreport.yaml
│   │   ├── fluxcd_v1_resourceset.yaml
│   │   ├── fluxcd_v1_resourcesetinputprovider.yaml
│   │   └── kustomization.yaml
│   └── terraform
│       ├── main.tf
│       ├── outputs.tf
│       ├── providers.tf
│       ├── README.md
│       ├── values
│       │   └── components.yaml
│       ├── variables.tf
│       └── versions.tf
├── CONTRIBUTING.md
├── Dockerfile
├── docs
│   ├── api
│   │   └── v1
│   │       ├── fluxinstance.md
│   │       ├── fluxreport.md
│   │       ├── resourceset.md
│   │       └── resourcesetinputprovider.md
│   ├── dev
│   │   └── README.md
│   ├── guides
│   │   ├── instance
│   │   │   ├── instance-controllers.md
│   │   │   ├── instance-customization.md
│   │   │   ├── instance-monitoring.md
│   │   │   ├── instance-sharding.md
│   │   │   └── instance-sync.md
│   │   ├── operator
│   │   │   ├── operator-install.md
│   │   │   └── operator-migration.md
│   │   └── resourcesets
│   │       ├── rset-app-definition.md
│   │       ├── rset-github-pull-requests.md
│   │       ├── rset-gitlab-environments.md
│   │       ├── rset-gitlab-merge-requests.md
│   │       ├── rset-image-automation.md
│   │       ├── rset-introduction.md
│   │       └── rset-time-based-delivery.md
│   ├── lkm
│   │   └── README.md
│   ├── logo
│   │   ├── flux-operator-banner.png
│   │   ├── flux-operator-banner.svg
│   │   ├── flux-operator-icon.png
│   │   ├── flux-operator-icon.svg
│   │   ├── flux-operator-logo.png
│   │   └── flux-operator-logo.svg
│   ├── mcp
│   │   ├── instructions.md
│   │   ├── mcp-config.md
│   │   ├── mcp-install.md
│   │   ├── mcp-prompting.md
│   │   ├── prompts.md
│   │   └── tools.md
│   └── web
│       ├── web-config-api.md
│       ├── web-ingress.md
│       ├── web-sso-dex.md
│       ├── web-sso-keycloak.md
│       ├── web-sso-openshift.md
│       ├── web-standalone.md
│       └── web-user-management.md
├── go.mod
├── go.sum
├── hack
│   ├── boilerplate.go.txt
│   ├── build-dist-manifests.sh
│   ├── build-olm-images.sh
│   ├── build-olm-manifests.sh
│   ├── install-operator-sdk.sh
│   ├── prep-release.sh
│   ├── vendor-flux-manifests.sh
│   └── web-ui-load-test.sh
├── internal
│   ├── builder
│   │   ├── build_test.go
│   │   ├── build.go
│   │   ├── components.go
│   │   ├── digest.go
│   │   ├── images_test.go
│   │   ├── images.go
│   │   ├── options.go
│   │   ├── preflight_test.go
│   │   ├── preflight.go
│   │   ├── profiles.go
│   │   ├── pull.go
│   │   ├── resourceset_test.go
│   │   ├── resourceset.go
│   │   ├── result.go
│   │   ├── semver_test.go
│   │   ├── semver.go
│   │   ├── templates.go
│   │   ├── testdata
│   │   │   ├── flux
│   │   │   │   ├── v2.2.0
│   │   │   │   │   └── .gitkeep
│   │   │   │   ├── v2.2.1
│   │   │   │   │   └── .gitkeep
│   │   │   │   └── v2.3.0
│   │   │   │       └── .gitkeep
│   │   │   ├── flux-images
│   │   │   │   └── v2.3.0
│   │   │   │       ├── enterprise-alpine.yaml
│   │   │   │       ├── enterprise-distroless.yaml
│   │   │   │       └── upstream-alpine.yaml
│   │   │   ├── resourceset
│   │   │   │   ├── dedup.golden.yaml
│   │   │   │   ├── dedup.yaml
│   │   │   │   ├── empty.yaml
│   │   │   │   ├── exclude.golden.yaml
│   │   │   │   ├── exclude.yaml
│   │   │   │   ├── invalid-output.yaml
│   │   │   │   ├── missing-inputs.yaml
│   │   │   │   ├── multi-doc-template.golden.yaml
│   │   │   │   ├── multi-doc-template.yaml
│   │   │   │   ├── nestedinputs.golden.yaml
│   │   │   │   ├── nestedinputs.yaml
│   │   │   │   ├── noinputs.golden.yaml
│   │   │   │   ├── noinputs.yaml
│   │   │   │   ├── slugify.golden.yaml
│   │   │   │   └── slugify.yaml
│   │   │   ├── v2.3.0
│   │   │   │   ├── helm-controller.yaml
│   │   │   │   ├── image-automation-controller.yaml
│   │   │   │   ├── image-reflector-controller.yaml
│   │   │   │   ├── kustomize-controller.yaml
│   │   │   │   ├── notification-controller.yaml
│   │   │   │   ├── policies.yaml
│   │   │   │   ├── rbac.yaml
│   │   │   │   └── source-controller.yaml
│   │   │   ├── v2.3.0-golden
│   │   │   │   ├── default.kustomization.yaml
│   │   │   │   ├── patches.kustomization.yaml
│   │   │   │   ├── profiles.kustomization.yaml
│   │   │   │   ├── sharding.kustomization.yaml
│   │   │   │   ├── storage.kustomization.yaml
│   │   │   │   └── sync.kustomization.yaml
│   │   │   ├── v2.6.0
│   │   │   │   ├── helm-controller.yaml
│   │   │   │   ├── image-automation-controller.yaml
│   │   │   │   ├── image-reflector-controller.yaml
│   │   │   │   ├── kustomize-controller.yaml
│   │   │   │   ├── notification-controller.yaml
│   │   │   │   ├── policies.yaml
│   │   │   │   ├── rbac.yaml
│   │   │   │   └── source-controller.yaml
│   │   │   ├── v2.6.0-golden
│   │   │   │   ├── shard1.kustomization.yaml
│   │   │   │   ├── shard2.kustomization.yaml
│   │   │   │   ├── sharding.kustomization.yaml
│   │   │   │   ├── size.large.kustomization.yaml
│   │   │   │   ├── size.medium.kustomization.yaml
│   │   │   │   └── size.small.kustomization.yaml
│   │   │   ├── v2.7.0
│   │   │   │   ├── helm-controller.yaml
│   │   │   │   ├── image-automation-controller.yaml
│   │   │   │   ├── image-reflector-controller.yaml
│   │   │   │   ├── kustomize-controller.yaml
│   │   │   │   ├── notification-controller.yaml
│   │   │   │   ├── policies.yaml
│   │   │   │   ├── rbac.yaml
│   │   │   │   ├── source-controller.yaml
│   │   │   │   └── source-watcher.yaml
│   │   │   └── v2.7.0-golden
│   │   │       └── source-watcher.kustomization.yaml
│   │   └── workload_identity.go
│   ├── controller
│   │   ├── common.go
│   │   ├── entitlement_controller_test.go
│   │   ├── entitlement_controller.go
│   │   ├── fluxinstance_artifact_controller_test.go
│   │   ├── fluxinstance_artifact_controller.go
│   │   ├── fluxinstance_artifact_manager_test.go
│   │   ├── fluxinstance_artifact_manager.go
│   │   ├── fluxinstance_controller_test.go
│   │   ├── fluxinstance_controller.go
│   │   ├── fluxinstance_manager.go
│   │   ├── fluxinstance_migrator.go
│   │   ├── fluxinstance_uninstaller.go
│   │   ├── fluxreport_controller_test.go
│   │   ├── fluxreport_controller.go
│   │   ├── resourceset_controller_test.go
│   │   ├── resourceset_controller.go
│   │   ├── resourceset_manager_test.go
│   │   ├── resourceset_manager.go
│   │   ├── resourcesetinputprovider_controller_git_test.go
│   │   ├── resourcesetinputprovider_controller_oci_test.go
│   │   ├── resourcesetinputprovider_controller_test.go
│   │   ├── resourcesetinputprovider_controller.go
│   │   ├── resourcesetinputprovider_manager.go
│   │   ├── suite_test.go
│   │   └── testdata
│   │       └── rsa-private-key.pem
│   ├── entitlement
│   │   ├── aws.go
│   │   ├── client_test.go
│   │   ├── client.go
│   │   ├── default_test.go
│   │   └── default.go
│   ├── filtering
│   │   ├── filters_test.go
│   │   └── filters.go
│   ├── gitprovider
│   │   ├── azuredevops_test.go
│   │   ├── azuredevops.go
│   │   ├── github_test.go
│   │   ├── github.go
│   │   ├── gitlab_test.go
│   │   ├── gitlab.go
│   │   ├── interface.go
│   │   ├── options.go
│   │   ├── result_test.go
│   │   └── result.go
│   ├── inputs
│   │   ├── combine_test.go
│   │   ├── combine.go
│   │   ├── flattener.go
│   │   ├── id.go
│   │   ├── json_test.go
│   │   ├── json.go
│   │   ├── keys_test.go
│   │   ├── keys.go
│   │   ├── permuter_test.go
│   │   ├── permuter.go
│   │   └── provider.go
│   ├── install
│   │   ├── autoupdate.go
│   │   ├── client.go
│   │   ├── credentials.go
│   │   ├── deploy.go
│   │   ├── download.go
│   │   ├── events.go
│   │   ├── installer.go
│   │   ├── options.go
│   │   └── uninstall.go
│   ├── inventory
│   │   ├── inventory_test.go
│   │   ├── inventory.go
│   │   ├── reader_test.go
│   │   ├── reader.go
│   │   └── testdata
│   │       ├── inventory1.yaml
│   │       └── inventory2.yaml
│   ├── lkm
│   │   ├── artifacts_attestation_test.go
│   │   ├── artifacts_attestation.go
│   │   ├── attestation_test.go
│   │   ├── attestation.go
│   │   ├── doc.go
│   │   ├── errors.go
│   │   ├── fetch_test.go
│   │   ├── fetch.go
│   │   ├── jwe_test.go
│   │   ├── jwe.go
│   │   ├── jwt_test.go
│   │   ├── jwt.go
│   │   ├── keygen_test.go
│   │   ├── keygen.go
│   │   ├── keyset_test.go
│   │   ├── keyset.go
│   │   ├── license_test.go
│   │   ├── license.go
│   │   ├── licensekey.go
│   │   ├── manifests_attestation_test.go
│   │   ├── manifests_attestation.go
│   │   ├── revocation_test.go
│   │   └── revocation.go
│   ├── notifier
│   │   └── notifier.go
│   ├── reporter
│   │   ├── cluster.go
│   │   ├── components.go
│   │   ├── crds.go
│   │   ├── distribution.go
│   │   ├── metrics_test.go
│   │   ├── metrics.go
│   │   ├── reconcilers.go
│   │   ├── reporter.go
│   │   └── sync.go
│   ├── schedule
│   │   ├── scheduler_test.go
│   │   └── scheduler.go
│   ├── tests
│   │   ├── fluxinstance
│   │   │   ├── health_check_test.go
│   │   │   └── suite_test.go
│   │   └── resourceset
│   │       ├── health_check_test.go
│   │       └── suite_test.go
│   ├── testutils
│   │   ├── log.go
│   │   └── time.go
│   └── web
│       ├── action_test.go
│       ├── action.go
│       ├── auth
│       │   ├── claims_test.go
│       │   ├── claims.go
│       │   ├── cookies_test.go
│       │   ├── cookies.go
│       │   ├── errors_test.go
│       │   ├── errors.go
│       │   ├── middlewares_test.go
│       │   ├── middlewares.go
│       │   ├── oauth2_test.go
│       │   ├── oauth2.go
│       │   └── oidc.go
│       ├── config
│       │   ├── authentication_types_test.go
│       │   ├── authentication_types.go
│       │   ├── config_types_test.go
│       │   ├── config_types.go
│       │   ├── groupversion_info.go
│       │   ├── loader_test.go
│       │   ├── loader.go
│       │   ├── user_actions_types_test.go
│       │   ├── user_actions_types.go
│       │   └── watcher.go
│       ├── events_test.go
│       ├── events.go
│       ├── favorites_test.go
│       ├── favorites.go
│       ├── fs.go
│       ├── handler.go
│       ├── inventory.go
│       ├── kubeclient
│       │   ├── client_test.go
│       │   ├── client.go
│       │   └── suite_test.go
│       ├── middlewares_test.go
│       ├── middlewares.go
│       ├── report_test.go
│       ├── report.go
│       ├── resource_test.go
│       ├── resource.go
│       ├── resources_test.go
│       ├── resources.go
│       ├── search_test.go
│       ├── search.go
│       ├── server_test.go
│       ├── server.go
│       ├── source.go
│       ├── suite_test.go
│       ├── user
│       │   ├── user_test.go
│       │   └── user.go
│       ├── workload_test.go
│       ├── workload.go
│       ├── workloads_test.go
│       └── workloads.go
├── LICENSE
├── Makefile
├── PROJECT
├── README.md
├── SECURITY.md
├── test
│   ├── e2e
│   │   ├── e2e_suite_test.go
│   │   ├── e2e_test.go
│   │   ├── instance_test.go
│   │   └── utils.go
│   └── olm
│       ├── e2e_suite_test.go
│       ├── e2e_test.go
│       ├── instance_test.go
│       └── scorecard_test.go
└── web
    ├── .gitignore
    ├── embed.go
    ├── eslint.config.js
    ├── index.html
    ├── package-lock.json
    ├── package.json
    ├── postcss.config.js
    ├── public
    │   ├── favicon.svg
    │   └── fonts
    │       └── inter.woff2
    ├── README.md
    ├── src
    │   ├── app.jsx
    │   ├── app.test.jsx
    │   ├── components
    │   │   ├── auth
    │   │   │   ├── LoginPage.jsx
    │   │   │   └── LoginPage.test.jsx
    │   │   ├── dashboards
    │   │   │   ├── cluster
    │   │   │   │   ├── ClusterPage.jsx
    │   │   │   │   ├── ClusterPage.test.jsx
    │   │   │   │   ├── ControllersPanel.jsx
    │   │   │   │   ├── ControllersPanel.test.jsx
    │   │   │   │   ├── InfoPanel.jsx
    │   │   │   │   ├── InfoPanel.test.jsx
    │   │   │   │   ├── OverallStatusPanel.jsx
    │   │   │   │   ├── OverallStatusPanel.test.jsx
    │   │   │   │   ├── ReconcilersPanel.jsx
    │   │   │   │   ├── ReconcilersPanel.test.jsx
    │   │   │   │   ├── SyncPanel.jsx
    │   │   │   │   └── SyncPanel.test.jsx
    │   │   │   ├── common
    │   │   │   │   ├── panel.jsx
    │   │   │   │   ├── panel.test.jsx
    │   │   │   │   ├── yaml.jsx
    │   │   │   │   └── yaml.test.jsx
    │   │   │   └── resource
    │   │   │       ├── ActionBar.jsx
    │   │   │       ├── ActionBar.test.jsx
    │   │   │       ├── ArtifactPanel.jsx
    │   │   │       ├── ArtifactPanel.test.jsx
    │   │   │       ├── ExportedInputsPanel.jsx
    │   │   │       ├── ExportedInputsPanel.test.jsx
    │   │   │       ├── GraphTabContent.jsx
    │   │   │       ├── GraphTabContent.test.jsx
    │   │   │       ├── HistoryTimeline.jsx
    │   │   │       ├── HistoryTimeline.test.jsx
    │   │   │       ├── InputsPanel.jsx
    │   │   │       ├── InputsPanel.test.jsx
    │   │   │       ├── InventoryPanel.jsx
    │   │   │       ├── InventoryPanel.test.jsx
    │   │   │       ├── ReconcilerPanel.jsx
    │   │   │       ├── ReconcilerPanel.test.jsx
    │   │   │       ├── ResourcePage.jsx
    │   │   │       ├── ResourcePage.test.jsx
    │   │   │       ├── SourcePanel.jsx
    │   │   │       ├── SourcePanel.test.jsx
    │   │   │       ├── WorkloadsTabContent.jsx
    │   │   │       └── WorkloadsTabContent.test.jsx
    │   │   ├── favorites
    │   │   │   ├── FavoriteCard.jsx
    │   │   │   ├── FavoriteCard.test.jsx
    │   │   │   ├── FavoritesHeader.jsx
    │   │   │   ├── FavoritesHeader.test.jsx
    │   │   │   ├── FavoritesPage.jsx
    │   │   │   ├── FavoritesPage.test.jsx
    │   │   │   ├── FavoritesSearch.jsx
    │   │   │   └── FavoritesSearch.test.jsx
    │   │   ├── layout
    │   │   │   ├── ConnectionStatus.jsx
    │   │   │   ├── ConnectionStatus.test.jsx
    │   │   │   ├── Footer.jsx
    │   │   │   ├── Footer.test.jsx
    │   │   │   ├── Header.jsx
    │   │   │   ├── Header.test.jsx
    │   │   │   ├── Icons.jsx
    │   │   │   ├── NotFoundPage.jsx
    │   │   │   ├── NotFoundPage.test.jsx
    │   │   │   ├── ThemeToggle.jsx
    │   │   │   ├── ThemeToggle.test.jsx
    │   │   │   ├── UserMenu.jsx
    │   │   │   └── UserMenu.test.jsx
    │   │   └── search
    │   │       ├── EventList.jsx
    │   │       ├── EventList.test.jsx
    │   │       ├── FilterForm.jsx
    │   │       ├── FilterForm.test.jsx
    │   │       ├── QuickSearch.jsx
    │   │       ├── QuickSearch.test.jsx
    │   │       ├── ResourceDetailsView.jsx
    │   │       ├── ResourceDetailsView.test.jsx
    │   │       ├── ResourceList.jsx
    │   │       ├── ResourceList.test.jsx
    │   │       ├── StatusChart.jsx
    │   │       └── StatusChart.test.jsx
    │   ├── index.css
    │   ├── main.jsx
    │   ├── mock
    │   │   ├── action.js
    │   │   ├── events.js
    │   │   ├── events.test.js
    │   │   ├── report.js
    │   │   ├── resource.js
    │   │   ├── resources.js
    │   │   ├── resources.test.js
    │   │   ├── workload.js
    │   │   └── workload.test.js
    │   └── utils
    │       ├── constants.js
    │       ├── cookies.js
    │       ├── cookies.test.js
    │       ├── favorites.js
    │       ├── favorites.test.js
    │       ├── fetch.js
    │       ├── fetch.test.js
    │       ├── hash.js
    │       ├── hash.test.js
    │       ├── meta.js
    │       ├── meta.test.js
    │       ├── navHistory.js
    │       ├── navHistory.test.js
    │       ├── routing.js
    │       ├── routing.test.js
    │       ├── scroll.js
    │       ├── scroll.test.js
    │       ├── status.js
    │       ├── status.test.js
    │       ├── theme.js
    │       ├── theme.test.js
    │       ├── time.js
    │       ├── time.test.js
    │       ├── version.js
    │       └── version.test.js
    ├── tailwind.config.js
    ├── vite.config.js
    └── vitest.setup.js
```

# Files

--------------------------------------------------------------------------------
/web/src/mock/resource.js:
--------------------------------------------------------------------------------

```javascript
   1 | // Copyright 2025 Stefan Prodan.
   2 | // SPDX-License-Identifier: AGPL-3.0
   3 | 
   4 | // Mock data for individual resource endpoint (GET /api/v1/resource)
   5 | // Generated from real cluster API responses
   6 | 
   7 | // Array containing all mock resources
   8 | export const mockResourcesArray =
   9 | [
  10 |   {
  11 |     "apiVersion": "fluxcd.controlplane.io/v1",
  12 |     "kind": "FluxInstance",
  13 |     "metadata": {
  14 |       "name": "flux",
  15 |       "namespace": "flux-system"
  16 |     },
  17 |     "spec": {
  18 |       "cluster": {
  19 |         "domain": "cluster.local",
  20 |         "multitenant": false,
  21 |         "multitenantWorkloadIdentity": false,
  22 |         "networkPolicy": true,
  23 |         "size": "medium",
  24 |         "type": "kubernetes"
  25 |       },
  26 |       "components": [
  27 |         "source-controller",
  28 |         "source-watcher",
  29 |         "kustomize-controller",
  30 |         "helm-controller",
  31 |         "notification-controller",
  32 |         "image-reflector-controller",
  33 |         "image-automation-controller"
  34 |       ],
  35 |       "distribution": {
  36 |         "artifact": "oci://ghcr.io/controlplaneio-fluxcd/flux-operator-manifests:latest",
  37 |         "registry": "ghcr.io/fluxcd",
  38 |         "version": "2.x"
  39 |       },
  40 |       "migrateResources": true,
  41 |       "sync": {
  42 |         "interval": "1m",
  43 |         "kind": "GitRepository",
  44 |         "path": "./clusters/homelab",
  45 |         "pullSecret": "github-auth",
  46 |         "ref": "refs/heads/main",
  47 |         "url": "https://github.com/stefanprodan/homelab.git"
  48 |       },
  49 |       "wait": true
  50 |     },
  51 |     "status": {
  52 |       "reconcilerRef": {
  53 |         "status": "Ready",
  54 |         "message": "Reconciliation finished in 2s",
  55 |         "lastReconciled": "2025-11-18T11:10:59Z",
  56 |         "managedBy": ""
  57 |       },
  58 |       "components": [
  59 |         {
  60 |           "digest": "sha256:5be9b7257270fa1a98c3c42af2f254a35bd64375e719090fe2ffc24915d8be06",
  61 |           "name": "source-controller",
  62 |           "repository": "ghcr.io/fluxcd/source-controller",
  63 |           "tag": "v1.7.3"
  64 |         },
  65 |         {
  66 |           "digest": "sha256:188a1adb89a16f7fcdd4ed79855301ec71950dcc833b6e0b3d0a053743ecac85",
  67 |           "name": "source-watcher",
  68 |           "repository": "ghcr.io/fluxcd/source-watcher",
  69 |           "tag": "v2.0.2"
  70 |         },
  71 |         {
  72 |           "digest": "sha256:477b4290a2fa2489bf87668bd7dcb77f0ae19bf944fef955600acbcde465ad98",
  73 |           "name": "kustomize-controller",
  74 |           "repository": "ghcr.io/fluxcd/kustomize-controller",
  75 |           "tag": "v1.7.2"
  76 |         },
  77 |         {
  78 |           "digest": "sha256:d741dffd2a552b31cf215a1fcf1367ec7bc4dd3609b90e87595ae362d05d022c",
  79 |           "name": "helm-controller",
  80 |           "repository": "ghcr.io/fluxcd/helm-controller",
  81 |           "tag": "v1.4.3"
  82 |         },
  83 |         {
  84 |           "digest": "sha256:350600b64cecb6cc10366c2bc41ec032fd604c81862298d02c303556a2fa6461",
  85 |           "name": "notification-controller",
  86 |           "repository": "ghcr.io/fluxcd/notification-controller",
  87 |           "tag": "v1.7.4"
  88 |         },
  89 |         {
  90 |           "digest": "sha256:a5c718caddfae3022c109a6ef0eb6772a3cc6211aab39feca7c668dfeb151a2e",
  91 |           "name": "image-reflector-controller",
  92 |           "repository": "ghcr.io/fluxcd/image-reflector-controller",
  93 |           "tag": "v1.0.3"
  94 |         },
  95 |         {
  96 |           "digest": "sha256:2577ace8d1660b77df5297db239e9cf30520b336f9a74c3b4174d2773211319d",
  97 |           "name": "image-automation-controller",
  98 |           "repository": "ghcr.io/fluxcd/image-automation-controller",
  99 |           "tag": "v1.0.3"
 100 |         }
 101 |       ],
 102 |       "conditions": [
 103 |         {
 104 |           "lastTransitionTime": "2025-11-18T11:10:59Z",
 105 |           "message": "Reconciliation finished in 2s",
 106 |           "observedGeneration": 1,
 107 |           "reason": "ReconciliationSucceeded",
 108 |           "status": "True",
 109 |           "type": "Ready"
 110 |         }
 111 |       ],
 112 |       "history": [
 113 |         {
 114 |           "digest": "sha256:d8fc4a3a7b06f200e0565c35d694b9d36cbe43233d8418a78525adc3ca9a16dd",
 115 |           "firstReconciled": "2025-11-01T23:31:08Z",
 116 |           "lastReconciled": "2025-11-18T11:10:59Z",
 117 |           "lastReconciledDuration": "1.605875375s",
 118 |           "lastReconciledStatus": "ReconciliationSucceeded",
 119 |           "metadata": {
 120 |             "flux": "v2.7.3"
 121 |           },
 122 |           "totalReconciliations": 397
 123 |         }
 124 |       ],
 125 |       "inventory": [
 126 |         {
 127 |           "apiVersion": "apiextensions.k8s.io/v1",
 128 |           "kind": "CustomResourceDefinition",
 129 |           "name": "alerts.notification.toolkit.fluxcd.io",
 130 |           "namespace": ""
 131 |         },
 132 |         {
 133 |           "apiVersion": "apiextensions.k8s.io/v1",
 134 |           "kind": "CustomResourceDefinition",
 135 |           "name": "artifactgenerators.source.extensions.fluxcd.io",
 136 |           "namespace": ""
 137 |         },
 138 |         {
 139 |           "apiVersion": "apiextensions.k8s.io/v1",
 140 |           "kind": "CustomResourceDefinition",
 141 |           "name": "buckets.source.toolkit.fluxcd.io",
 142 |           "namespace": ""
 143 |         },
 144 |         {
 145 |           "apiVersion": "apiextensions.k8s.io/v1",
 146 |           "kind": "CustomResourceDefinition",
 147 |           "name": "externalartifacts.source.toolkit.fluxcd.io",
 148 |           "namespace": ""
 149 |         },
 150 |         {
 151 |           "apiVersion": "apiextensions.k8s.io/v1",
 152 |           "kind": "CustomResourceDefinition",
 153 |           "name": "gitrepositories.source.toolkit.fluxcd.io",
 154 |           "namespace": ""
 155 |         },
 156 |         {
 157 |           "apiVersion": "apiextensions.k8s.io/v1",
 158 |           "kind": "CustomResourceDefinition",
 159 |           "name": "helmcharts.source.toolkit.fluxcd.io",
 160 |           "namespace": ""
 161 |         },
 162 |         {
 163 |           "apiVersion": "apiextensions.k8s.io/v1",
 164 |           "kind": "CustomResourceDefinition",
 165 |           "name": "helmreleases.helm.toolkit.fluxcd.io",
 166 |           "namespace": ""
 167 |         },
 168 |         {
 169 |           "apiVersion": "apiextensions.k8s.io/v1",
 170 |           "kind": "CustomResourceDefinition",
 171 |           "name": "helmrepositories.source.toolkit.fluxcd.io",
 172 |           "namespace": ""
 173 |         },
 174 |         {
 175 |           "apiVersion": "apiextensions.k8s.io/v1",
 176 |           "kind": "CustomResourceDefinition",
 177 |           "name": "imagepolicies.image.toolkit.fluxcd.io",
 178 |           "namespace": ""
 179 |         },
 180 |         {
 181 |           "apiVersion": "apiextensions.k8s.io/v1",
 182 |           "kind": "CustomResourceDefinition",
 183 |           "name": "imagerepositories.image.toolkit.fluxcd.io",
 184 |           "namespace": ""
 185 |         },
 186 |         {
 187 |           "apiVersion": "apiextensions.k8s.io/v1",
 188 |           "kind": "CustomResourceDefinition",
 189 |           "name": "imageupdateautomations.image.toolkit.fluxcd.io",
 190 |           "namespace": ""
 191 |         },
 192 |         {
 193 |           "apiVersion": "apiextensions.k8s.io/v1",
 194 |           "kind": "CustomResourceDefinition",
 195 |           "name": "kustomizations.kustomize.toolkit.fluxcd.io",
 196 |           "namespace": ""
 197 |         },
 198 |         {
 199 |           "apiVersion": "apiextensions.k8s.io/v1",
 200 |           "kind": "CustomResourceDefinition",
 201 |           "name": "ocirepositories.source.toolkit.fluxcd.io",
 202 |           "namespace": ""
 203 |         },
 204 |         {
 205 |           "apiVersion": "apiextensions.k8s.io/v1",
 206 |           "kind": "CustomResourceDefinition",
 207 |           "name": "providers.notification.toolkit.fluxcd.io",
 208 |           "namespace": ""
 209 |         },
 210 |         {
 211 |           "apiVersion": "apiextensions.k8s.io/v1",
 212 |           "kind": "CustomResourceDefinition",
 213 |           "name": "receivers.notification.toolkit.fluxcd.io",
 214 |           "namespace": ""
 215 |         },
 216 |         {
 217 |           "apiVersion": "v1",
 218 |           "kind": "Namespace",
 219 |           "name": "flux-system",
 220 |           "namespace": ""
 221 |         },
 222 |         {
 223 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 224 |           "kind": "ClusterRole",
 225 |           "name": "crd-controller-flux-system",
 226 |           "namespace": ""
 227 |         },
 228 |         {
 229 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 230 |           "kind": "ClusterRole",
 231 |           "name": "flux-edit-flux-system",
 232 |           "namespace": ""
 233 |         },
 234 |         {
 235 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 236 |           "kind": "ClusterRole",
 237 |           "name": "flux-view-flux-system",
 238 |           "namespace": ""
 239 |         },
 240 |         {
 241 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 242 |           "kind": "ClusterRoleBinding",
 243 |           "name": "cluster-reconciler-flux-system",
 244 |           "namespace": ""
 245 |         },
 246 |         {
 247 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 248 |           "kind": "ClusterRoleBinding",
 249 |           "name": "crd-controller-flux-system",
 250 |           "namespace": ""
 251 |         },
 252 |         {
 253 |           "apiVersion": "v1",
 254 |           "kind": "ResourceQuota",
 255 |           "name": "critical-pods-flux-system",
 256 |           "namespace": "flux-system"
 257 |         },
 258 |         {
 259 |           "apiVersion": "v1",
 260 |           "kind": "ServiceAccount",
 261 |           "name": "helm-controller",
 262 |           "namespace": "flux-system"
 263 |         },
 264 |         {
 265 |           "apiVersion": "v1",
 266 |           "kind": "ServiceAccount",
 267 |           "name": "image-automation-controller",
 268 |           "namespace": "flux-system"
 269 |         },
 270 |         {
 271 |           "apiVersion": "v1",
 272 |           "kind": "ServiceAccount",
 273 |           "name": "image-reflector-controller",
 274 |           "namespace": "flux-system"
 275 |         },
 276 |         {
 277 |           "apiVersion": "v1",
 278 |           "kind": "ServiceAccount",
 279 |           "name": "kustomize-controller",
 280 |           "namespace": "flux-system"
 281 |         },
 282 |         {
 283 |           "apiVersion": "v1",
 284 |           "kind": "ServiceAccount",
 285 |           "name": "notification-controller",
 286 |           "namespace": "flux-system"
 287 |         },
 288 |         {
 289 |           "apiVersion": "v1",
 290 |           "kind": "ServiceAccount",
 291 |           "name": "source-controller",
 292 |           "namespace": "flux-system"
 293 |         },
 294 |         {
 295 |           "apiVersion": "v1",
 296 |           "kind": "ServiceAccount",
 297 |           "name": "source-watcher",
 298 |           "namespace": "flux-system"
 299 |         },
 300 |         {
 301 |           "apiVersion": "v1",
 302 |           "kind": "Service",
 303 |           "name": "notification-controller",
 304 |           "namespace": "flux-system"
 305 |         },
 306 |         {
 307 |           "apiVersion": "v1",
 308 |           "kind": "Service",
 309 |           "name": "source-controller",
 310 |           "namespace": "flux-system"
 311 |         },
 312 |         {
 313 |           "apiVersion": "v1",
 314 |           "kind": "Service",
 315 |           "name": "source-watcher",
 316 |           "namespace": "flux-system"
 317 |         },
 318 |         {
 319 |           "apiVersion": "v1",
 320 |           "kind": "Service",
 321 |           "name": "webhook-receiver",
 322 |           "namespace": "flux-system"
 323 |         },
 324 |         {
 325 |           "apiVersion": "apps/v1",
 326 |           "kind": "Deployment",
 327 |           "name": "helm-controller",
 328 |           "namespace": "flux-system"
 329 |         },
 330 |         {
 331 |           "apiVersion": "apps/v1",
 332 |           "kind": "Deployment",
 333 |           "name": "image-automation-controller",
 334 |           "namespace": "flux-system"
 335 |         },
 336 |         {
 337 |           "apiVersion": "apps/v1",
 338 |           "kind": "Deployment",
 339 |           "name": "image-reflector-controller",
 340 |           "namespace": "flux-system"
 341 |         },
 342 |         {
 343 |           "apiVersion": "apps/v1",
 344 |           "kind": "Deployment",
 345 |           "name": "kustomize-controller",
 346 |           "namespace": "flux-system"
 347 |         },
 348 |         {
 349 |           "apiVersion": "apps/v1",
 350 |           "kind": "Deployment",
 351 |           "name": "notification-controller",
 352 |           "namespace": "flux-system"
 353 |         },
 354 |         {
 355 |           "apiVersion": "apps/v1",
 356 |           "kind": "Deployment",
 357 |           "name": "source-controller",
 358 |           "namespace": "flux-system"
 359 |         },
 360 |         {
 361 |           "apiVersion": "apps/v1",
 362 |           "kind": "Deployment",
 363 |           "name": "source-watcher",
 364 |           "namespace": "flux-system"
 365 |         },
 366 |         {
 367 |           "apiVersion": "kustomize.toolkit.fluxcd.io/v1",
 368 |           "kind": "Kustomization",
 369 |           "name": "flux-system",
 370 |           "namespace": "flux-system"
 371 |         },
 372 |         {
 373 |           "apiVersion": "networking.k8s.io/v1",
 374 |           "kind": "NetworkPolicy",
 375 |           "name": "allow-egress",
 376 |           "namespace": "flux-system"
 377 |         },
 378 |         {
 379 |           "apiVersion": "networking.k8s.io/v1",
 380 |           "kind": "NetworkPolicy",
 381 |           "name": "allow-scraping",
 382 |           "namespace": "flux-system"
 383 |         },
 384 |         {
 385 |           "apiVersion": "networking.k8s.io/v1",
 386 |           "kind": "NetworkPolicy",
 387 |           "name": "allow-webhooks",
 388 |           "namespace": "flux-system"
 389 |         },
 390 |         {
 391 |           "apiVersion": "source.toolkit.fluxcd.io/v1",
 392 |           "kind": "GitRepository",
 393 |           "name": "flux-system",
 394 |           "namespace": "flux-system"
 395 |         }
 396 |       ],
 397 |       "lastAppliedRevision": "v2.7.3@sha256:d8fc4a3a7b06f200e0565c35d694b9d36cbe43233d8418a78525adc3ca9a16dd",
 398 |       "lastArtifactRevision": "sha256:043536cc6ec06ff978777ca31cf0adc3d654575a2aa8050988aadf90b9f9877c",
 399 |       "lastAttemptedRevision": "v2.7.3@sha256:d8fc4a3a7b06f200e0565c35d694b9d36cbe43233d8418a78525adc3ca9a16dd",
 400 |       "lastHandledReconcileAt": "2025-11-07T12:20:38.600281345Z"
 401 |     }
 402 |   },
 403 |   {
 404 |     "apiVersion": "source.toolkit.fluxcd.io/v1",
 405 |     "kind": "GitRepository",
 406 |     "metadata": {
 407 |       "annotations": {
 408 |         "kustomize.toolkit.fluxcd.io/prune": "Disabled",
 409 |         "kustomize.toolkit.fluxcd.io/ssa": "Ignore"
 410 |       },
 411 |       "labels": {
 412 |         "app.kubernetes.io/instance": "flux-system",
 413 |         "app.kubernetes.io/managed-by": "flux-operator",
 414 |         "app.kubernetes.io/part-of": "flux",
 415 |         "app.kubernetes.io/version": "v2.7.3"
 416 |       },
 417 |       "name": "flux-system",
 418 |       "namespace": "flux-system"
 419 |     },
 420 |     "spec": {
 421 |       "interval": "1m0s",
 422 |       "ref": {
 423 |         "name": "refs/heads/main"
 424 |       },
 425 |       "secretRef": {
 426 |         "name": "github-auth"
 427 |       },
 428 |       "timeout": "60s",
 429 |       "url": "https://github.com/stefanprodan/homelab.git"
 430 |     },
 431 |     "status": {
 432 |       "reconcilerRef": {
 433 |         "status": "Ready",
 434 |         "message": "stored artifact for revision 'refs/heads/main@sha1:d676e33990dc2865d67c022d26dea93d5e3236ff'",
 435 |         "lastReconciled": "2025-11-11T14:07:19Z",
 436 |         "managedBy": "FluxInstance/flux-system/flux"
 437 |       },
 438 |       "artifact": {
 439 |         "digest": "sha256:fe0450de125a2359c0e14106830910855756014b0f78b4cf3b21339505a5bf74",
 440 |         "lastUpdateTime": "2025-11-06T21:36:36Z",
 441 |         "path": "gitrepository/flux-system/flux-system/d676e33990dc2865d67c022d26dea93d5e3236ff.tar.gz",
 442 |         "revision": "refs/heads/main@sha1:d676e33990dc2865d67c022d26dea93d5e3236ff",
 443 |         "size": 13059,
 444 |         "url": "http://source-controller.flux-system.svc.cluster.local./gitrepository/flux-system/flux-system/d676e33990dc2865d67c022d26dea93d5e3236ff.tar.gz"
 445 |       },
 446 |       "conditions": [
 447 |         {
 448 |           "lastTransitionTime": "2025-11-11T14:07:19Z",
 449 |           "message": "stored artifact for revision 'refs/heads/main@sha1:d676e33990dc2865d67c022d26dea93d5e3236ff'",
 450 |           "observedGeneration": 1,
 451 |           "reason": "Succeeded",
 452 |           "status": "True",
 453 |           "type": "Ready"
 454 |         },
 455 |         {
 456 |           "lastTransitionTime": "2025-11-06T21:36:36Z",
 457 |           "message": "stored artifact for revision 'refs/heads/main@sha1:d676e33990dc2865d67c022d26dea93d5e3236ff'",
 458 |           "observedGeneration": 1,
 459 |           "reason": "Succeeded",
 460 |           "status": "True",
 461 |           "type": "ArtifactInStorage"
 462 |         }
 463 |       ],
 464 |       "lastHandledReconcileAt": "2025-11-06T23:35:15.038685+02:00",
 465 |       "observedGeneration": 1
 466 |     }
 467 |   },
 468 |   {
 469 |     "apiVersion": "source.toolkit.fluxcd.io/v1",
 470 |     "kind": "HelmChart",
 471 |     "metadata": {
 472 |       "name": "registry-zot-registry",
 473 |       "namespace": "registry"
 474 |     },
 475 |     "spec": {
 476 |       "chart": "zot",
 477 |       "interval": "24h0m0s",
 478 |       "reconcileStrategy": "ChartVersion",
 479 |       "sourceRef": {
 480 |         "kind": "HelmRepository",
 481 |         "name": "zot-registry"
 482 |       },
 483 |       "version": "*"
 484 |     },
 485 |     "status": {
 486 |       "reconcilerRef": {
 487 |         "status": "Ready",
 488 |         "message": "pulled 'zot' chart with version '0.1.89'",
 489 |         "lastReconciled": "2025-11-01T23:31:41Z",
 490 |         "managedBy": ""
 491 |       },
 492 |       "artifact": {
 493 |         "digest": "sha256:8c3ab9d44828c879be47874f0c3dca2603a0f0584ef383c18ad50a4a27829d67",
 494 |         "lastUpdateTime": "2025-11-01T23:31:41Z",
 495 |         "path": "helmchart/registry/registry-zot-registry/zot-0.1.89.tgz",
 496 |         "revision": "0.1.89",
 497 |         "size": 9429,
 498 |         "url": "http://source-controller.flux-system.svc.cluster.local./helmchart/registry/registry-zot-registry/zot-0.1.89.tgz"
 499 |       },
 500 |       "conditions": [
 501 |         {
 502 |           "lastTransitionTime": "2025-11-01T23:31:41Z",
 503 |           "message": "pulled 'zot' chart with version '0.1.89'",
 504 |           "observedGeneration": 1,
 505 |           "reason": "ChartPullSucceeded",
 506 |           "status": "True",
 507 |           "type": "Ready"
 508 |         },
 509 |         {
 510 |           "lastTransitionTime": "2025-11-01T23:31:41Z",
 511 |           "message": "pulled 'zot' chart with version '0.1.89'",
 512 |           "observedGeneration": 1,
 513 |           "reason": "ChartPullSucceeded",
 514 |           "status": "True",
 515 |           "type": "ArtifactInStorage"
 516 |         }
 517 |       ],
 518 |       "observedChartName": "zot",
 519 |       "observedGeneration": 1,
 520 |       "observedSourceArtifactRevision": "sha256:2b1fdd97e969c82ee149a7ee8b00f55061760832f23c39a3235936f0912f2125",
 521 |       "url": "http://source-controller.flux-system.svc.cluster.local./helmchart/registry/registry-zot-registry/latest.tar.gz"
 522 |     }
 523 |   },
 524 |   {
 525 |     "apiVersion": "source.toolkit.fluxcd.io/v1",
 526 |     "kind": "HelmChart",
 527 |     "metadata": {
 528 |       "name": "tailscale-tailscale-operator",
 529 |       "namespace": "tailscale"
 530 |     },
 531 |     "spec": {
 532 |       "chart": "tailscale-operator",
 533 |       "interval": "24h0m0s",
 534 |       "reconcileStrategy": "ChartVersion",
 535 |       "sourceRef": {
 536 |         "kind": "HelmRepository",
 537 |         "name": "tailscale-operator"
 538 |       },
 539 |       "version": "*"
 540 |     },
 541 |     "status": {
 542 |       "reconcilerRef": {
 543 |         "status": "Ready",
 544 |         "message": "pulled 'tailscale-operator' chart with version '1.90.6'",
 545 |         "lastReconciled": "2025-11-01T23:31:02Z",
 546 |         "managedBy": ""
 547 |       },
 548 |       "artifact": {
 549 |         "digest": "sha256:08247dd90325a32ae95c5b116917015458b569eadbd66e7116dcdc7502a82bd9",
 550 |         "lastUpdateTime": "2025-11-01T23:31:02Z",
 551 |         "path": "helmchart/tailscale/tailscale-tailscale-operator/tailscale-operator-1.90.6.tgz",
 552 |         "revision": "1.90.6",
 553 |         "size": 42432,
 554 |         "url": "http://source-controller.flux-system.svc.cluster.local./helmchart/tailscale/tailscale-tailscale-operator/tailscale-operator-1.90.6.tgz"
 555 |       },
 556 |       "conditions": [
 557 |         {
 558 |           "lastTransitionTime": "2025-11-01T23:31:02Z",
 559 |           "message": "pulled 'tailscale-operator' chart with version '1.90.6'",
 560 |           "observedGeneration": 1,
 561 |           "reason": "ChartPullSucceeded",
 562 |           "status": "True",
 563 |           "type": "Ready"
 564 |         },
 565 |         {
 566 |           "lastTransitionTime": "2025-11-01T23:31:02Z",
 567 |           "message": "pulled 'tailscale-operator' chart with version '1.90.6'",
 568 |           "observedGeneration": 1,
 569 |           "reason": "ChartPullSucceeded",
 570 |           "status": "True",
 571 |           "type": "ArtifactInStorage"
 572 |         }
 573 |       ],
 574 |       "observedChartName": "tailscale-operator",
 575 |       "observedGeneration": 1,
 576 |       "observedSourceArtifactRevision": "sha256:578d082975ad264ba4d09368febb298c3beb7f18e459bb9d323d3b7c2fc4d475",
 577 |       "url": "http://source-controller.flux-system.svc.cluster.local./helmchart/tailscale/tailscale-tailscale-operator/latest.tar.gz"
 578 |     }
 579 |   },
 580 |   {
 581 |     "apiVersion": "helm.toolkit.fluxcd.io/v2",
 582 |     "kind": "HelmRelease",
 583 |     "metadata": {
 584 |       "labels": {
 585 |         "app.kubernetes.io/name": "cert-manager"
 586 |       },
 587 |       "name": "cert-manager",
 588 |       "namespace": "cert-manager"
 589 |     },
 590 |     "spec": {
 591 |       "chartRef": {
 592 |         "kind": "OCIRepository",
 593 |         "name": "cert-manager"
 594 |       },
 595 |       "install": {
 596 |         "strategy": {
 597 |           "name": "RetryOnFailure",
 598 |           "retryInterval": "2m"
 599 |         }
 600 |       },
 601 |       "interval": "24h",
 602 |       "releaseName": "cert-manager",
 603 |       "upgrade": {
 604 |         "strategy": {
 605 |           "name": "RetryOnFailure",
 606 |           "retryInterval": "3m"
 607 |         }
 608 |       },
 609 |       "values": {
 610 |         "crds": {
 611 |           "enabled": true,
 612 |           "keep": false
 613 |         }
 614 |       }
 615 |     },
 616 |     "status": {
 617 |       "reconcilerRef": {
 618 |         "status": "Ready",
 619 |         "message": "Helm install succeeded for release cert-manager/cert-manager.v1 with chart [email protected]+9578566b26b2",
 620 |         "lastReconciled": "2025-11-01T23:31:36Z",
 621 |         "managedBy": "ResourceSet/flux-system/cert-manager"
 622 |       },
 623 |       "conditions": [
 624 |         {
 625 |           "lastTransitionTime": "2025-11-01T23:31:36Z",
 626 |           "message": "Helm install succeeded for release cert-manager/cert-manager.v1 with chart [email protected]+9578566b26b2",
 627 |           "observedGeneration": 1,
 628 |           "reason": "InstallSucceeded",
 629 |           "status": "True",
 630 |           "type": "Ready"
 631 |         },
 632 |         {
 633 |           "lastTransitionTime": "2025-11-01T23:31:36Z",
 634 |           "message": "Helm install succeeded for release cert-manager/cert-manager.v1 with chart [email protected]+9578566b26b2",
 635 |           "observedGeneration": 1,
 636 |           "reason": "InstallSucceeded",
 637 |           "status": "True",
 638 |           "type": "Released"
 639 |         }
 640 |       ],
 641 |       "history": [
 642 |         {
 643 |           "appVersion": "v1.19.1",
 644 |           "chartName": "cert-manager",
 645 |           "chartVersion": "1.19.1+9578566b26b2",
 646 |           "configDigest": "sha256:c4de42eac3a72305e609d1d9de974488e24310a5241ed6eea8da43b39042a4d0",
 647 |           "digest": "sha256:b6eda3ef50097eb669b52c31d0b9824ef2303373784ebd4f231675efbc23b82b",
 648 |           "firstDeployed": "2025-11-01T23:31:03Z",
 649 |           "lastDeployed": "2025-11-01T23:31:03Z",
 650 |           "name": "cert-manager",
 651 |           "namespace": "cert-manager",
 652 |           "ociDigest": "sha256:9578566b26b2258bcb9a0be27feeaa7c0adaed635cc0f85b6293e42a80c58cc9",
 653 |           "status": "deployed",
 654 |           "version": 1
 655 |         }
 656 |       ],
 657 |       "inventory": [
 658 |         {
 659 |           "apiVersion": "v1",
 660 |           "kind": "ServiceAccount",
 661 |           "name": "cert-manager-cainjector",
 662 |           "namespace": "cert-manager"
 663 |         },
 664 |         {
 665 |           "apiVersion": "v1",
 666 |           "kind": "ServiceAccount",
 667 |           "name": "cert-manager",
 668 |           "namespace": "cert-manager"
 669 |         },
 670 |         {
 671 |           "apiVersion": "v1",
 672 |           "kind": "ServiceAccount",
 673 |           "name": "cert-manager-webhook",
 674 |           "namespace": "cert-manager"
 675 |         },
 676 |         {
 677 |           "apiVersion": "apiextensions.k8s.io/v1",
 678 |           "kind": "CustomResourceDefinition",
 679 |           "name": "challenges.acme.cert-manager.io",
 680 |           "namespace": ""
 681 |         },
 682 |         {
 683 |           "apiVersion": "apiextensions.k8s.io/v1",
 684 |           "kind": "CustomResourceDefinition",
 685 |           "name": "orders.acme.cert-manager.io",
 686 |           "namespace": ""
 687 |         },
 688 |         {
 689 |           "apiVersion": "apiextensions.k8s.io/v1",
 690 |           "kind": "CustomResourceDefinition",
 691 |           "name": "certificaterequests.cert-manager.io",
 692 |           "namespace": ""
 693 |         },
 694 |         {
 695 |           "apiVersion": "apiextensions.k8s.io/v1",
 696 |           "kind": "CustomResourceDefinition",
 697 |           "name": "certificates.cert-manager.io",
 698 |           "namespace": ""
 699 |         },
 700 |         {
 701 |           "apiVersion": "apiextensions.k8s.io/v1",
 702 |           "kind": "CustomResourceDefinition",
 703 |           "name": "clusterissuers.cert-manager.io",
 704 |           "namespace": ""
 705 |         },
 706 |         {
 707 |           "apiVersion": "apiextensions.k8s.io/v1",
 708 |           "kind": "CustomResourceDefinition",
 709 |           "name": "issuers.cert-manager.io",
 710 |           "namespace": ""
 711 |         },
 712 |         {
 713 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 714 |           "kind": "ClusterRole",
 715 |           "name": "cert-manager-cainjector",
 716 |           "namespace": ""
 717 |         },
 718 |         {
 719 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 720 |           "kind": "ClusterRole",
 721 |           "name": "cert-manager-controller-issuers",
 722 |           "namespace": ""
 723 |         },
 724 |         {
 725 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 726 |           "kind": "ClusterRole",
 727 |           "name": "cert-manager-controller-clusterissuers",
 728 |           "namespace": ""
 729 |         },
 730 |         {
 731 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 732 |           "kind": "ClusterRole",
 733 |           "name": "cert-manager-controller-certificates",
 734 |           "namespace": ""
 735 |         },
 736 |         {
 737 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 738 |           "kind": "ClusterRole",
 739 |           "name": "cert-manager-controller-orders",
 740 |           "namespace": ""
 741 |         },
 742 |         {
 743 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 744 |           "kind": "ClusterRole",
 745 |           "name": "cert-manager-controller-challenges",
 746 |           "namespace": ""
 747 |         },
 748 |         {
 749 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 750 |           "kind": "ClusterRole",
 751 |           "name": "cert-manager-controller-ingress-shim",
 752 |           "namespace": ""
 753 |         },
 754 |         {
 755 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 756 |           "kind": "ClusterRole",
 757 |           "name": "cert-manager-cluster-view",
 758 |           "namespace": ""
 759 |         },
 760 |         {
 761 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 762 |           "kind": "ClusterRole",
 763 |           "name": "cert-manager-view",
 764 |           "namespace": ""
 765 |         },
 766 |         {
 767 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 768 |           "kind": "ClusterRole",
 769 |           "name": "cert-manager-edit",
 770 |           "namespace": ""
 771 |         },
 772 |         {
 773 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 774 |           "kind": "ClusterRole",
 775 |           "name": "cert-manager-controller-approve:cert-manager-io",
 776 |           "namespace": ""
 777 |         },
 778 |         {
 779 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 780 |           "kind": "ClusterRole",
 781 |           "name": "cert-manager-controller-certificatesigningrequests",
 782 |           "namespace": ""
 783 |         },
 784 |         {
 785 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 786 |           "kind": "ClusterRole",
 787 |           "name": "cert-manager-webhook:subjectaccessreviews",
 788 |           "namespace": ""
 789 |         },
 790 |         {
 791 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 792 |           "kind": "ClusterRoleBinding",
 793 |           "name": "cert-manager-cainjector",
 794 |           "namespace": ""
 795 |         },
 796 |         {
 797 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 798 |           "kind": "ClusterRoleBinding",
 799 |           "name": "cert-manager-controller-issuers",
 800 |           "namespace": ""
 801 |         },
 802 |         {
 803 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 804 |           "kind": "ClusterRoleBinding",
 805 |           "name": "cert-manager-controller-clusterissuers",
 806 |           "namespace": ""
 807 |         },
 808 |         {
 809 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 810 |           "kind": "ClusterRoleBinding",
 811 |           "name": "cert-manager-controller-certificates",
 812 |           "namespace": ""
 813 |         },
 814 |         {
 815 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 816 |           "kind": "ClusterRoleBinding",
 817 |           "name": "cert-manager-controller-orders",
 818 |           "namespace": ""
 819 |         },
 820 |         {
 821 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 822 |           "kind": "ClusterRoleBinding",
 823 |           "name": "cert-manager-controller-challenges",
 824 |           "namespace": ""
 825 |         },
 826 |         {
 827 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 828 |           "kind": "ClusterRoleBinding",
 829 |           "name": "cert-manager-controller-ingress-shim",
 830 |           "namespace": ""
 831 |         },
 832 |         {
 833 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 834 |           "kind": "ClusterRoleBinding",
 835 |           "name": "cert-manager-controller-approve:cert-manager-io",
 836 |           "namespace": ""
 837 |         },
 838 |         {
 839 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 840 |           "kind": "ClusterRoleBinding",
 841 |           "name": "cert-manager-controller-certificatesigningrequests",
 842 |           "namespace": ""
 843 |         },
 844 |         {
 845 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 846 |           "kind": "ClusterRoleBinding",
 847 |           "name": "cert-manager-webhook:subjectaccessreviews",
 848 |           "namespace": ""
 849 |         },
 850 |         {
 851 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 852 |           "kind": "Role",
 853 |           "name": "cert-manager-cainjector:leaderelection",
 854 |           "namespace": "kube-system"
 855 |         },
 856 |         {
 857 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 858 |           "kind": "Role",
 859 |           "name": "cert-manager:leaderelection",
 860 |           "namespace": "kube-system"
 861 |         },
 862 |         {
 863 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 864 |           "kind": "Role",
 865 |           "name": "cert-manager-tokenrequest",
 866 |           "namespace": "cert-manager"
 867 |         },
 868 |         {
 869 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 870 |           "kind": "Role",
 871 |           "name": "cert-manager-webhook:dynamic-serving",
 872 |           "namespace": "cert-manager"
 873 |         },
 874 |         {
 875 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 876 |           "kind": "RoleBinding",
 877 |           "name": "cert-manager-cainjector:leaderelection",
 878 |           "namespace": "kube-system"
 879 |         },
 880 |         {
 881 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 882 |           "kind": "RoleBinding",
 883 |           "name": "cert-manager:leaderelection",
 884 |           "namespace": "kube-system"
 885 |         },
 886 |         {
 887 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 888 |           "kind": "RoleBinding",
 889 |           "name": "cert-manager-tokenrequest",
 890 |           "namespace": "cert-manager"
 891 |         },
 892 |         {
 893 |           "apiVersion": "rbac.authorization.k8s.io/v1",
 894 |           "kind": "RoleBinding",
 895 |           "name": "cert-manager-webhook:dynamic-serving",
 896 |           "namespace": "cert-manager"
 897 |         },
 898 |         {
 899 |           "apiVersion": "v1",
 900 |           "kind": "Service",
 901 |           "name": "cert-manager-cainjector",
 902 |           "namespace": "cert-manager"
 903 |         },
 904 |         {
 905 |           "apiVersion": "v1",
 906 |           "kind": "Service",
 907 |           "name": "cert-manager",
 908 |           "namespace": "cert-manager"
 909 |         },
 910 |         {
 911 |           "apiVersion": "v1",
 912 |           "kind": "Service",
 913 |           "name": "cert-manager-webhook",
 914 |           "namespace": "cert-manager"
 915 |         },
 916 |         {
 917 |           "apiVersion": "apps/v1",
 918 |           "kind": "Deployment",
 919 |           "name": "cert-manager-cainjector",
 920 |           "namespace": "cert-manager"
 921 |         },
 922 |         {
 923 |           "apiVersion": "apps/v1",
 924 |           "kind": "Deployment",
 925 |           "name": "cert-manager",
 926 |           "namespace": "cert-manager"
 927 |         },
 928 |         {
 929 |           "apiVersion": "apps/v1",
 930 |           "kind": "Deployment",
 931 |           "name": "cert-manager-webhook",
 932 |           "namespace": "cert-manager"
 933 |         },
 934 |         {
 935 |           "apiVersion": "admissionregistration.k8s.io/v1",
 936 |           "kind": "MutatingWebhookConfiguration",
 937 |           "name": "cert-manager-webhook",
 938 |           "namespace": ""
 939 |         },
 940 |         {
 941 |           "apiVersion": "admissionregistration.k8s.io/v1",
 942 |           "kind": "ValidatingWebhookConfiguration",
 943 |           "name": "cert-manager-webhook",
 944 |           "namespace": ""
 945 |         }
 946 |       ],
 947 |       "lastAttemptedConfigDigest": "sha256:c4de42eac3a72305e609d1d9de974488e24310a5241ed6eea8da43b39042a4d0",
 948 |       "lastAttemptedGeneration": 1,
 949 |       "lastAttemptedReleaseAction": "install",
 950 |       "lastAttemptedReleaseActionDuration": "32.702330598s",
 951 |       "lastAttemptedRevision": "1.19.1+9578566b26b2",
 952 |       "lastAttemptedRevisionDigest": "sha256:9578566b26b2258bcb9a0be27feeaa7c0adaed635cc0f85b6293e42a80c58cc9",
 953 |       "observedGeneration": 1,
 954 |       "sourceRef": {
 955 |         "kind": "OCIRepository",
 956 |         "message": "stored artifact for digest 'v1.19.1@sha256:9578566b26b2258bcb9a0be27feeaa7c0adaed635cc0f85b6293e42a80c58cc9'",
 957 |         "name": "cert-manager",
 958 |         "namespace": "cert-manager",
 959 |         "originRevision": "",
 960 |         "originURL": "https://github.com/cert-manager/cert-manager",
 961 |         "status": "Ready",
 962 |         "url": "oci://quay.io/jetstack/charts/cert-manager"
 963 |       },
 964 |       "storageNamespace": "cert-manager"
 965 |     }
 966 |   },
 967 |   {
 968 |     "apiVersion": "helm.toolkit.fluxcd.io/v2",
 969 |     "kind": "HelmRelease",
 970 |     "metadata": {
 971 |       "labels": {
 972 |         "app.kubernetes.io/name": "metrics-server"
 973 |       },
 974 |       "name": "metrics-server",
 975 |       "namespace": "monitoring"
 976 |     },
 977 |     "spec": {
 978 |       "chartRef": {
 979 |         "kind": "OCIRepository",
 980 |         "name": "metrics-server"
 981 |       },
 982 |       "install": {
 983 |         "strategy": {
 984 |           "name": "RetryOnFailure",
 985 |           "retryInterval": "2m"
 986 |         }
 987 |       },
 988 |       "interval": "24h",
 989 |       "releaseName": "metrics-server",
 990 |       "upgrade": {
 991 |         "strategy": {
 992 |           "name": "RetryOnFailure",
 993 |           "retryInterval": "3m"
 994 |         }
 995 |       },
 996 |       "values": {
 997 |         "apiService": {
 998 |           "insecureSkipTLSVerify": false
 999 |         },
1000 |         "args": [
1001 |           "--kubelet-insecure-tls"
1002 |         ],
1003 |         "tls": {
1004 |           "type": "cert-manager"
1005 |         }
1006 |       }
1007 |     },
1008 |     "status": {
1009 |       "reconcilerRef": {
1010 |         "status": "Ready",
1011 |         "message": "Helm install succeeded for release monitoring/metrics-server.v1 with chart [email protected]+457df0544ec2",
1012 |         "lastReconciled": "2025-11-01T23:31:10Z",
1013 |         "managedBy": "ResourceSet/flux-system/metrics-server"
1014 |       },
1015 |       "conditions": [
1016 |         {
1017 |           "lastTransitionTime": "2025-11-01T23:32:10Z",
1018 |           "message": "Helm install succeeded for release monitoring/metrics-server.v1 with chart [email protected]+457df0544ec2",
1019 |           "observedGeneration": 1,
1020 |           "reason": "InstallSucceeded",
1021 |           "status": "True",
1022 |           "type": "Ready"
1023 |         },
1024 |         {
1025 |           "lastTransitionTime": "2025-11-01T23:32:10Z",
1026 |           "message": "Helm install succeeded for release monitoring/metrics-server.v1 with chart [email protected]+457df0544ec2",
1027 |           "observedGeneration": 1,
1028 |           "reason": "InstallSucceeded",
1029 |           "status": "True",
1030 |           "type": "Released"
1031 |         }
1032 |       ],
1033 |       "history": [
1034 |         {
1035 |           "appVersion": "0.8.0",
1036 |           "chartName": "metrics-server",
1037 |           "chartVersion": "3.13.0+457df0544ec2",
1038 |           "configDigest": "sha256:82b16ed00566b1bcb117ede6537fa4842acd9f6bbbe280b6adb3c1d0e45802c6",
1039 |           "digest": "sha256:309c88a5dd4e392c5830d4c0a3b6d7597bcb77afd40e4e94629e5c3b045f2715",
1040 |           "firstDeployed": "2025-11-01T23:31:42Z",
1041 |           "lastDeployed": "2025-11-01T23:31:42Z",
1042 |           "name": "metrics-server",
1043 |           "namespace": "monitoring",
1044 |           "ociDigest": "sha256:457df0544ec2553176bbaaba70bf5b68af6c400eff510a401b8eba1b13f9a8ad",
1045 |           "status": "deployed",
1046 |           "version": 1
1047 |         }
1048 |       ],
1049 |       "inventory": [
1050 |         {
1051 |           "apiVersion": "v1",
1052 |           "kind": "ServiceAccount",
1053 |           "name": "metrics-server",
1054 |           "namespace": "monitoring"
1055 |         },
1056 |         {
1057 |           "apiVersion": "rbac.authorization.k8s.io/v1",
1058 |           "kind": "ClusterRole",
1059 |           "name": "system:metrics-server-aggregated-reader",
1060 |           "namespace": ""
1061 |         },
1062 |         {
1063 |           "apiVersion": "rbac.authorization.k8s.io/v1",
1064 |           "kind": "ClusterRole",
1065 |           "name": "system:metrics-server",
1066 |           "namespace": ""
1067 |         },
1068 |         {
1069 |           "apiVersion": "rbac.authorization.k8s.io/v1",
1070 |           "kind": "ClusterRoleBinding",
1071 |           "name": "metrics-server:system:auth-delegator",
1072 |           "namespace": ""
1073 |         },
1074 |         {
1075 |           "apiVersion": "rbac.authorization.k8s.io/v1",
1076 |           "kind": "ClusterRoleBinding",
1077 |           "name": "system:metrics-server",
1078 |           "namespace": ""
1079 |         },
1080 |         {
1081 |           "apiVersion": "rbac.authorization.k8s.io/v1",
1082 |           "kind": "RoleBinding",
1083 |           "name": "metrics-server-auth-reader",
1084 |           "namespace": "kube-system"
1085 |         },
1086 |         {
1087 |           "apiVersion": "v1",
1088 |           "kind": "Service",
1089 |           "name": "metrics-server",
1090 |           "namespace": "monitoring"
1091 |         },
1092 |         {
1093 |           "apiVersion": "apps/v1",
1094 |           "kind": "Deployment",
1095 |           "name": "metrics-server",
1096 |           "namespace": "monitoring"
1097 |         },
1098 |         {
1099 |           "apiVersion": "apiregistration.k8s.io/v1",
1100 |           "kind": "APIService",
1101 |           "name": "v1beta1.metrics.k8s.io",
1102 |           "namespace": ""
1103 |         },
1104 |         {
1105 |           "apiVersion": "cert-manager.io/v1",
1106 |           "kind": "Certificate",
1107 |           "name": "metrics-server",
1108 |           "namespace": "monitoring"
1109 |         },
1110 |         {
1111 |           "apiVersion": "cert-manager.io/v1",
1112 |           "kind": "Issuer",
1113 |           "name": "metrics-server-issuer",
1114 |           "namespace": "monitoring"
1115 |         }
1116 |       ],
1117 |       "lastAttemptedConfigDigest": "sha256:82b16ed00566b1bcb117ede6537fa4842acd9f6bbbe280b6adb3c1d0e45802c6",
1118 |       "lastAttemptedGeneration": 1,
1119 |       "lastAttemptedReleaseAction": "install",
1120 |       "lastAttemptedReleaseActionDuration": "28.246828513s",
1121 |       "lastAttemptedRevision": "3.13.0+457df0544ec2",
1122 |       "lastAttemptedRevisionDigest": "sha256:457df0544ec2553176bbaaba70bf5b68af6c400eff510a401b8eba1b13f9a8ad",
1123 |       "observedGeneration": 1,
1124 |       "sourceRef": {
1125 |         "kind": "OCIRepository",
1126 |         "message": "stored artifact for digest '3.13.0@sha256:457df0544ec2553176bbaaba70bf5b68af6c400eff510a401b8eba1b13f9a8ad'",
1127 |         "name": "metrics-server",
1128 |         "namespace": "monitoring",
1129 |         "originRevision": "",
1130 |         "originURL": "https://github.com/kubernetes-sigs/metrics-server",
1131 |         "status": "Ready",
1132 |         "url": "oci://ghcr.io/controlplaneio-fluxcd/charts/metrics-server"
1133 |       },
1134 |       "storageNamespace": "monitoring"
1135 |     }
1136 |   },
1137 |   {
1138 |     "apiVersion": "helm.toolkit.fluxcd.io/v2",
1139 |     "kind": "HelmRelease",
1140 |     "metadata": {
1141 |       "labels": {
1142 |         "app.kubernetes.io/name": "tailscale"
1143 |       },
1144 |       "name": "tailscale-operator",
1145 |       "namespace": "tailscale"
1146 |     },
1147 |     "spec": {
1148 |       "chart": {
1149 |         "spec": {
1150 |           "chart": "tailscale-operator",
1151 |           "interval": "24h",
1152 |           "reconcileStrategy": "ChartVersion",
1153 |           "sourceRef": {
1154 |             "kind": "HelmRepository",
1155 |             "name": "tailscale-operator"
1156 |           },
1157 |           "version": "*"
1158 |         }
1159 |       },
1160 |       "install": {
1161 |         "strategy": {
1162 |           "name": "RetryOnFailure",
1163 |           "retryInterval": "2m"
1164 |         }
1165 |       },
1166 |       "interval": "24h",
1167 |       "releaseName": "tailscale-operator",
1168 |       "upgrade": {
1169 |         "strategy": {
1170 |           "name": "RetryOnFailure",
1171 |           "retryInterval": "3m"
1172 |         }
1173 |       },
1174 |       "values": {
1175 |         "apiServerProxyConfig": {
1176 |           "allowImpersonation": "true",
1177 |           "mode": "false"
1178 |         },
1179 |         "operatorConfig": {
1180 |           "hostname": "homelab-operator"
1181 |         },
1182 |         "resources": {
1183 |           "limits": {
1184 |             "cpu": "2000m",
1185 |             "memory": "1Gi"
1186 |           },
1187 |           "requests": {
1188 |             "cpu": "100m",
1189 |             "memory": "128Mi"
1190 |           }
1191 |         }
1192 |       }
1193 |     },
1194 |     "status": {
1195 |       "reconcilerRef": {
1196 |         "status": "Ready",
1197 |         "message": "Helm install succeeded for release tailscale/tailscale-operator.v1 with chart [email protected]",
1198 |         "lastReconciled": "2025-11-01T23:31:10Z",
1199 |         "managedBy": "ResourceSet/flux-system/tailscale-operator"
1200 |       },
1201 |       "conditions": [
1202 |         {
1203 |           "lastTransitionTime": "2025-11-01T23:31:10Z",
1204 |           "message": "Helm install succeeded for release tailscale/tailscale-operator.v1 with chart [email protected]",
1205 |           "observedGeneration": 1,
1206 |           "reason": "InstallSucceeded",
1207 |           "status": "True",
1208 |           "type": "Ready"
1209 |         },
1210 |         {
1211 |           "lastTransitionTime": "2025-11-01T23:31:10Z",
1212 |           "message": "Helm install succeeded for release tailscale/tailscale-operator.v1 with chart [email protected]",
1213 |           "observedGeneration": 1,
1214 |           "reason": "InstallSucceeded",
1215 |           "status": "True",
1216 |           "type": "Released"
1217 |         }
1218 |       ],
1219 |       "helmChart": "tailscale/tailscale-tailscale-operator",
1220 |       "history": [
1221 |         {
1222 |           "appVersion": "v1.90.9",
1223 |           "chartName": "tailscale-operator",
1224 |           "chartVersion": "1.90.9",
1225 |           "configDigest": "sha256:ec864259c2bedeada53e194919f2416a1d6e742b4d5beb3555037ecce7c634d1",
1226 |           "digest": "sha256:f00bb59fbdb28284e525bd4d85aea707e728b89653f2acfa6d98cef3b93e28d5",
1227 |           "firstDeployed": "2025-11-01T23:31:01Z",
1228 |           "lastDeployed": "2025-11-26T19:26:23Z",
1229 |           "name": "tailscale-operator",
1230 |           "namespace": "tailscale",
1231 |           "status": "deployed",
1232 |           "version": 3
1233 |         },
1234 |         {
1235 |           "appVersion": "v1.90.8",
1236 |           "chartName": "tailscale-operator",
1237 |           "chartVersion": "1.90.8",
1238 |           "configDigest": "sha256:ec864259c2bedeada53e194919f2416a1d6e742b4d5beb3555037ecce7c634d1",
1239 |           "digest": "sha256:0d1e61ba399cbc6b8df9e625cb70009ec90a444d2293c280616884cee2dac132",
1240 |           "firstDeployed": "2025-11-01T23:31:01Z",
1241 |           "lastDeployed": "2025-11-19T22:22:04Z",
1242 |           "name": "tailscale-operator",
1243 |           "namespace": "tailscale",
1244 |           "status": "superseded",
1245 |           "version": 2
1246 |         }
1247 |       ],
1248 |       "inventory": [
1249 |         {
1250 |           "apiVersion": "v1",
1251 |           "kind": "ServiceAccount",
1252 |           "name": "kube-apiserver-auth-proxy",
1253 |           "namespace": "tailscale"
1254 |         },
1255 |         {
1256 |           "apiVersion": "v1",
1257 |           "kind": "ServiceAccount",
1258 |           "name": "operator",
1259 |           "namespace": "tailscale"
1260 |         },
1261 |         {
1262 |           "apiVersion": "v1",
1263 |           "kind": "ServiceAccount",
1264 |           "name": "proxies",
1265 |           "namespace": "tailscale"
1266 |         },
1267 |         {
1268 |           "apiVersion": "apiextensions.k8s.io/v1",
1269 |           "kind": "CustomResourceDefinition",
1270 |           "name": "connectors.tailscale.com",
1271 |           "namespace": ""
1272 |         },
1273 |         {
1274 |           "apiVersion": "apiextensions.k8s.io/v1",
1275 |           "kind": "CustomResourceDefinition",
1276 |           "name": "dnsconfigs.tailscale.com",
1277 |           "namespace": ""
1278 |         },
1279 |         {
1280 |           "apiVersion": "apiextensions.k8s.io/v1",
1281 |           "kind": "CustomResourceDefinition",
1282 |           "name": "proxyclasses.tailscale.com",
1283 |           "namespace": ""
1284 |         },
1285 |         {
1286 |           "apiVersion": "apiextensions.k8s.io/v1",
1287 |           "kind": "CustomResourceDefinition",
1288 |           "name": "proxygroups.tailscale.com",
1289 |           "namespace": ""
1290 |         },
1291 |         {
1292 |           "apiVersion": "apiextensions.k8s.io/v1",
1293 |           "kind": "CustomResourceDefinition",
1294 |           "name": "recorders.tailscale.com",
1295 |           "namespace": ""
1296 |         },
1297 |         {
1298 |           "apiVersion": "rbac.authorization.k8s.io/v1",
1299 |           "kind": "ClusterRole",
1300 |           "name": "tailscale-auth-proxy",
1301 |           "namespace": ""
1302 |         },
1303 |         {
1304 |           "apiVersion": "rbac.authorization.k8s.io/v1",
1305 |           "kind": "ClusterRole",
1306 |           "name": "tailscale-operator",
1307 |           "namespace": ""
1308 |         },
1309 |         {
1310 |           "apiVersion": "rbac.authorization.k8s.io/v1",
1311 |           "kind": "ClusterRoleBinding",
1312 |           "name": "tailscale-auth-proxy",
1313 |           "namespace": ""
1314 |         },
1315 |         {
1316 |           "apiVersion": "rbac.authorization.k8s.io/v1",
1317 |           "kind": "ClusterRoleBinding",
1318 |           "name": "tailscale-operator",
1319 |           "namespace": ""
1320 |         },
1321 |         {
1322 |           "apiVersion": "rbac.authorization.k8s.io/v1",
1323 |           "kind": "Role",
1324 |           "name": "operator",
1325 |           "namespace": "tailscale"
1326 |         },
1327 |         {
1328 |           "apiVersion": "rbac.authorization.k8s.io/v1",
1329 |           "kind": "Role",
1330 |           "name": "proxies",
1331 |           "namespace": "tailscale"
1332 |         },
1333 |         {
1334 |           "apiVersion": "rbac.authorization.k8s.io/v1",
1335 |           "kind": "RoleBinding",
1336 |           "name": "operator",
1337 |           "namespace": "tailscale"
1338 |         },
1339 |         {
1340 |           "apiVersion": "rbac.authorization.k8s.io/v1",
1341 |           "kind": "RoleBinding",
1342 |           "name": "proxies",
1343 |           "namespace": "tailscale"
1344 |         },
1345 |         {
1346 |           "apiVersion": "apps/v1",
1347 |           "kind": "Deployment",
1348 |           "name": "operator",
1349 |           "namespace": "tailscale"
1350 |         },
1351 |         {
1352 |           "apiVersion": "networking.k8s.io/v1",
1353 |           "kind": "IngressClass",
1354 |           "name": "tailscale",
1355 |           "namespace": ""
1356 |         }
1357 |       ],
1358 |       "lastAttemptedConfigDigest": "sha256:ec864259c2bedeada53e194919f2416a1d6e742b4d5beb3555037ecce7c634d1",
1359 |       "lastAttemptedGeneration": 1,
1360 |       "lastAttemptedReleaseAction": "install",
1361 |       "lastAttemptedReleaseActionDuration": "8.428667129s",
1362 |       "lastAttemptedRevision": "1.90.6",
1363 |       "observedGeneration": 1,
1364 |       "sourceRef": {
1365 |         "kind": "HelmRepository",
1366 |         "message": "stored artifact: revision 'sha256:578d082975ad264ba4d09368febb298c3beb7f18e459bb9d323d3b7c2fc4d475'",
1367 |         "name": "tailscale-operator",
1368 |         "namespace": "tailscale",
1369 |         "originRevision": "",
1370 |         "originURL": "",
1371 |         "status": "Ready",
1372 |         "url": "https://pkgs.tailscale.com/helmcharts"
1373 |       },
1374 |       "storageNamespace": "tailscale"
1375 |     }
1376 |   },
1377 |   {
1378 |     "apiVersion": "helm.toolkit.fluxcd.io/v2",
1379 |     "kind": "HelmRelease",
1380 |     "metadata": {
1381 |       "labels": {
1382 |         "app.kubernetes.io/name": "zot"
1383 |       },
1384 |       "name": "zot-registry",
1385 |       "namespace": "registry"
1386 |     },
1387 |     "spec": {
1388 |       "chart": {
1389 |         "spec": {
1390 |           "chart": "zot",
1391 |           "interval": "24h",
1392 |           "reconcileStrategy": "ChartVersion",
1393 |           "sourceRef": {
1394 |             "kind": "HelmRepository",
1395 |             "name": "zot-registry"
1396 |           },
1397 |           "version": "*"
1398 |         }
1399 |       },
1400 |       "install": {
1401 |         "strategy": {
1402 |           "name": "RetryOnFailure",
1403 |           "retryInterval": "2m"
1404 |         }
1405 |       },
1406 |       "interval": "24h",
1407 |       "releaseName": "zot-registry",
1408 |       "upgrade": {
1409 |         "strategy": {
1410 |           "name": "RetryOnFailure",
1411 |           "retryInterval": "3m"
1412 |         }
1413 |       },
1414 |       "values": {
1415 |         "fullnameOverride": "zot-registry",
1416 |         "persistence": true,
1417 |         "pvc": {
1418 |           "create": true,
1419 |           "storage": "20Gi",
1420 |           "storageClassName": "standard"
1421 |         },
1422 |         "resources": {
1423 |           "limits": {
1424 |             "cpu": "2000m",
1425 |             "memory": "1Gi"
1426 |           },
1427 |           "requests": {
1428 |             "cpu": "100m",
1429 |             "memory": "128Mi"
1430 |           }
1431 |         },
1432 |         "service": {
1433 |           "port": 80,
1434 |           "type": "ClusterIP"
1435 |         },
1436 |         "strategy": {
1437 |           "type": "Recreate"
1438 |         }
1439 |       }
1440 |     },
1441 |     "status": {
1442 |       "reconcilerRef": {
1443 |         "status": "Ready",
1444 |         "message": "Helm upgrade succeeded for release registry/zot-registry.v3 with chart [email protected]",
1445 |         "lastReconciled": "2025-11-02T08:48:52Z",
1446 |         "managedBy": "ResourceSet/flux-system/zot-registry"
1447 |       },
1448 |       "conditions": [
1449 |         {
1450 |           "lastTransitionTime": "2025-11-02T08:48:52Z",
1451 |           "message": "Helm upgrade succeeded for release registry/zot-registry.v3 with chart [email protected]",
1452 |           "observedGeneration": 2,
1453 |           "reason": "UpgradeSucceeded",
1454 |           "status": "True",
1455 |           "type": "Ready"
1456 |         },
1457 |         {
1458 |           "lastTransitionTime": "2025-11-02T08:48:52Z",
1459 |           "message": "Helm upgrade succeeded for release registry/zot-registry.v3 with chart [email protected]",
1460 |           "observedGeneration": 2,
1461 |           "reason": "UpgradeSucceeded",
1462 |           "status": "True",
1463 |           "type": "Released"
1464 |         }
1465 |       ],
1466 |       "helmChart": "registry/registry-zot-registry",
1467 |       "history": [
1468 |         {
1469 |           "appVersion": "v2.1.10",
1470 |           "chartName": "zot",
1471 |           "chartVersion": "0.1.89",
1472 |           "configDigest": "sha256:68a0cb4c346313fbf114884a6849aeff1c22d991dc7921b30d411f8471c38a09",
1473 |           "digest": "sha256:afeeb6dd28d7443a8675809da0a137b4957a392c704d8aa5c02bdb7e7ead9a29",
1474 |           "firstDeployed": "2025-11-01T23:31:41Z",
1475 |           "lastDeployed": "2025-11-02T08:48:38Z",
1476 |           "name": "zot-registry",
1477 |           "namespace": "registry",
1478 |           "status": "deployed",
1479 |           "version": 3
1480 |         },
1481 |         {
1482 |           "appVersion": "v2.1.10",
1483 |           "chartName": "zot",
1484 |           "chartVersion": "0.1.89",
1485 |           "configDigest": "sha256:68a0cb4c346313fbf114884a6849aeff1c22d991dc7921b30d411f8471c38a09",
1486 |           "digest": "sha256:6fc3a1dfff1edb1f5ca6887801223d713ab874335fe3253d066d47c524571d1b",
1487 |           "firstDeployed": "2025-11-01T23:31:41Z",
1488 |           "lastDeployed": "2025-11-02T08:45:34Z",
1489 |           "name": "zot-registry",
1490 |           "namespace": "registry",
1491 |           "status": "failed",
1492 |           "version": 2
1493 |         },
1494 |         {
1495 |           "appVersion": "v2.1.10",
1496 |           "chartName": "zot",
1497 |           "chartVersion": "0.1.89",
1498 |           "configDigest": "sha256:ddea6042f0d393e8cf3e920373afee22df11c35e730a7eee2519bed800bb2352",
1499 |           "digest": "sha256:da4ae11e60ef2fd825af7ff338374761f57a3c9442ace17a7a7f2929d8dd28da",
1500 |           "firstDeployed": "2025-11-01T23:31:41Z",
1501 |           "lastDeployed": "2025-11-01T23:31:41Z",
1502 |           "name": "zot-registry",
1503 |           "namespace": "registry",
1504 |           "status": "superseded",
1505 |           "version": 1
1506 |         }
1507 |       ],
1508 |       "inventory": [
1509 |         {
1510 |           "apiVersion": "v1",
1511 |           "kind": "ServiceAccount",
1512 |           "name": "zot-registry",
1513 |           "namespace": "registry"
1514 |         },
1515 |         {
1516 |           "apiVersion": "v1",
1517 |           "kind": "Service",
1518 |           "name": "zot-registry",
1519 |           "namespace": "registry"
1520 |         },
1521 |         {
1522 |           "apiVersion": "apps/v1",
1523 |           "kind": "StatefulSet",
1524 |           "name": "zot-registry",
1525 |           "namespace": "registry"
1526 |         }
1527 |       ],
1528 |       "lastAttemptedConfigDigest": "sha256:68a0cb4c346313fbf114884a6849aeff1c22d991dc7921b30d411f8471c38a09",
1529 |       "lastAttemptedGeneration": 2,
1530 |       "lastAttemptedReleaseAction": "upgrade",
1531 |       "lastAttemptedReleaseActionDuration": "14.24459459s",
1532 |       "lastAttemptedRevision": "0.1.89",
1533 |       "observedGeneration": 2,
1534 |       "sourceRef": {
1535 |         "kind": "HelmRepository",
1536 |         "message": "stored artifact: revision 'sha256:2b1fdd97e969c82ee149a7ee8b00f55061760832f23c39a3235936f0912f2125'",
1537 |         "name": "zot-registry",
1538 |         "namespace": "registry",
1539 |         "originRevision": "",
1540 |         "originURL": "",
1541 |         "status": "Ready",
1542 |         "url": "https://zotregistry.dev/helm-charts"
1543 |       },
1544 |       "storageNamespace": "registry"
1545 |     }
1546 |   },
1547 |   {
1548 |     "apiVersion": "kustomize.toolkit.fluxcd.io/v1",
1549 |     "kind": "Kustomization",
1550 |     "metadata": {
1551 |       "name": "cluster-infra",
1552 |       "namespace": "flux-system"
1553 |     },
1554 |     "spec": {
1555 |       "force": false,
1556 |       "healthCheckExprs": [
1557 |         {
1558 |           "apiVersion": "fluxcd.controlplane.io/v1",
1559 |           "current": "status.conditions.filter(c, c.type == 'Ready').all(c, c.status == 'True' && c.observedGeneration == metadata.generation)",
1560 |           "kind": "ResourceSet"
1561 |         }
1562 |       ],
1563 |       "interval": "1h",
1564 |       "path": "infra",
1565 |       "prune": true,
1566 |       "retryInterval": "2m",
1567 |       "sourceRef": {
1568 |         "kind": "GitRepository",
1569 |         "name": "flux-system"
1570 |       },
1571 |       "timeout": "6m",
1572 |       "wait": true
1573 |     },
1574 |     "status": {
1575 |       "reconcilerRef": {
1576 |         "status": "Ready",
1577 |         "message": "Applied revision: refs/heads/main@sha1:d676e33990dc2865d67c022d26dea93d5e3236ff",
1578 |         "lastReconciled": "2025-11-18T11:09:21Z",
1579 |         "managedBy": "Kustomization/flux-system/flux-system"
1580 |       },
1581 |       "conditions": [
1582 |         {
1583 |           "lastTransitionTime": "2025-11-18T11:09:21Z",
1584 |           "message": "Applied revision: refs/heads/main@sha1:d676e33990dc2865d67c022d26dea93d5e3236ff",
1585 |           "observedGeneration": 1,
1586 |           "reason": "ReconciliationSucceeded",
1587 |           "status": "True",
1588 |           "type": "Ready"
1589 |         },
1590 |         {
1591 |           "lastTransitionTime": "2025-11-18T11:09:21Z",
1592 |           "message": "Health check passed in 12.565167ms",
1593 |           "observedGeneration": 1,
1594 |           "reason": "Succeeded",
1595 |           "status": "True",
1596 |           "type": "Healthy"
1597 |         }
1598 |       ],
1599 |       "history": [
1600 |         {
1601 |           "digest": "sha256:bbe7aa022b513c7ceb4cf38e9fee0cec579c96fee9bf15afcdeff34bf4eed934",
1602 |           "firstReconciled": "2025-11-06T21:36:41Z",
1603 |           "lastReconciled": "2025-11-18T11:09:21Z",
1604 |           "lastReconciledDuration": "76.890708ms",
1605 |           "lastReconciledStatus": "ReconciliationSucceeded",
1606 |           "metadata": {
1607 |             "revision": "refs/heads/main@sha1:d676e33990dc2865d67c022d26dea93d5e3236ff"
1608 |           },
1609 |           "totalReconciliations": 279
1610 |         },
1611 |         {
1612 |           "digest": "sha256:bbe7aa022b513c7ceb4cf38e9fee0cec579c96fee9bf15afcdeff34bf4eed934",
1613 |           "firstReconciled": "2025-11-11T13:27:39Z",
1614 |           "lastReconciled": "2025-11-11T14:15:40Z",
1615 |           "lastReconciledDuration": "6m0.068181246s",
1616 |           "lastReconciledStatus": "HealthCheckFailed",
1617 |           "metadata": {
1618 |             "revision": "refs/heads/main@sha1:d676e33990dc2865d67c022d26dea93d5e3236ff"
1619 |           },
1620 |           "totalReconciliations": 7
1621 |         },
1622 |         {
1623 |           "digest": "sha256:b040c34218f94a8b600cb9686f3db56d931884fb7ce8bfc9355e4cb93f1e036c",
1624 |           "firstReconciled": "2025-11-06T21:35:43Z",
1625 |           "lastReconciled": "2025-11-06T21:35:43Z",
1626 |           "lastReconciledDuration": "5.222284961s",
1627 |           "lastReconciledStatus": "ReconciliationSucceeded",
1628 |           "metadata": {
1629 |             "revision": "refs/heads/main@sha1:7ca2aaecb20927201120b33c3ad3f181294c5b98"
1630 |           },
1631 |           "totalReconciliations": 1
1632 |         },
1633 |         {
1634 |           "digest": "sha256:7dd5cdd3147fa75fecf07acc8a45d8fce39445af96bb0146c476795e7a2e3099",
1635 |           "firstReconciled": "2025-11-06T20:46:34Z",
1636 |           "lastReconciled": "2025-11-06T21:07:15Z",
1637 |           "lastReconciledDuration": "74.965459ms",
1638 |           "lastReconciledStatus": "ReconciliationSucceeded",
1639 |           "metadata": {
1640 |             "revision": "refs/heads/main@sha1:d1bc4c4c6a8bf788fc776fdf2680ed91c6d0dd37"
1641 |           },
1642 |           "totalReconciliations": 2
1643 |         },
1644 |         {
1645 |           "digest": "sha256:75e8258dc921750cb17b10831c33931c6f1f6c418e081c8114303e1d0d6bc67f",
1646 |           "firstReconciled": "2025-11-03T18:48:35Z",
1647 |           "lastReconciled": "2025-11-06T20:08:46Z",
1648 |           "lastReconciledDuration": "84.788166ms",
1649 |           "lastReconciledStatus": "ReconciliationSucceeded",
1650 |           "metadata": {
1651 |             "revision": "refs/heads/main@sha1:62a1e87e875328d999dd98090500182a26be833a"
1652 |           },
1653 |           "totalReconciliations": 74
1654 |         }
1655 |       ],
1656 |       "inventory": [
1657 |         {
1658 |           "apiVersion": "fluxcd.controlplane.io/v1",
1659 |           "kind": "ResourceSet",
1660 |           "name": "cert-manager",
1661 |           "namespace": "flux-system"
1662 |         },
1663 |         {
1664 |           "apiVersion": "fluxcd.controlplane.io/v1",
1665 |           "kind": "ResourceSet",
1666 |           "name": "flux-status-server",
1667 |           "namespace": "flux-system"
1668 |         },
1669 |         {
1670 |           "apiVersion": "fluxcd.controlplane.io/v1",
1671 |           "kind": "ResourceSet",
1672 |           "name": "metrics-server",
1673 |           "namespace": "flux-system"
1674 |         },
1675 |         {
1676 |           "apiVersion": "fluxcd.controlplane.io/v1",
1677 |           "kind": "ResourceSet",
1678 |           "name": "tailscale-config",
1679 |           "namespace": "flux-system"
1680 |         },
1681 |         {
1682 |           "apiVersion": "fluxcd.controlplane.io/v1",
1683 |           "kind": "ResourceSet",
1684 |           "name": "tailscale-operator",
1685 |           "namespace": "flux-system"
1686 |         },
1687 |         {
1688 |           "apiVersion": "fluxcd.controlplane.io/v1",
1689 |           "kind": "ResourceSet",
1690 |           "name": "zot-registry",
1691 |           "namespace": "flux-system"
1692 |         },
1693 |         {
1694 |           "apiVersion": "fluxcd.controlplane.io/v1",
1695 |           "kind": "ResourceSetInputProvider",
1696 |           "name": "flux-status-server",
1697 |           "namespace": "flux-system"
1698 |         }
1699 |       ],
1700 |       "lastAppliedRevision": "refs/heads/main@sha1:d676e33990dc2865d67c022d26dea93d5e3236ff",
1701 |       "lastAttemptedRevision": "refs/heads/main@sha1:d676e33990dc2865d67c022d26dea93d5e3236ff",
1702 |       "observedGeneration": 1,
1703 |       "sourceRef": {
1704 |         "kind": "GitRepository",
1705 |         "message": "stored artifact for revision 'refs/heads/main@sha1:d676e33990dc2865d67c022d26dea93d5e3236ff'",
1706 |         "name": "flux-system",
1707 |         "namespace": "flux-system",
1708 |         "originRevision": "",
1709 |         "originURL": "",
1710 |         "status": "Ready",
1711 |         "url": "https://github.com/stefanprodan/homelab.git"
1712 |       }
1713 |     }
1714 |   },
1715 |   {
1716 |     "apiVersion": "kustomize.toolkit.fluxcd.io/v1",
1717 |     "kind": "Kustomization",
1718 |     "metadata": {
1719 |       "name": "flux-operator",
1720 |       "namespace": "flux-system"
1721 |     },
1722 |     "spec": {
1723 |       "commonMetadata": {
1724 |         "labels": {
1725 |           "app.kubernetes.io/instance": "flux-operator",
1726 |           "app.kubernetes.io/name": "flux-operator"
1727 |         }
1728 |       },
1729 |       "deletionPolicy": "Orphan",
1730 |       "force": true,
1731 |       "interval": "24h",
1732 |       "patches": [
1733 |         {
1734 |           "patch": "- op: replace\n  path: \"/spec/selector/matchLabels\"\n  value:\n    app.kubernetes.io/name: flux-operator\n    app.kubernetes.io/instance: flux-operator\n- op: replace\n  path: \"/spec/template/metadata/labels\"\n  value:\n    app.kubernetes.io/name: flux-operator\n    app.kubernetes.io/instance: flux-operator\n- op: add\n  path: \"/spec/template/spec/containers/0/env/-\"\n  value:\n    name: REPORTING_INTERVAL\n    value: \"30s\"",
1735 |           "target": {
1736 |             "kind": "Deployment"
1737 |           }
1738 |         }
1739 |       ],
1740 |       "path": "./flux-operator",
1741 |       "prune": true,
1742 |       "retryInterval": "5m",
1743 |       "serviceAccountName": "flux-operator",
1744 |       "sourceRef": {
1745 |         "kind": "OCIRepository",
1746 |         "name": "flux-operator"
1747 |       },
1748 |       "timeout": "5m",
1749 |       "wait": true
1750 |     },
1751 |     "status": {
1752 |       "reconcilerRef": {
1753 |         "status": "Ready",
1754 |         "message": "Applied revision: latest@sha256:043536cc6ec06ff978777ca31cf0adc3d654575a2aa8050988aadf90b9f9877c",
1755 |         "lastReconciled": "2025-11-18T00:28:13Z",
1756 |         "managedBy": ""
1757 |       },
1758 |       "conditions": [
1759 |         {
1760 |           "lastTransitionTime": "2025-11-18T00:28:13Z",
1761 |           "message": "Applied revision: latest@sha256:043536cc6ec06ff978777ca31cf0adc3d654575a2aa8050988aadf90b9f9877c",
1762 |           "observedGeneration": 1,
1763 |           "reason": "ReconciliationSucceeded",
1764 |           "status": "True",
1765 |           "type": "Ready"
1766 |         },
1767 |         {
1768 |           "lastTransitionTime": "2025-11-18T00:28:13Z",
1769 |           "message": "Health check passed in 17.192458ms",
1770 |           "observedGeneration": 1,
1771 |           "reason": "Succeeded",
1772 |           "status": "True",
1773 |           "type": "Healthy"
1774 |         }
1775 |       ],
1776 |       "history": [
1777 |         {
1778 |           "digest": "sha256:cb9b9a44b9d94bd0bfd0cb8e3336e71841ccabf55da588ae1876548a77114759",
1779 |           "firstReconciled": "2025-11-01T23:31:13Z",
1780 |           "lastReconciled": "2025-11-18T00:28:13Z",
1781 |           "lastReconciledDuration": "139.516833ms",
1782 |           "lastReconciledStatus": "ReconciliationSucceeded",
1783 |           "metadata": {
1784 |             "originRevision": "main@sha1:06e1897fcf773428155c5f6b9aadb5538169bb5c",
1785 |             "revision": "latest@sha256:043536cc6ec06ff978777ca31cf0adc3d654575a2aa8050988aadf90b9f9877c"
1786 |           },
1787 |           "totalReconciliations": 19
1788 |         }
1789 |       ],
1790 |       "inventory": [
1791 |         {
1792 |           "apiVersion": "apiextensions.k8s.io/v1",
1793 |           "kind": "CustomResourceDefinition",
1794 |           "name": "fluxinstances.fluxcd.controlplane.io",
1795 |           "namespace": ""
1796 |         },
1797 |         {
1798 |           "apiVersion": "apiextensions.k8s.io/v1",
1799 |           "kind": "CustomResourceDefinition",
1800 |           "name": "fluxreports.fluxcd.controlplane.io",
1801 |           "namespace": ""
1802 |         },
1803 |         {
1804 |           "apiVersion": "apiextensions.k8s.io/v1",
1805 |           "kind": "CustomResourceDefinition",
1806 |           "name": "resourcesetinputproviders.fluxcd.controlplane.io",
1807 |           "namespace": ""
1808 |         },
1809 |         {
1810 |           "apiVersion": "apiextensions.k8s.io/v1",
1811 |           "kind": "CustomResourceDefinition",
1812 |           "name": "resourcesets.fluxcd.controlplane.io",
1813 |           "namespace": ""
1814 |         },
1815 |         {
1816 |           "apiVersion": "rbac.authorization.k8s.io/v1",
1817 |           "kind": "ClusterRole",
1818 |           "name": "flux-operator-edit",
1819 |           "namespace": ""
1820 |         },
1821 |         {
1822 |           "apiVersion": "rbac.authorization.k8s.io/v1",
1823 |           "kind": "ClusterRole",
1824 |           "name": "flux-operator-view",
1825 |           "namespace": ""
1826 |         },
1827 |         {
1828 |           "apiVersion": "rbac.authorization.k8s.io/v1",
1829 |           "kind": "ClusterRoleBinding",
1830 |           "name": "flux-operator-cluster-admin",
1831 |           "namespace": ""
1832 |         },
1833 |         {
1834 |           "apiVersion": "v1",
1835 |           "kind": "ServiceAccount",
1836 |           "name": "flux-operator",
1837 |           "namespace": "flux-system"
1838 |         },
1839 |         {
1840 |           "apiVersion": "v1",
1841 |           "kind": "Service",
1842 |           "name": "flux-operator",
1843 |           "namespace": "flux-system"
1844 |         },
1845 |         {
1846 |           "apiVersion": "apps/v1",
1847 |           "kind": "Deployment",
1848 |           "name": "flux-operator",
1849 |           "namespace": "flux-system"
1850 |         }
1851 |       ],
1852 |       "lastAppliedOriginRevision": "main@sha1:06e1897fcf773428155c5f6b9aadb5538169bb5c",
1853 |       "lastAppliedRevision": "latest@sha256:043536cc6ec06ff978777ca31cf0adc3d654575a2aa8050988aadf90b9f9877c",
1854 |       "lastAttemptedRevision": "latest@sha256:043536cc6ec06ff978777ca31cf0adc3d654575a2aa8050988aadf90b9f9877c",
1855 |       "observedGeneration": 1,
1856 |       "sourceRef": {
1857 |         "kind": "OCIRepository",
1858 |         "message": "stored artifact for digest 'latest@sha256:043536cc6ec06ff978777ca31cf0adc3d654575a2aa8050988aadf90b9f9877c'",
1859 |         "name": "flux-operator",
1860 |         "namespace": "flux-system",
1861 |         "originRevision": "main@sha1:06e1897fcf773428155c5f6b9aadb5538169bb5c",
1862 |         "originURL": "git://github.com/controlplaneio-fluxcd/flux-operator.git",
1863 |         "status": "Ready",
1864 |         "url": "oci://ghcr.io/controlplaneio-fluxcd/flux-operator-manifests"
1865 |       }
1866 |     }
1867 |   },
1868 |   {
1869 |     "apiVersion": "kustomize.toolkit.fluxcd.io/v1",
1870 |     "kind": "Kustomization",
1871 |     "metadata": {
1872 |       "annotations": {
1873 |         "kustomize.toolkit.fluxcd.io/prune": "Disabled",
1874 |         "kustomize.toolkit.fluxcd.io/ssa": "Ignore"
1875 |       },
1876 |       "labels": {
1877 |         "app.kubernetes.io/instance": "flux-system",
1878 |         "app.kubernetes.io/managed-by": "flux-operator",
1879 |         "app.kubernetes.io/part-of": "flux",
1880 |         "app.kubernetes.io/version": "v2.7.3"
1881 |       },
1882 |       "name": "flux-system",
1883 |       "namespace": "flux-system"
1884 |     },
1885 |     "spec": {
1886 |       "force": false,
1887 |       "interval": "10m0s",
1888 |       "path": "./clusters/homelab",
1889 |       "prune": true,
1890 |       "sourceRef": {
1891 |         "kind": "GitRepository",
1892 |         "name": "flux-system"
1893 |       }
1894 |     },
1895 |     "status": {
1896 |       "reconcilerRef": {
1897 |         "status": "Ready",
1898 |         "message": "Applied revision: refs/heads/main@sha1:d676e33990dc2865d67c022d26dea93d5e3236ff",
1899 |         "lastReconciled": "2025-11-01T23:31:36Z",
1900 |         "managedBy": "FluxInstance/flux-system/flux"
1901 |       },
1902 |       "conditions": [
1903 |         {
1904 |           "lastTransitionTime": "2025-11-18T11:49:21Z",
1905 |           "message": "Applied revision: refs/heads/main@sha1:d676e33990dc2865d67c022d26dea93d5e3236ff",
1906 |           "observedGeneration": 1,
1907 |           "reason": "ReconciliationSucceeded",
1908 |           "status": "True",
1909 |           "type": "Ready"
1910 |         }
1911 |       ],
1912 |       "history": [
1913 |         {
1914 |           "digest": "sha256:92e6e90f2a0951f761fb9ed43f9814cc8c94b56666ca1a24cd0ecb7e85587331",
1915 |           "firstReconciled": "2025-11-01T23:30:57Z",
1916 |           "lastReconciled": "2025-11-18T11:49:21Z",
1917 |           "lastReconciledDuration": "32.727458ms",
1918 |           "lastReconciledStatus": "ReconciliationSucceeded",
1919 |           "metadata": {
1920 |             "revision": "refs/heads/main@sha1:d676e33990dc2865d67c022d26dea93d5e3236ff"
1921 |           },
1922 |           "totalReconciliations": 2406
1923 |         }
1924 |       ],
1925 |       "inventory": [
1926 |         {
1927 |           "apiVersion": "fluxcd.controlplane.io/v1",
1928 |           "kind": "FluxInstance",
1929 |           "name": "flux",
1930 |           "namespace": "flux-system"
1931 |         },
1932 |         {
1933 |           "apiVersion": "fluxcd.controlplane.io/v1",
1934 |           "kind": "ResourceSet",
1935 |           "name": "cluster-infra",
1936 |           "namespace": "flux-system"
1937 |         }
1938 |       ],
1939 |       "lastAppliedRevision": "refs/heads/main@sha1:d676e33990dc2865d67c022d26dea93d5e3236ff",
1940 |       "lastAttemptedRevision": "refs/heads/main@sha1:d676e33990dc2865d67c022d26dea93d5e3236ff",
1941 |       "lastHandledReconcileAt": "2025-11-06T23:35:16.275132+02:00",
1942 |       "observedGeneration": 1,
1943 |       "sourceRef": {
1944 |         "kind": "GitRepository",
1945 |         "message": "stored artifact for revision 'refs/heads/main@sha1:d676e33990dc2865d67c022d26dea93d5e3236ff'",
1946 |         "name": "flux-system",
1947 |         "namespace": "flux-system",
1948 |         "originRevision": "",
1949 |         "originURL": "",
1950 |         "status": "Ready",
1951 |         "url": "https://github.com/stefanprodan/homelab.git"
1952 |       }
1953 |     }
1954 |   },
1955 |   {
1956 |     "apiVersion": "source.toolkit.fluxcd.io/v1",
1957 |     "kind": "OCIRepository",
1958 |     "metadata": {
1959 |       "labels": {
1960 |         "app.kubernetes.io/name": "cert-manager"
1961 |       },
1962 |       "name": "cert-manager",
1963 |       "namespace": "cert-manager"
1964 |     },
1965 |     "spec": {
1966 |       "interval": "24h",
1967 |       "layerSelector": {
1968 |         "mediaType": "application/vnd.cncf.helm.chart.content.v1.tar+gzip",
1969 |         "operation": "copy"
1970 |       },
1971 |       "provider": "generic",
1972 |       "ref": {
1973 |         "semver": "*"
1974 |       },
1975 |       "timeout": "60s",
1976 |       "url": "oci://quay.io/jetstack/charts/cert-manager"
1977 |     },
1978 |     "status": {
1979 |       "reconcilerRef": {
1980 |         "status": "Ready",
1981 |         "message": "stored artifact for digest 'v1.19.1@sha256:9578566b26b2258bcb9a0be27feeaa7c0adaed635cc0f85b6293e42a80c58cc9'",
1982 |         "lastReconciled": "2025-11-01T23:31:03Z",
1983 |         "managedBy": "ResourceSet/flux-system/cert-manager"
1984 |       },
1985 |       "artifact": {
1986 |         "digest": "sha256:f72a727b1749df3521e7a65af5f18505f93b572d758841890270b150344b2b41",
1987 |         "lastUpdateTime": "2025-11-01T23:31:03Z",
1988 |         "metadata": {
1989 |           "artifacthub.io/category": "security",
1990 |           "artifacthub.io/license": "Apache-2.0",
1991 |           "artifacthub.io/prerelease": "false",
1992 |           "artifacthub.io/signKey": "fingerprint: 1020CF3C033D4F35BAE1C19E1226061C665DF13E\nurl: https://cert-manager.io/public-keys/cert-manager-keyring-2021-09-20-1020CF3C033D4F35BAE1C19E1226061C665DF13E.gpg\n",
1993 |           "org.opencontainers.image.authors": "cert-manager-maintainers ([email protected])",
1994 |           "org.opencontainers.image.created": "2025-10-15T16:29:51+01:00",
1995 |           "org.opencontainers.image.description": "A Helm chart for cert-manager",
1996 |           "org.opencontainers.image.source": "https://github.com/cert-manager/cert-manager",
1997 |           "org.opencontainers.image.title": "cert-manager",
1998 |           "org.opencontainers.image.url": "https://cert-manager.io",
1999 |           "org.opencontainers.image.version": "v1.19.1"
2000 |         },
2001 |         "path": "ocirepository/cert-manager/cert-manager/sha256:9578566b26b2258bcb9a0be27feeaa7c0adaed635cc0f85b6293e42a80c58cc9.tar.gz",
2002 |         "revision": "v1.19.1@sha256:9578566b26b2258bcb9a0be27feeaa7c0adaed635cc0f85b6293e42a80c58cc9",
2003 |         "size": 140724,
2004 |         "url": "http://source-controller.flux-system.svc.cluster.local./ocirepository/cert-manager/cert-manager/sha256:9578566b26b2258bcb9a0be27feeaa7c0adaed635cc0f85b6293e42a80c58cc9.tar.gz"
2005 |       },
2006 |       "conditions": [
2007 |         {
2008 |           "lastTransitionTime": "2025-11-01T23:31:03Z",
2009 |           "message": "stored artifact for digest 'v1.19.1@sha256:9578566b26b2258bcb9a0be27feeaa7c0adaed635cc0f85b6293e42a80c58cc9'",
2010 |           "observedGeneration": 1,
2011 |           "reason": "Succeeded",
2012 |           "status": "True",
2013 |           "type": "Ready"
2014 |         },
2015 |         {
2016 |           "lastTransitionTime": "2025-11-01T23:31:03Z",
2017 |           "message": "stored artifact for digest 'v1.19.1@sha256:9578566b26b2258bcb9a0be27feeaa7c0adaed635cc0f85b6293e42a80c58cc9'",
2018 |           "observedGeneration": 1,
2019 |           "reason": "Succeeded",
2020 |           "status": "True",
2021 |           "type": "ArtifactInStorage"
2022 |         }
2023 |       ],
2024 |       "observedGeneration": 1,
2025 |       "observedLayerSelector": {
2026 |         "mediaType": "application/vnd.cncf.helm.chart.content.v1.tar+gzip",
2027 |         "operation": "copy"
2028 |       },
2029 |       "url": "http://source-controller.flux-system.svc.cluster.local./ocirepository/cert-manager/cert-manager/latest.tar.gz"
2030 |     }
2031 |   },
2032 |   {
2033 |     "apiVersion": "source.toolkit.fluxcd.io/v1",
2034 |     "kind": "OCIRepository",
2035 |     "metadata": {
2036 |       "name": "flux-operator",
2037 |       "namespace": "flux-system"
2038 |     },
2039 |     "spec": {
2040 |       "interval": "1h",
2041 |       "provider": "generic",
2042 |       "ref": {
2043 |         "tag": "latest"
2044 |       },
2045 |       "verify": {
2046 |         "provider": "cosign"
2047 |       },
2048 |       "timeout": "60s",
2049 |       "url": "oci://ghcr.io/controlplaneio-fluxcd/flux-operator-manifests"
2050 |     },
2051 |     "status": {
2052 |       "reconcilerRef": {
2053 |         "status": "Ready",
2054 |         "message": "stored artifact for digest 'latest@sha256:043536cc6ec06ff978777ca31cf0adc3d654575a2aa8050988aadf90b9f9877c'",
2055 |         "lastReconciled": "2025-11-07T12:23:03Z",
2056 |         "managedBy": ""
2057 |       },
2058 |       "artifact": {
2059 |         "digest": "sha256:f3084e90b5b4c023321f43e5fee08b6e4b3a6a6d1938c614ae0ee91890fa249c",
2060 |         "lastUpdateTime": "2025-11-07T12:23:03Z",
2061 |         "metadata": {
2062 |           "org.opencontainers.image.created": "2025-11-07T12:12:32Z",
2063 |           "org.opencontainers.image.description": "Flux Operator",
2064 |           "org.opencontainers.image.revision": "main@sha1:06e1897fcf773428155c5f6b9aadb5538169bb5c",
2065 |           "org.opencontainers.image.source": "git://github.com/controlplaneio-fluxcd/flux-operator.git"
2066 |         },
2067 |         "path": "ocirepository/flux-system/flux-operator/sha256:043536cc6ec06ff978777ca31cf0adc3d654575a2aa8050988aadf90b9f9877c.tar.gz",
2068 |         "revision": "latest@sha256:043536cc6ec06ff978777ca31cf0adc3d654575a2aa8050988aadf90b9f9877c",
2069 |         "size": 917016,
2070 |         "url": "http://source-controller.flux-system.svc.cluster.local./ocirepository/flux-system/flux-operator/sha256:043536cc6ec06ff978777ca31cf0adc3d654575a2aa8050988aadf90b9f9877c.tar.gz"
2071 |       },
2072 |       "conditions": [
2073 |         {
2074 |           "lastTransitionTime": "2025-11-11T14:14:47Z",
2075 |           "message": "stored artifact for digest 'latest@sha256:043536cc6ec06ff978777ca31cf0adc3d654575a2aa8050988aadf90b9f9877c'",
2076 |           "observedGeneration": 1,
2077 |           "reason": "Succeeded",
2078 |           "status": "True",
2079 |           "type": "Ready"
2080 |         },
2081 |         {
2082 |           "lastTransitionTime": "2025-11-07T12:23:03Z",
2083 |           "message": "stored artifact for digest 'latest@sha256:043536cc6ec06ff978777ca31cf0adc3d654575a2aa8050988aadf90b9f9877c'",
2084 |           "observedGeneration": 1,
2085 |           "reason": "Succeeded",
2086 |           "status": "True",
2087 |           "type": "ArtifactInStorage"
2088 |         }
2089 |       ],
2090 |       "observedGeneration": 1,
2091 |       "url": "http://source-controller.flux-system.svc.cluster.local./ocirepository/flux-system/flux-operator/latest.tar.gz"
2092 |     }
2093 |   },
2094 |   {
2095 |     "apiVersion": "source.toolkit.fluxcd.io/v1",
2096 |     "kind": "OCIRepository",
2097 |     "metadata": {
2098 |       "labels": {
2099 |         "app.kubernetes.io/name": "metrics-server"
2100 |       },
2101 |       "name": "metrics-server",
2102 |       "namespace": "monitoring"
2103 |     },
2104 |     "spec": {
2105 |       "interval": "24h",
2106 |       "layerSelector": {
2107 |         "mediaType": "application/vnd.cncf.helm.chart.content.v1.tar+gzip",
2108 |         "operation": "copy"
2109 |       },
2110 |       "provider": "generic",
2111 |       "ref": {
2112 |         "semver": "*"
2113 |       },
2114 |       "timeout": "60s",
2115 |       "url": "oci://ghcr.io/controlplaneio-fluxcd/charts/metrics-server"
2116 |     },
2117 |     "status": {
2118 |       "reconcilerRef": {
2119 |         "status": "Ready",
2120 |         "message": "stored artifact for digest '3.13.0@sha256:457df0544ec2553176bbaaba70bf5b68af6c400eff510a401b8eba1b13f9a8ad'",
2121 |         "lastReconciled": "2025-11-01T23:31:42Z",
2122 |         "managedBy": "Kustomization/flux-system/flux-system"
2123 |       },
2124 |       "artifact": {
2125 |         "digest": "sha256:a418dfdeb7b49a244cf6f848c4c3b7ee8eb6b0fdc19b0389cff98ceec4107a48",
2126 |         "lastUpdateTime": "2025-11-01T23:31:42Z",
2127 |         "metadata": {
2128 |           "artifacthub.io/changes": "- kind: added\n  description: \"Add chart options to secure the connection between Metrics Server and the Kubernetes API Server.\"\n- kind: added\n  description: \"Add `unhealthyPodEvictionPolicy` to the Metrics Server PDB as a user enabled feature.\"\n- kind: changed\n  description: \"Update the _Addon Resizer_ OCI image to [`1.8.23`](https://github.com/kubernetes/autoscaler/releases/tag/addon-resizer-1.8.23).\"\n- kind: changed\n  description: \"Update the _Metrics Server_ OCI image to [`0.8.0`](https://github.com/kubernetes-sigs/metrics-server/releases/tag/v0.8.0).\"\n",
2129 |           "org.opencontainers.image.authors": "stevehipwell, krmichel, endrec",
2130 |           "org.opencontainers.image.created": "2025-07-23T04:18:26Z",
2131 |           "org.opencontainers.image.description": "Metrics Server is a scalable, efficient source of container resource metrics for Kubernetes built-in autoscaling pipelines.",
2132 |           "org.opencontainers.image.source": "https://github.com/kubernetes-sigs/metrics-server",
2133 |           "org.opencontainers.image.title": "metrics-server",
2134 |           "org.opencontainers.image.url": "https://github.com/kubernetes-sigs/metrics-server",
2135 |           "org.opencontainers.image.version": "3.13.0"
2136 |         },
2137 |         "path": "ocirepository/monitoring/metrics-server/sha256:457df0544ec2553176bbaaba70bf5b68af6c400eff510a401b8eba1b13f9a8ad.tar.gz",
2138 |         "revision": "3.13.0@sha256:457df0544ec2553176bbaaba70bf5b68af6c400eff510a401b8eba1b13f9a8ad",
2139 |         "size": 13998,
2140 |         "url": "http://source-controller.flux-system.svc.cluster.local./ocirepository/monitoring/metrics-server/sha256:457df0544ec2553176bbaaba70bf5b68af6c400eff510a401b8eba1b13f9a8ad.tar.gz"
2141 |       },
2142 |       "conditions": [
2143 |         {
2144 |           "lastTransitionTime": "2025-11-01T23:31:42Z",
2145 |           "message": "stored artifact for digest '3.13.0@sha256:457df0544ec2553176bbaaba70bf5b68af6c400eff510a401b8eba1b13f9a8ad'",
2146 |           "observedGeneration": 1,
2147 |           "reason": "Succeeded",
2148 |           "status": "True",
2149 |           "type": "Ready"
2150 |         },
2151 |         {
2152 |           "lastTransitionTime": "2025-11-01T23:31:42Z",
2153 |           "message": "stored artifact for digest '3.13.0@sha256:457df0544ec2553176bbaaba70bf5b68af6c400eff510a401b8eba1b13f9a8ad'",
2154 |           "observedGeneration": 1,
2155 |           "reason": "Succeeded",
2156 |           "status": "True",
2157 |           "type": "ArtifactInStorage"
2158 |         }
2159 |       ],
2160 |       "observedGeneration": 1,
2161 |       "observedLayerSelector": {
2162 |         "mediaType": "application/vnd.cncf.helm.chart.content.v1.tar+gzip",
2163 |         "operation": "copy"
2164 |       },
2165 |       "url": "http://source-controller.flux-system.svc.cluster.local./ocirepository/monitoring/metrics-server/latest.tar.gz"
2166 |     }
2167 |   },
2168 |   {
2169 |     "apiVersion": "fluxcd.controlplane.io/v1",
2170 |     "kind": "ResourceSet",
2171 |     "metadata": {
2172 |       "annotations": {
2173 |         "fluxcd.controlplane.io/reconcileTimeout": "5m"
2174 |       },
2175 |       "name": "cert-manager",
2176 |       "namespace": "flux-system"
2177 |     },
2178 |     "spec": {
2179 |       "commonMetadata": {
2180 |         "labels": {
2181 |           "app.kubernetes.io/name": "cert-manager"
2182 |         }
2183 |       },
2184 |       "inputs": [
2185 |         {
2186 |           "namespace": "cert-manager",
2187 |           "version": "*"
2188 |         }
2189 |       ],
2190 |       "resources": [
2191 |         {
2192 |           "apiVersion": "v1",
2193 |           "kind": "Namespace",
2194 |           "metadata": {
2195 |             "name": "<< inputs.namespace >>"
2196 |           }
2197 |         },
2198 |         {
2199 |           "apiVersion": "source.toolkit.fluxcd.io/v1",
2200 |           "kind": "OCIRepository",
2201 |           "metadata": {
2202 |             "name": "<< inputs.provider.name >>",
2203 |             "namespace": "<< inputs.namespace >>"
2204 |           },
2205 |           "spec": {
2206 |             "interval": "24h",
2207 |             "layerSelector": {
2208 |               "mediaType": "application/vnd.cncf.helm.chart.content.v1.tar+gzip",
2209 |               "operation": "copy"
2210 |             },
2211 |             "ref": {
2212 |               "semver": "<< inputs.version | quote >>"
2213 |             },
2214 |             "url": "oci://quay.io/jetstack/charts/cert-manager"
2215 |           }
2216 |         },
2217 |         {
2218 |           "apiVersion": "helm.toolkit.fluxcd.io/v2",
2219 |           "kind": "HelmRelease",
2220 |           "metadata": {
2221 |             "name": "<< inputs.provider.name >>",
2222 |             "namespace": "<< inputs.namespace >>"
2223 |           },
2224 |           "spec": {
2225 |             "chartRef": {
2226 |               "kind": "OCIRepository",
2227 |               "name": "<< inputs.provider.name >>"
2228 |             },
2229 |             "install": {
2230 |               "strategy": {
2231 |                 "name": "RetryOnFailure",
2232 |                 "retryInterval": "2m"
2233 |               }
2234 |             },
2235 |             "interval": "24h",
2236 |             "releaseName": "<< inputs.provider.name >>",
2237 |             "upgrade": {
2238 |               "strategy": {
2239 |                 "name": "RetryOnFailure",
2240 |                 "retryInterval": "3m"
2241 |               }
2242 |             },
2243 |             "values": {
2244 |               "crds": {
2245 |                 "enabled": true,
2246 |                 "keep": false
2247 |               }
2248 |             }
2249 |           }
2250 |         }
2251 |       ],
2252 |       "wait": true
2253 |     },
2254 |     "status": {
2255 |       "reconcilerRef": {
2256 |         "status": "Ready",
2257 |         "message": "Reconciliation finished in 35ms",
2258 |         "lastReconciled": "2025-11-18T11:52:14Z",
2259 |         "managedBy": "Kustomization/flux-system/flux-system"
2260 |       },
2261 |       "conditions": [
2262 |         {
2263 |           "lastTransitionTime": "2025-11-18T11:52:14Z",
2264 |           "message": "Reconciliation finished in 35ms",
2265 |           "observedGeneration": 1,
2266 |           "reason": "ReconciliationSucceeded",
2267 |           "status": "True",
2268 |           "type": "Ready"
2269 |         }
2270 |       ],
2271 |       "history": [
2272 |         {
2273 |           "digest": "sha256:7fa8d9d91bb4e05001d434630939607ab789ffbb8e34e567bb40fb315248c2f4",
2274 |           "firstReconciled": "2025-11-01T23:31:39Z",
2275 |           "lastReconciled": "2025-11-18T11:52:14Z",
2276 |           "lastReconciledDuration": "34.995209ms",
2277 |           "lastReconciledStatus": "ReconciliationSucceeded",
2278 |           "metadata": {
2279 |             "inputs": "1",
2280 |             "resources": "3"
2281 |           },
2282 |           "totalReconciliations": 398
2283 |         }
2284 |       ],
2285 |       "inventory": [
2286 |         {
2287 |           "apiVersion": "v1",
2288 |           "kind": "Namespace",
2289 |           "name": "cert-manager",
2290 |           "namespace": ""
2291 |         },
2292 |         {
2293 |           "apiVersion": "helm.toolkit.fluxcd.io/v2",
2294 |           "kind": "HelmRelease",
2295 |           "name": "cert-manager",
2296 |           "namespace": "cert-manager"
2297 |         },
2298 |         {
2299 |           "apiVersion": "source.toolkit.fluxcd.io/v1",
2300 |           "kind": "OCIRepository",
2301 |           "name": "cert-manager",
2302 |           "namespace": "cert-manager"
2303 |         }
2304 |       ],
2305 |       "lastAppliedRevision": "sha256:7fa8d9d91bb4e05001d434630939607ab789ffbb8e34e567bb40fb315248c2f4"
2306 |     }
2307 |   },
2308 |   {
2309 |     "apiVersion": "fluxcd.controlplane.io/v1",
2310 |     "kind": "ResourceSet",
2311 |     "metadata": {
2312 |       "annotations": {
2313 |         "fluxcd.controlplane.io/reconcileTimeout": "7m"
2314 |       },
2315 |       "name": "cluster-infra",
2316 |       "namespace": "flux-system"
2317 |     },
2318 |     "spec": {
2319 |       "inputs": [
2320 |         {
2321 |           "source": "GitRepository"
2322 |         }
2323 |       ],
2324 |       "resources": [
2325 |         {
2326 |           "apiVersion": "kustomize.toolkit.fluxcd.io/v1",
2327 |           "kind": "Kustomization",
2328 |           "metadata": {
2329 |             "name": "<< inputs.provider.name >>",
2330 |             "namespace": "<< inputs.provider.namespace >>"
2331 |           },
2332 |           "spec": {
2333 |             "healthCheckExprs": [
2334 |               {
2335 |                 "apiVersion": "fluxcd.controlplane.io/v1",
2336 |                 "current": "status.conditions.filter(c, c.type == 'Ready').all(c, c.status == 'True' && c.observedGeneration == metadata.generation)",
2337 |                 "kind": "ResourceSet"
2338 |               }
2339 |             ],
2340 |             "interval": "1h",
2341 |             "path": "infra",
2342 |             "prune": true,
2343 |             "retryInterval": "2m",
2344 |             "sourceRef": {
2345 |               "kind": "<< inputs.source >>",
2346 |               "name": "<< inputs.provider.namespace >>"
2347 |             },
2348 |             "timeout": "6m",
2349 |             "wait": true
2350 |           }
2351 |         }
2352 |       ]
2353 |     },
2354 |     "status": {
2355 |       "reconcilerRef": {
2356 |         "status": "Ready",
2357 |         "message": "Reconciliation finished in 27ms",
2358 |         "lastReconciled": "2025-11-18T11:50:16Z",
2359 |         "managedBy": "Kustomization/flux-system/flux-system"
2360 |       },
2361 |       "conditions": [
2362 |         {
2363 |           "lastTransitionTime": "2025-11-18T11:50:16Z",
2364 |           "message": "Reconciliation finished in 27ms",
2365 |           "observedGeneration": 1,
2366 |           "reason": "ReconciliationSucceeded",
2367 |           "status": "True",
2368 |           "type": "Ready"
2369 |         }
2370 |       ],
2371 |       "history": [
2372 |         {
2373 |           "digest": "sha256:3d97f8ccfa15bbfeae07f0b32c618a8a6ba97ac3d3a11c62bf41e1d8c05625a9",
2374 |           "firstReconciled": "2025-11-01T23:30:58Z",
2375 |           "lastReconciled": "2025-11-18T11:50:16Z",
2376 |           "lastReconciledDuration": "26.626ms",
2377 |           "lastReconciledStatus": "ReconciliationSucceeded",
2378 |           "metadata": {
2379 |             "inputs": "1",
2380 |             "resources": "1"
2381 |           },
2382 |           "totalReconciliations": 397
2383 |         }
2384 |       ],
2385 |       "inventory": [
2386 |         {
2387 |           "apiVersion": "kustomize.toolkit.fluxcd.io/v1",
2388 |           "kind": "Kustomization",
2389 |           "name": "cluster-infra",
2390 |           "namespace": "flux-system"
2391 |         }
2392 |       ],
2393 |       "lastAppliedRevision": "sha256:3d97f8ccfa15bbfeae07f0b32c618a8a6ba97ac3d3a11c62bf41e1d8c05625a9"
2394 |     }
2395 |   },
2396 |   {
2397 |     "apiVersion": "fluxcd.controlplane.io/v1",
2398 |     "kind": "ResourceSet",
2399 |     "metadata": {
2400 |       "annotations": {
2401 |         "fluxcd.controlplane.io/reconcileTimeout": "5m"
2402 |       },
2403 |       "labels": {
2404 |         "app.kubernetes.io/instance": "flux-operator",
2405 |         "app.kubernetes.io/name": "flux-operator"
2406 |       },
2407 |       "name": "flux-operator",
2408 |       "namespace": "flux-system"
2409 |     },
2410 |     "spec": {
2411 |       "inputs": [
2412 |         {
2413 |           "interval": "1h",
2414 |           "url": "oci://ghcr.io/controlplaneio-fluxcd/flux-operator-manifests"
2415 |         }
2416 |       ],
2417 |       "resources": [
2418 |         {
2419 |           "apiVersion": "source.toolkit.fluxcd.io/v1",
2420 |           "kind": "OCIRepository",
2421 |           "metadata": {
2422 |             "name": "<< inputs.provider.name >>",
2423 |             "namespace": "<< inputs.provider.namespace >>"
2424 |           },
2425 |           "spec": {
2426 |             "interval": "<< inputs.interval | quote >>",
2427 |             "ref": {
2428 |               "tag": "latest"
2429 |             },
2430 |             "url": "<< inputs.url | quote >>"
2431 |           }
2432 |         },
2433 |         {
2434 |           "apiVersion": "kustomize.toolkit.fluxcd.io/v1",
2435 |           "kind": "Kustomization",
2436 |           "metadata": {
2437 |             "name": "<< inputs.provider.name >>",
2438 |             "namespace": "<< inputs.provider.namespace >>"
2439 |           },
2440 |           "spec": {
2441 |             "commonMetadata": {
2442 |               "labels": {
2443 |                 "app.kubernetes.io/instance": "flux-operator",
2444 |                 "app.kubernetes.io/name": "flux-operator"
2445 |               }
2446 |             },
2447 |             "deletionPolicy": "Orphan",
2448 |             "force": true,
2449 |             "interval": "24h",
2450 |             "patches": [
2451 |               {
2452 |                 "patch": "- op: replace\n  path: \"/spec/selector/matchLabels\"\n  value:\n    app.kubernetes.io/name: flux-operator\n    app.kubernetes.io/instance: flux-operator\n- op: replace\n  path: \"/spec/template/metadata/labels\"\n  value:\n    app.kubernetes.io/name: flux-operator\n    app.kubernetes.io/instance: flux-operator\n- op: add\n  path: \"/spec/template/spec/containers/0/env/-\"\n  value:\n    name: REPORTING_INTERVAL\n    value: \"30s\"",
2453 |                 "target": {
2454 |                   "kind": "Deployment"
2455 |                 }
2456 |               }
2457 |             ],
2458 |             "path": "./flux-operator",
2459 |             "prune": true,
2460 |             "retryInterval": "5m",
2461 |             "serviceAccountName": "<< inputs.provider.name >>",
2462 |             "sourceRef": {
2463 |               "kind": "OCIRepository",
2464 |               "name": "<< inputs.provider.name >>"
2465 |             },
2466 |             "timeout": "5m",
2467 |             "wait": true
2468 |           }
2469 |         }
2470 |       ],
2471 |       "wait": true
2472 |     },
2473 |     "status": {
2474 |       "reconcilerRef": {
2475 |         "status": "Ready",
2476 |         "message": "Reconciliation finished in 35ms",
2477 |         "lastReconciled": "2025-11-18T11:30:52Z",
2478 |         "managedBy": "Kustomization/flux-system/flux-system"
2479 |       },
2480 |       "conditions": [
2481 |         {
2482 |           "lastTransitionTime": "2025-11-18T11:30:52Z",
2483 |           "message": "Reconciliation finished in 35ms",
2484 |           "observedGeneration": 1,
2485 |           "reason": "ReconciliationSucceeded",
2486 |           "status": "True",
2487 |           "type": "Ready"
2488 |         }
2489 |       ],
2490 |       "history": [
2491 |         {
2492 |           "digest": "sha256:a324112e52314cc034cacda5c32d623d72fd952b2594149334d1823dd8df21ce",
2493 |           "firstReconciled": "2025-11-01T23:31:16Z",
2494 |           "lastReconciled": "2025-11-18T11:30:52Z",
2495 |           "lastReconciledDuration": "35.366792ms",
2496 |           "lastReconciledStatus": "ReconciliationSucceeded",
2497 |           "metadata": {
2498 |             "inputs": "1",
2499 |             "resources": "2"
2500 |           },
2501 |           "totalReconciliations": 397
2502 |         },
2503 |         {
2504 |           "digest": "sha256:3a9e7101640ce2cbe3c61e846863386fb388d999e987476b756dd2a68d99f5f2",
2505 |           "firstReconciled": "2025-11-11T14:06:19Z",
2506 |           "lastReconciled": "2025-11-11T14:11:19Z",
2507 |           "lastReconciledDuration": "5m0.047161594s",
2508 |           "lastReconciledStatus": "ReconciliationFailed",
2509 |           "metadata": {
2510 |             "inputs": "1",
2511 |             "resources": "2"
2512 |           },
2513 |           "totalReconciliations": 2
2514 |         }
2515 |       ],
2516 |       "inventory": [
2517 |         {
2518 |           "apiVersion": "kustomize.toolkit.fluxcd.io/v1",
2519 |           "kind": "Kustomization",
2520 |           "name": "flux-operator",
2521 |           "namespace": "flux-system"
2522 |         },
2523 |         {
2524 |           "apiVersion": "source.toolkit.fluxcd.io/v1",
2525 |           "kind": "OCIRepository",
2526 |           "name": "flux-operator",
2527 |           "namespace": "flux-system"
2528 |         }
2529 |       ],
2530 |       "lastAppliedRevision": "sha256:a324112e52314cc034cacda5c32d623d72fd952b2594149334d1823dd8df21ce"
2531 |     }
2532 |   },
2533 |   {
2534 |     "apiVersion": "fluxcd.controlplane.io/v1",
2535 |     "kind": "ResourceSet",
2536 |     "metadata": {
2537 |       "annotations": {
2538 |         "fluxcd.controlplane.io/reconcile": "enabled",
2539 |         "fluxcd.controlplane.io/reconcileTimeout": "5m",
2540 |       },
2541 |       "name": "flux-status-server",
2542 |       "namespace": "flux-system"
2543 |     },
2544 |     "spec": {
2545 |       "commonMetadata": {
2546 |         "labels": {
2547 |           "app.kubernetes.io/name": "flux-status-server"
2548 |         }
2549 |       },
2550 |       "dependsOn": [
2551 |         {
2552 |           "apiVersion": "tailscale.com/v1alpha1",
2553 |           "kind": "ProxyGroup",
2554 |           "name": "homelab-ingress",
2555 |           "ready": true,
2556 |           "readyExpr": "status.conditions.filter(c, c.type == 'ProxyGroupReady').all(c, c.status == 'True')"
2557 |         }
2558 |       ],
2559 |       "inputsFrom": [
2560 |         {
2561 |           "kind": "ResourceSetInputProvider",
2562 |           "name": "flux-status-server"
2563 |         }
2564 |       ],
2565 |       "resources": [
2566 |         {
2567 |           "apiVersion": "apps/v1",
2568 |           "kind": "Deployment",
2569 |           "metadata": {
2570 |             "name": "flux-status-server",
2571 |             "namespace": "<< inputs.provider.namespace >>"
2572 |           },
2573 |           "spec": {
2574 |             "selector": {
2575 |               "matchLabels": {
2576 |                 "app.kubernetes.io/name": "flux-status-server"
2577 |               }
2578 |             },
2579 |             "template": {
2580 |               "metadata": {
2581 |                 "annotations": {
2582 |                   "prometheus.io/port": "9797",
2583 |                   "prometheus.io/scrape": "true"
2584 |                 },
2585 |                 "labels": {
2586 |                   "app.kubernetes.io/name": "flux-status-server"
2587 |                 }
2588 |               },
2589 |               "spec": {
2590 |                 "containers": [
2591 |                   {
2592 |                     "args": [
2593 |                       "--web-server-only",
2594 |                       "--web-server-port=9080"
2595 |                     ],
2596 |                     "image": "homelab-registry.tailbeb47.ts.net/flux-operator:<< inputs.tag >>@<< inputs.digest >>",
2597 |                     "imagePullPolicy": "IfNotPresent",
2598 |                     "livenessProbe": {
2599 |                       "httpGet": {
2600 |                         "path": "/healthz",
2601 |                         "port": 8081
2602 |                       }
2603 |                     },
2604 |                     "name": "server",
2605 |                     "ports": [
2606 |                       {
2607 |                         "containerPort": 9080,
2608 |                         "name": "http-web",
2609 |                         "protocol": "TCP"
2610 |                       },
2611 |                       {
2612 |                         "containerPort": 8080,
2613 |                         "name": "http-metrics",
2614 |                         "protocol": "TCP"
2615 |                       },
2616 |                       {
2617 |                         "containerPort": 8081,
2618 |                         "name": "http",
2619 |                         "protocol": "TCP"
2620 |                       }
2621 |                     ],
2622 |                     "readinessProbe": {
2623 |                       "httpGet": {
2624 |                         "path": "/readyz",
2625 |                         "port": 8081
2626 |                       }
2627 |                     },
2628 |                     "resources": {
2629 |                       "limits": {
2630 |                         "cpu": "2000m",
2631 |                         "memory": "512Mi"
2632 |                       },
2633 |                       "requests": {
2634 |                         "cpu": "100m",
2635 |                         "memory": "64Mi"
2636 |                       }
2637 |                     },
2638 |                     "securityContext": {
2639 |                       "allowPrivilegeEscalation": false,
2640 |                       "capabilities": {
2641 |                         "drop": [
2642 |                           "ALL"
2643 |                         ]
2644 |                       },
2645 |                       "readOnlyRootFilesystem": true,
2646 |                       "runAsNonRoot": true
2647 |                     },
2648 |                     "volumeMounts": [
2649 |                       {
2650 |                         "mountPath": "/data",
2651 |                         "name": "data"
2652 |                       }
2653 |                     ]
2654 |                   }
2655 |                 ],
2656 |                 "securityContext": {
2657 |                   "fsGroup": 65534,
2658 |                   "runAsNonRoot": true,
2659 |                   "runAsUser": 65534,
2660 |                   "seccompProfile": {
2661 |                     "type": "RuntimeDefault"
2662 |                   }
2663 |                 },
2664 |                 "serviceAccountName": "flux-operator",
2665 |                 "volumes": [
2666 |                   {
2667 |                     "emptyDir": {},
2668 |                     "name": "data"
2669 |                   }
2670 |                 ]
2671 |               }
2672 |             }
2673 |           }
2674 |         },
2675 |         {
2676 |           "apiVersion": "v1",
2677 |           "kind": "Service",
2678 |           "metadata": {
2679 |             "name": "flux-status-server",
2680 |             "namespace": "<< inputs.provider.namespace >>"
2681 |           },
2682 |           "spec": {
2683 |             "ports": [
2684 |               {
2685 |                 "name": "http",
2686 |                 "port": 9080,
2687 |                 "protocol": "TCP",
2688 |                 "targetPort": 9080
2689 |               }
2690 |             ],
2691 |             "selector": {
2692 |               "app.kubernetes.io/name": "flux-status-server"
2693 |             },
2694 |             "type": "ClusterIP"
2695 |           }
2696 |         },
2697 |         {
2698 |           "apiVersion": "networking.k8s.io/v1",
2699 |           "kind": "Ingress",
2700 |           "metadata": {
2701 |             "annotations": {
2702 |               "tailscale.com/proxy-group": "homelab-ingress"
2703 |             },
2704 |             "name": "<< inputs.provider.name >>",
2705 |             "namespace": "<< inputs.provider.namespace >>"
2706 |           },
2707 |           "spec": {
2708 |             "defaultBackend": {
2709 |               "service": {
2710 |                 "name": "<< inputs.provider.name >>",
2711 |                 "port": {
2712 |                   "number": 9080
2713 |                 }
2714 |               }
2715 |             },
2716 |             "ingressClassName": "tailscale",
2717 |             "tls": [
2718 |               {
2719 |                 "hosts": [
2720 |                   "homelab-status-page"
2721 |                 ]
2722 |               }
2723 |             ]
2724 |           }
2725 |         },
2726 |         {
2727 |           "apiVersion": "networking.k8s.io/v1",
2728 |           "kind": "NetworkPolicy",
2729 |           "metadata": {
2730 |             "name": "<< inputs.provider.name >>",
2731 |             "namespace": "<< inputs.provider.namespace >>"
2732 |           },
2733 |           "spec": {
2734 |             "ingress": [
2735 |               {
2736 |                 "from": [
2737 |                   {
2738 |                     "namespaceSelector": {}
2739 |                   }
2740 |                 ]
2741 |               }
2742 |             ],
2743 |             "podSelector": {
2744 |               "matchLabels": {
2745 |                 "app.kubernetes.io/name": "<< inputs.provider.name >>"
2746 |               }
2747 |             },
2748 |             "policyTypes": [
2749 |               "Ingress"
2750 |             ]
2751 |           }
2752 |         }
2753 |       ],
2754 |       "wait": true
2755 |     },
2756 |     "status": {
2757 |       "reconcilerRef": {
2758 |         "status": "Ready",
2759 |         "message": "Reconciliation finished in 50ms",
2760 |         "lastReconciled": "2025-11-18T11:39:39Z",
2761 |         "managedBy": "Kustomization/flux-system/flux-system"
2762 |       },
2763 |       "inputProviderRefs":[
2764 |         {
2765 |           "type":"OCIArtifactTag",
2766 |           "name":"flux-status-server",
2767 |           "namespace":"flux-system"
2768 |         }
2769 |       ],
2770 |       "conditions": [
2771 |         {
2772 |           "lastTransitionTime": "2025-11-18T11:39:39Z",
2773 |           "message": "Reconciliation finished in 50ms",
2774 |           "observedGeneration": 5,
2775 |           "reason": "ReconciliationSucceeded",
2776 |           "status": "True",
2777 |           "type": "Ready"
2778 |         }
2779 |       ],
2780 |       "history": [
2781 |         {
2782 |           "digest": "sha256:5ffcfb1437cd080bdb2666161275b38461bb115c75117f6f40a5eb07347b989b",
2783 |           "firstReconciled": "2025-11-17T23:00:11Z",
2784 |           "lastReconciled": "2025-11-18T11:39:39Z",
2785 |           "lastReconciledDuration": "49.805625ms",
2786 |           "lastReconciledStatus": "ReconciliationSucceeded",
2787 |           "metadata": {
2788 |             "inputs": "1",
2789 |             "resources": "4"
2790 |           },
2791 |           "totalReconciliations": 14
2792 |         },
2793 |         {
2794 |           "digest": "sha256:20c7b71ba21561fb47538bb33bc3e5fbc57fadfe7ed87e24a6eeb29607ed6f52",
2795 |           "firstReconciled": "2025-11-17T11:14:42Z",
2796 |           "lastReconciled": "2025-11-17T22:35:06Z",
2797 |           "lastReconciledDuration": "51.145541ms",
2798 |           "lastReconciledStatus": "ReconciliationSucceeded",
2799 |           "metadata": {
2800 |             "inputs": "1",
2801 |             "resources": "4"
2802 |           },
2803 |           "totalReconciliations": 13
2804 |         },
2805 |         {
2806 |           "digest": "sha256:fa6bb5c1686a49103f2560c553dce70599dc7827a89b217031fbe063ea3e81a4",
2807 |           "firstReconciled": "2025-11-17T00:54:25Z",
2808 |           "lastReconciled": "2025-11-17T10:40:44Z",
2809 |           "lastReconciledDuration": "50.215125ms",
2810 |           "lastReconciledStatus": "ReconciliationSucceeded",
2811 |           "metadata": {
2812 |             "inputs": "1",
2813 |             "resources": "4"
2814 |           },
2815 |           "totalReconciliations": 11
2816 |         },
2817 |         {
2818 |           "digest": "sha256:3c34079b744ee4dd9f1cd6f6ecfba696d61d53016a2aae175955b4c1c7d3dc29",
2819 |           "firstReconciled": "2025-11-06T21:35:38Z",
2820 |           "lastReconciled": "2025-11-17T00:34:50Z",
2821 |           "lastReconciledDuration": "54.078459ms",
2822 |           "lastReconciledStatus": "ReconciliationSucceeded",
2823 |           "metadata": {
2824 |             "inputs": "1",
2825 |             "resources": "4"
2826 |           },
2827 |           "totalReconciliations": 246
2828 |         },
2829 |         {
2830 |           "digest": "sha256:9d5d73e9806e24c731cfac9bddfa40c2f14bd26b983ff9c08b7bc2a38f3cc503",
2831 |           "firstReconciled": "2025-11-06T21:29:37Z",
2832 |           "lastReconciled": "2025-11-06T21:33:01Z",
2833 |           "lastReconciledDuration": "29.65225ms",
2834 |           "lastReconciledStatus": "ReconciliationFailed",
2835 |           "metadata": {
2836 |             "inputs": "1",
2837 |             "resources": "4"
2838 |           },
2839 |           "totalReconciliations": 10
2840 |         }
2841 |       ],
2842 |       "inventory": [
2843 |         {
2844 |           "apiVersion": "v1",
2845 |           "kind": "Service",
2846 |           "name": "flux-status-server",
2847 |           "namespace": "flux-system"
2848 |         },
2849 |         {
2850 |           "apiVersion": "apps/v1",
2851 |           "kind": "Deployment",
2852 |           "name": "flux-status-server",
2853 |           "namespace": "flux-system"
2854 |         },
2855 |         {
2856 |           "apiVersion": "networking.k8s.io/v1",
2857 |           "kind": "Ingress",
2858 |           "name": "flux-status-server",
2859 |           "namespace": "flux-system"
2860 |         },
2861 |         {
2862 |           "apiVersion": "networking.k8s.io/v1",
2863 |           "kind": "NetworkPolicy",
2864 |           "name": "flux-status-server",
2865 |           "namespace": "flux-system"
2866 |         }
2867 |       ],
2868 |       "lastAppliedRevision": "sha256:5ffcfb1437cd080bdb2666161275b38461bb115c75117f6f40a5eb07347b989b",
2869 |       "lastHandledReconcileAt": "2025-11-06T23:33:00.823725+02:00"
2870 |     }
2871 |   },
2872 |   {
2873 |     "apiVersion": "fluxcd.controlplane.io/v1",
2874 |     "kind": "ResourceSet",
2875 |     "metadata": {
2876 |       "annotations": {
2877 |         "fluxcd.controlplane.io/reconcileTimeout": "5m"
2878 |       },
2879 |       "name": "metrics-server",
2880 |       "namespace": "flux-system"
2881 |     },
2882 |     "spec": {
2883 |       "commonMetadata": {
2884 |         "labels": {
2885 |           "app.kubernetes.io/name": "metrics-server"
2886 |         }
2887 |       },
2888 |       "dependsOn": [
2889 |         {
2890 |           "apiVersion": "fluxcd.controlplane.io/v1",
2891 |           "kind": "ResourceSet",
2892 |           "name": "cert-manager",
2893 |           "namespace": "flux-system",
2894 |           "ready": true
2895 |         }
2896 |       ],
2897 |       "inputs": [
2898 |         {
2899 |           "namespace": "monitoring",
2900 |           "version": "*"
2901 |         }
2902 |       ],
2903 |       "resources": [
2904 |         {
2905 |           "apiVersion": "v1",
2906 |           "kind": "Namespace",
2907 |           "metadata": {
2908 |             "name": "<< inputs.namespace >>"
2909 |           }
2910 |         },
2911 |         {
2912 |           "apiVersion": "source.toolkit.fluxcd.io/v1",
2913 |           "kind": "OCIRepository",
2914 |           "metadata": {
2915 |             "name": "<< inputs.provider.name >>",
2916 |             "namespace": "<< inputs.namespace >>"
2917 |           },
2918 |           "spec": {
2919 |             "interval": "24h",
2920 |             "layerSelector": {
2921 |               "mediaType": "application/vnd.cncf.helm.chart.content.v1.tar+gzip",
2922 |               "operation": "copy"
2923 |             },
2924 |             "ref": {
2925 |               "semver": "<< inputs.version | quote >>"
2926 |             },
2927 |             "url": "oci://ghcr.io/controlplaneio-fluxcd/charts/metrics-server"
2928 |           }
2929 |         },
2930 |         {
2931 |           "apiVersion": "helm.toolkit.fluxcd.io/v2",
2932 |           "kind": "HelmRelease",
2933 |           "metadata": {
2934 |             "name": "<< inputs.provider.name >>",
2935 |             "namespace": "<< inputs.namespace >>"
2936 |           },
2937 |           "spec": {
2938 |             "chartRef": {
2939 |               "kind": "OCIRepository",
2940 |               "name": "<< inputs.provider.name >>"
2941 |             },
2942 |             "install": {
2943 |               "strategy": {
2944 |                 "name": "RetryOnFailure",
2945 |                 "retryInterval": "2m"
2946 |               }
2947 |             },
2948 |             "interval": "24h",
2949 |             "releaseName": "<< inputs.provider.name >>",
2950 |             "upgrade": {
2951 |               "strategy": {
2952 |                 "name": "RetryOnFailure",
2953 |                 "retryInterval": "3m"
2954 |               }
2955 |             },
2956 |             "values": {
2957 |               "apiService": {
2958 |                 "insecureSkipTLSVerify": false
2959 |               },
2960 |               "args": [
2961 |                 "--kubelet-insecure-tls"
2962 |               ],
2963 |               "tls": {
2964 |                 "type": "cert-manager"
2965 |               }
2966 |             }
2967 |           }
2968 |         }
2969 |       ],
2970 |       "wait": true
2971 |     },
2972 |     "status": {
2973 |       "reconcilerRef": {
2974 |         "status": "Ready",
2975 |         "message": "Reconciliation finished in 36ms",
2976 |         "lastReconciled": "2025-11-18T10:56:54Z",
2977 |         "managedBy": "Kustomization/flux-system/flux-system"
2978 |       },
2979 |       "conditions": [
2980 |         {
2981 |           "lastTransitionTime": "2025-11-18T10:56:54Z",
2982 |           "message": "Reconciliation finished in 36ms",
2983 |           "observedGeneration": 1,
2984 |           "reason": "ReconciliationSucceeded",
2985 |           "status": "True",
2986 |           "type": "Ready"
2987 |         }
2988 |       ],
2989 |       "history": [
2990 |         {
2991 |           "digest": "sha256:a2e6b4e28249995ae6a7e25b687b39f6b18101c1405391466a0cba1054c58603",
2992 |           "firstReconciled": "2025-11-01T23:32:15Z",
2993 |           "lastReconciled": "2025-11-18T10:56:54Z",
2994 |           "lastReconciledDuration": "36.074834ms",
2995 |           "lastReconciledStatus": "ReconciliationSucceeded",
2996 |           "metadata": {
2997 |             "inputs": "1",
2998 |             "resources": "3"
2999 |           },
3000 |           "totalReconciliations": 396
3001 |         }
3002 |       ],
3003 |       "inventory": [
3004 |         {
3005 |           "apiVersion": "v1",
3006 |           "kind": "Namespace",
3007 |           "name": "monitoring",
3008 |           "namespace": ""
3009 |         },
3010 |         {
3011 |           "apiVersion": "helm.toolkit.fluxcd.io/v2",
3012 |           "kind": "HelmRelease",
3013 |           "name": "metrics-server",
3014 |           "namespace": "monitoring"
3015 |         },
3016 |         {
3017 |           "apiVersion": "source.toolkit.fluxcd.io/v1",
3018 |           "kind": "OCIRepository",
3019 |           "name": "metrics-server",
3020 |           "namespace": "monitoring"
3021 |         }
3022 |       ],
3023 |       "lastAppliedRevision": "sha256:a2e6b4e28249995ae6a7e25b687b39f6b18101c1405391466a0cba1054c58603"
3024 |     }
3025 |   },
3026 |   {
3027 |     "apiVersion": "fluxcd.controlplane.io/v1",
3028 |     "kind": "ResourceSet",
3029 |     "metadata": {
3030 |       "annotations": {
3031 |         "fluxcd.controlplane.io/reconcileTimeout": "5m"
3032 |       },
3033 |       "name": "tailscale-config",
3034 |       "namespace": "flux-system"
3035 |     },
3036 |     "spec": {
3037 |       "commonMetadata": {
3038 |         "labels": {
3039 |           "app.kubernetes.io/name": "tailscale"
3040 |         }
3041 |       },
3042 |       "dependsOn": [
3043 |         {
3044 |           "apiVersion": "fluxcd.controlplane.io/v1",
3045 |           "kind": "ResourceSet",
3046 |           "name": "tailscale-operator",
3047 |           "namespace": "flux-system",
3048 |           "ready": true
3049 |         }
3050 |       ],
3051 |       "inputs": [
3052 |         {
3053 |           "hostnamePrefix": "homelab",
3054 |           "user": "stefanprodan@github"
3055 |         }
3056 |       ],
3057 |       "resources": [
3058 |         {
3059 |           "apiVersion": "rbac.authorization.k8s.io/v1",
3060 |           "kind": "ClusterRoleBinding",
3061 |           "metadata": {
3062 |             "name": "homelab-cluster-admin"
3063 |           },
3064 |           "roleRef": {
3065 |             "apiGroup": "rbac.authorization.k8s.io",
3066 |             "kind": "ClusterRole",
3067 |             "name": "cluster-admin"
3068 |           },
3069 |           "subjects": [
3070 |             {
3071 |               "apiGroup": "rbac.authorization.k8s.io",
3072 |               "kind": "User",
3073 |               "name": "<< inputs.user >>"
3074 |             }
3075 |           ]
3076 |         },
3077 |         {
3078 |           "apiVersion": "tailscale.com/v1alpha1",
3079 |           "kind": "ProxyGroup",
3080 |           "metadata": {
3081 |             "name": "<< inputs.hostnamePrefix >>-cluster"
3082 |           },
3083 |           "spec": {
3084 |             "kubeAPIServer": {
3085 |               "mode": "auth"
3086 |             },
3087 |             "replicas": 1,
3088 |             "tags": [
3089 |               "tag:k8s"
3090 |             ],
3091 |             "type": "kube-apiserver"
3092 |           }
3093 |         },
3094 |         {
3095 |           "apiVersion": "tailscale.com/v1alpha1",
3096 |           "kind": "ProxyGroup",
3097 |           "metadata": {
3098 |             "name": "<< inputs.hostnamePrefix >>-ingress"
3099 |           },
3100 |           "spec": {
3101 |             "replicas": 1,
3102 |             "tags": [
3103 |               "tag:k8s"
3104 |             ],
3105 |             "type": "ingress"
3106 |           }
3107 |         }
3108 |       ]
3109 |     },
3110 |     "status": {
3111 |       "reconcilerRef": {
3112 |         "status": "Ready",
3113 |         "message": "Reconciliation finished in 31ms",
3114 |         "lastReconciled": "2025-11-18T11:25:10Z",
3115 |         "managedBy": "Kustomization/flux-system/flux-system"
3116 |       },
3117 |       "conditions": [
3118 |         {
3119 |           "lastTransitionTime": "2025-11-18T11:25:10Z",
3120 |           "message": "Reconciliation finished in 31ms",
3121 |           "observedGeneration": 2,
3122 |           "reason": "ReconciliationSucceeded",
3123 |           "status": "True",
3124 |           "type": "Ready"
3125 |         }
3126 |       ],
3127 |       "history": [
3128 |         {
3129 |           "digest": "sha256:2ba728f62df1f679a2d472c9fb24bf46daffe0f80129c30fc334f5fe3169619f",
3130 |           "firstReconciled": "2025-11-01T23:31:19Z",
3131 |           "lastReconciled": "2025-11-18T11:25:10Z",
3132 |           "lastReconciledDuration": "30.827166ms",
3133 |           "lastReconciledStatus": "ReconciliationSucceeded",
3134 |           "metadata": {
3135 |             "inputs": "1",
3136 |             "resources": "3"
3137 |           },
3138 |           "totalReconciliations": 398
3139 |         }
3140 |       ],
3141 |       "inventory": [
3142 |         {
3143 |           "apiVersion": "rbac.authorization.k8s.io/v1",
3144 |           "kind": "ClusterRoleBinding",
3145 |           "name": "homelab-cluster-admin",
3146 |           "namespace": ""
3147 |         },
3148 |         {
3149 |           "apiVersion": "tailscale.com/v1alpha1",
3150 |           "kind": "ProxyGroup",
3151 |           "name": "homelab-cluster",
3152 |           "namespace": ""
3153 |         },
3154 |         {
3155 |           "apiVersion": "tailscale.com/v1alpha1",
3156 |           "kind": "ProxyGroup",
3157 |           "name": "homelab-ingress",
3158 |           "namespace": ""
3159 |         }
3160 |       ],
3161 |       "lastAppliedRevision": "sha256:2ba728f62df1f679a2d472c9fb24bf46daffe0f80129c30fc334f5fe3169619f"
3162 |     }
3163 |   },
3164 |   {
3165 |     "apiVersion": "fluxcd.controlplane.io/v1",
3166 |     "kind": "ResourceSet",
3167 |     "metadata": {
3168 |       "annotations": {
3169 |         "fluxcd.controlplane.io/reconcileTimeout": "5m"
3170 |       },
3171 |       "name": "tailscale-operator",
3172 |       "namespace": "flux-system"
3173 |     },
3174 |     "spec": {
3175 |       "commonMetadata": {
3176 |         "labels": {
3177 |           "app.kubernetes.io/name": "tailscale"
3178 |         }
3179 |       },
3180 |       "inputs": [
3181 |         {
3182 |           "hostnamePrefix": "homelab",
3183 |           "namespace": "tailscale",
3184 |           "version": "*"
3185 |         }
3186 |       ],
3187 |       "resources": [
3188 |         {
3189 |           "apiVersion": "v1",
3190 |           "kind": "Namespace",
3191 |           "metadata": {
3192 |             "name": "<< inputs.namespace >>"
3193 |           }
3194 |         },
3195 |         {
3196 |           "apiVersion": "v1",
3197 |           "kind": "Secret",
3198 |           "metadata": {
3199 |             "annotations": {
3200 |               "fluxcd.controlplane.io/copyFrom": "flux-system/tailscale-oauth"
3201 |             },
3202 |             "name": "operator-oauth",
3203 |             "namespace": "<< inputs.namespace >>"
3204 |           }
3205 |         },
3206 |         {
3207 |           "apiVersion": "source.toolkit.fluxcd.io/v1",
3208 |           "kind": "HelmRepository",
3209 |           "metadata": {
3210 |             "name": "<< inputs.provider.name >>",
3211 |             "namespace": "<< inputs.namespace >>"
3212 |           },
3213 |           "spec": {
3214 |             "interval": "24h",
3215 |             "url": "https://pkgs.tailscale.com/helmcharts"
3216 |           }
3217 |         },
3218 |         {
3219 |           "apiVersion": "helm.toolkit.fluxcd.io/v2",
3220 |           "kind": "HelmRelease",
3221 |           "metadata": {
3222 |             "name": "<< inputs.provider.name >>",
3223 |             "namespace": "<< inputs.namespace >>"
3224 |           },
3225 |           "spec": {
3226 |             "chart": {
3227 |               "spec": {
3228 |                 "chart": "tailscale-operator",
3229 |                 "interval": "24h",
3230 |                 "sourceRef": {
3231 |                   "kind": "HelmRepository",
3232 |                   "name": "<< inputs.provider.name >>"
3233 |                 },
3234 |                 "version": "*"
3235 |               }
3236 |             },
3237 |             "install": {
3238 |               "strategy": {
3239 |                 "name": "RetryOnFailure",
3240 |                 "retryInterval": "2m"
3241 |               }
3242 |             },
3243 |             "interval": "24h",
3244 |             "releaseName": "<< inputs.provider.name >>",
3245 |             "upgrade": {
3246 |               "strategy": {
3247 |                 "name": "RetryOnFailure",
3248 |                 "retryInterval": "3m"
3249 |               }
3250 |             },
3251 |             "values": {
3252 |               "apiServerProxyConfig": {
3253 |                 "allowImpersonation": "true",
3254 |                 "mode": "false"
3255 |               },
3256 |               "operatorConfig": {
3257 |                 "hostname": "<< inputs.hostnamePrefix >>-operator"
3258 |               },
3259 |               "resources": {
3260 |                 "limits": {
3261 |                   "cpu": "2000m",
3262 |                   "memory": "1Gi"
3263 |                 },
3264 |                 "requests": {
3265 |                   "cpu": "100m",
3266 |                   "memory": "128Mi"
3267 |                 }
3268 |               }
3269 |             }
3270 |           }
3271 |         }
3272 |       ],
3273 |       "wait": true
3274 |     },
3275 |     "status": {
3276 |       "reconcilerRef": {
3277 |         "status": "Ready",
3278 |         "message": "Reconciliation finished in 43ms",
3279 |         "lastReconciled": "2025-11-18T11:52:24Z",
3280 |         "managedBy": "Kustomization/flux-system/flux-system"
3281 |       },
3282 |       "conditions": [
3283 |         {
3284 |           "lastTransitionTime": "2025-11-18T11:52:24Z",
3285 |           "message": "Reconciliation finished in 43ms",
3286 |           "observedGeneration": 2,
3287 |           "reason": "ReconciliationSucceeded",
3288 |           "status": "True",
3289 |           "type": "Ready"
3290 |         }
3291 |       ],
3292 |       "history": [
3293 |         {
3294 |           "digest": "sha256:35c7432bd251f8eec9a71f0937ac33c9ca086702e340992c56a1a977a65cfeae",
3295 |           "firstReconciled": "2025-11-01T23:31:14Z",
3296 |           "lastReconciled": "2025-11-18T11:52:24Z",
3297 |           "lastReconciledDuration": "43.119459ms",
3298 |           "lastReconciledStatus": "ReconciliationSucceeded",
3299 |           "metadata": {
3300 |             "inputs": "1",
3301 |             "resources": "4"
3302 |           },
3303 |           "totalReconciliations": 398
3304 |         }
3305 |       ],
3306 |       "inventory": [
3307 |         {
3308 |           "apiVersion": "v1",
3309 |           "kind": "Namespace",
3310 |           "name": "tailscale",
3311 |           "namespace": ""
3312 |         },
3313 |         {
3314 |           "apiVersion": "v1",
3315 |           "kind": "Secret",
3316 |           "name": "operator-oauth",
3317 |           "namespace": "tailscale"
3318 |         },
3319 |         {
3320 |           "apiVersion": "helm.toolkit.fluxcd.io/v2",
3321 |           "kind": "HelmRelease",
3322 |           "name": "tailscale-operator",
3323 |           "namespace": "tailscale"
3324 |         },
3325 |         {
3326 |           "apiVersion": "source.toolkit.fluxcd.io/v1",
3327 |           "kind": "HelmRepository",
3328 |           "name": "tailscale-operator",
3329 |           "namespace": "tailscale"
3330 |         }
3331 |       ],
3332 |       "lastAppliedRevision": "sha256:35c7432bd251f8eec9a71f0937ac33c9ca086702e340992c56a1a977a65cfeae"
3333 |     }
3334 |   },
3335 |   {
3336 |     "apiVersion": "fluxcd.controlplane.io/v1",
3337 |     "kind": "ResourceSet",
3338 |     "metadata": {
3339 |       "annotations": {
3340 |         "fluxcd.controlplane.io/reconcileTimeout": "5m"
3341 |       },
3342 |       "name": "zot-registry",
3343 |       "namespace": "flux-system"
3344 |     },
3345 |     "spec": {
3346 |       "commonMetadata": {
3347 |         "labels": {
3348 |           "app.kubernetes.io/name": "zot"
3349 |         }
3350 |       },
3351 |       "dependsOn": [
3352 |         {
3353 |           "apiVersion": "tailscale.com/v1alpha1",
3354 |           "kind": "ProxyGroup",
3355 |           "name": "homelab-ingress",
3356 |           "ready": true,
3357 |           "readyExpr": "status.conditions.filter(c, c.type == 'ProxyGroupReady').all(c, c.status == 'True')"
3358 |         }
3359 |       ],
3360 |       "inputs": [
3361 |         {
3362 |           "hostnamePrefix": "homelab",
3363 |           "namespace": "registry",
3364 |           "version": "*"
3365 |         }
3366 |       ],
3367 |       "resources": [
3368 |         {
3369 |           "apiVersion": "v1",
3370 |           "kind": "Namespace",
3371 |           "metadata": {
3372 |             "name": "<< inputs.namespace >>"
3373 |           }
3374 |         },
3375 |         {
3376 |           "apiVersion": "source.toolkit.fluxcd.io/v1",
3377 |           "kind": "HelmRepository",
3378 |           "metadata": {
3379 |             "name": "<< inputs.provider.name >>",
3380 |             "namespace": "<< inputs.namespace >>"
3381 |           },
3382 |           "spec": {
3383 |             "interval": "24h",
3384 |             "url": "https://zotregistry.dev/helm-charts"
3385 |           }
3386 |         },
3387 |         {
3388 |           "apiVersion": "helm.toolkit.fluxcd.io/v2",
3389 |           "kind": "HelmRelease",
3390 |           "metadata": {
3391 |             "name": "<< inputs.provider.name >>",
3392 |             "namespace": "<< inputs.namespace >>"
3393 |           },
3394 |           "spec": {
3395 |             "chart": {
3396 |               "spec": {
3397 |                 "chart": "zot",
3398 |                 "interval": "24h",
3399 |                 "sourceRef": {
3400 |                   "kind": "HelmRepository",
3401 |                   "name": "<< inputs.provider.name >>"
3402 |                 },
3403 |                 "version": "*"
3404 |               }
3405 |             },
3406 |             "install": {
3407 |               "strategy": {
3408 |                 "name": "RetryOnFailure",
3409 |                 "retryInterval": "2m"
3410 |               }
3411 |             },
3412 |             "interval": "24h",
3413 |             "releaseName": "<< inputs.provider.name >>",
3414 |             "upgrade": {
3415 |               "strategy": {
3416 |                 "name": "RetryOnFailure",
3417 |                 "retryInterval": "3m"
3418 |               }
3419 |             },
3420 |             "values": {
3421 |               "fullnameOverride": "<< inputs.provider.name >>",
3422 |               "persistence": true,
3423 |               "pvc": {
3424 |                 "create": true,
3425 |                 "storage": "20Gi",
3426 |                 "storageClassName": "standard"
3427 |               },
3428 |               "resources": {
3429 |                 "limits": {
3430 |                   "cpu": "2000m",
3431 |                   "memory": "1Gi"
3432 |                 },
3433 |                 "requests": {
3434 |                   "cpu": "100m",
3435 |                   "memory": "128Mi"
3436 |                 }
3437 |               },
3438 |               "service": {
3439 |                 "port": 80,
3440 |                 "type": "ClusterIP"
3441 |               },
3442 |               "strategy": {
3443 |                 "type": "Recreate"
3444 |               }
3445 |             }
3446 |           }
3447 |         },
3448 |         {
3449 |           "apiVersion": "networking.k8s.io/v1",
3450 |           "kind": "Ingress",
3451 |           "metadata": {
3452 |             "annotations": {
3453 |               "tailscale.com/proxy-group": "<< inputs.hostnamePrefix >>-ingress"
3454 |             },
3455 |             "name": "<< inputs.provider.name >>",
3456 |             "namespace": "<< inputs.namespace >>"
3457 |           },
3458 |           "spec": {
3459 |             "defaultBackend": {
3460 |               "service": {
3461 |                 "name": "<< inputs.provider.name >>",
3462 |                 "port": {
3463 |                   "number": 80
3464 |                 }
3465 |               }
3466 |             },
3467 |             "ingressClassName": "tailscale",
3468 |             "tls": [
3469 |               {
3470 |                 "hosts": [
3471 |                   "<< inputs.hostnamePrefix >>-registry"
3472 |                 ]
3473 |               }
3474 |             ]
3475 |           }
3476 |         }
3477 |       ],
3478 |       "wait": true
3479 |     },
3480 |     "status": {
3481 |       "reconcilerRef": {
3482 |         "status": "Ready",
3483 |         "message": "Reconciliation finished in 41ms",
3484 |         "lastReconciled": "2025-11-18T10:54:54Z",
3485 |         "managedBy": "Kustomization/flux-system/flux-system"
3486 |       },
3487 |       "conditions": [
3488 |         {
3489 |           "lastTransitionTime": "2025-11-18T10:54:54Z",
3490 |           "message": "Reconciliation finished in 41ms",
3491 |           "observedGeneration": 3,
3492 |           "reason": "ReconciliationSucceeded",
3493 |           "status": "True",
3494 |           "type": "Ready"
3495 |         }
3496 |       ],
3497 |       "history": [
3498 |         {
3499 |           "digest": "sha256:b08adacc97ecc5b817ea654e7f091944304caca48a6e40334423b6a3dc416fc9",
3500 |           "firstReconciled": "2025-11-02T08:48:54Z",
3501 |           "lastReconciled": "2025-11-18T10:54:54Z",
3502 |           "lastReconciledDuration": "41.419084ms",
3503 |           "lastReconciledStatus": "ReconciliationSucceeded",
3504 |           "metadata": {
3505 |             "inputs": "1",
3506 |             "resources": "4"
3507 |           },
3508 |           "totalReconciliations": 388
3509 |         },
3510 |         {
3511 |           "digest": "sha256:c260cf7082af1c618deaba00548d3c135969f2aa4a63b643698ca4c01588084b",
3512 |           "firstReconciled": "2025-11-01T23:32:20Z",
3513 |           "lastReconciled": "2025-11-02T08:34:57Z",
3514 |           "lastReconciledDuration": "39.261875ms",
3515 |           "lastReconciledStatus": "ReconciliationSucceeded",
3516 |           "metadata": {
3517 |             "inputs": "1",
3518 |             "resources": "4"
3519 |           },
3520 |           "totalReconciliations": 10
3521 |         }
3522 |       ],
3523 |       "inventory": [
3524 |         {
3525 |           "apiVersion": "v1",
3526 |           "kind": "Namespace",
3527 |           "name": "registry",
3528 |           "namespace": ""
3529 |         },
3530 |         {
3531 |           "apiVersion": "helm.toolkit.fluxcd.io/v2",
3532 |           "kind": "HelmRelease",
3533 |           "name": "zot-registry",
3534 |           "namespace": "registry"
3535 |         },
3536 |         {
3537 |           "apiVersion": "networking.k8s.io/v1",
3538 |           "kind": "Ingress",
3539 |           "name": "zot-registry",
3540 |           "namespace": "registry"
3541 |         },
3542 |         {
3543 |           "apiVersion": "source.toolkit.fluxcd.io/v1",
3544 |           "kind": "HelmRepository",
3545 |           "name": "zot-registry",
3546 |           "namespace": "registry"
3547 |         }
3548 |       ],
3549 |       "lastAppliedRevision": "sha256:b08adacc97ecc5b817ea654e7f091944304caca48a6e40334423b6a3dc416fc9"
3550 |     }
3551 |   },
3552 |   {
3553 |     "apiVersion": "fluxcd.controlplane.io/v1",
3554 |     "kind": "ResourceSetInputProvider",
3555 |     "metadata": {
3556 |       "annotations": {
3557 |         "fluxcd.controlplane.io/reconcileEvery": "5m",
3558 |       },
3559 |       "name": "flux-status-server",
3560 |       "namespace": "flux-system"
3561 |     },
3562 |     "spec": {
3563 |       "filter": {
3564 |         "includeTag": "web",
3565 |         "limit": 1
3566 |       },
3567 |       "type": "OCIArtifactTag",
3568 |       "url": "oci://homelab-registry.tailbeb47.ts.net/flux-operator"
3569 |     },
3570 |     "status": {
3571 |       "reconcilerRef": {
3572 |         "status": "Ready",
3573 |         "message": "Reconciliation finished in 207ms",
3574 |         "lastReconciled": "2025-11-18T12:15:29Z",
3575 |         "managedBy": "Kustomization/flux-system/flux-system"
3576 |       },
3577 |       "conditions": [
3578 |         {
3579 |           "lastTransitionTime": "2025-11-18T12:15:29Z",
3580 |           "message": "Reconciliation finished in 207ms",
3581 |           "observedGeneration": 2,
3582 |           "reason": "ReconciliationSucceeded",
3583 |           "status": "True",
3584 |           "type": "Ready"
3585 |         }
3586 |       ],
3587 |       "exportedInputs": [
3588 |         {
3589 |           "digest": "sha256:2af20e4de759d1edf881a2ce1c6d2fd8eec830d2f9d43421ec49c2bf7b89975f",
3590 |           "id": "43254079",
3591 |           "tag": "web"
3592 |         }
3593 |       ],
3594 |       "lastExportedRevision": "sha256:f9680e09616a9d6a36d4e09538a039b1ee5a5c44871196c64b7b05ef45a9c9a0",
3595 |       "lastHandledReconcileAt": "2025-11-04T11:31:53.473116+02:00"
3596 |     }
3597 |   },
3598 |   {
3599 |     "apiVersion": "source.toolkit.fluxcd.io/v1",
3600 |     "kind": "Bucket",
3601 |     "metadata": {
3602 |       "name": "aws-configs",
3603 |       "namespace": "flux-system"
3604 |     },
3605 |     "spec": {
3606 |       "bucketName": "flux-configs",
3607 |       "endpoint": "s3.amazonaws.com",
3608 |       "interval": "5m0s",
3609 |       "provider": "aws",
3610 |       "region": "us-east-1"
3611 |     },
3612 |     "status": {
3613 |       "reconcilerRef": {
3614 |         "status": "Failed",
3615 |         "message": "authentication failed:\nSTS: AssumeRoleWithWebIdentity, https response error\nPost \"https://sts.arn.amazonaws.com/\": dial tcp: lookupts.arn.amazonaws.com on 10.100.0.10:53: no such host",
3616 |         "lastReconciled": "2025-11-18T10:30:00Z",
3617 |         "managedBy": "Kustomization/flux-system/flux-system"
3618 |       },
3619 |       "conditions": [
3620 |         {
3621 |           "lastTransitionTime": "2025-11-18T10:30:00Z",
3622 |           "message": "authentication failed:\nSTS: AssumeRoleWithWebIdentity, https response error\nPost \"https://sts.arn.amazonaws.com/\": dial tcp: lookupts.arn.amazonaws.com on 10.100.0.10:53: no such host",
3623 |           "observedGeneration": 1,
3624 |           "reason": "AuthenticationFailed",
3625 |           "status": "False",
3626 |           "type": "Ready"
3627 |         }
3628 |       ],
3629 |       "observedGeneration": 1
3630 |     }
3631 |   },
3632 |   {
3633 |     "apiVersion": "source.toolkit.fluxcd.io/v1",
3634 |     "kind": "Bucket",
3635 |     "metadata": {
3636 |       "name": "prod-configs",
3637 |       "namespace": "flux-system"
3638 |     },
3639 |     "spec": {
3640 |       "bucketName": "prod-configs",
3641 |       "endpoint": "s3.amazonaws.com",
3642 |       "interval": "10m0s",
3643 |       "provider": "aws",
3644 |       "region": "us-west-2"
3645 |     },
3646 |     "status": {
3647 |       "reconcilerRef": {
3648 |         "status": "Ready",
3649 |         "message": "stored artifact for revision 'sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'",
3650 |         "lastReconciled": "2025-11-18T08:30:00Z",
3651 |         "managedBy": "Kustomization/flux-system/flux-system"
3652 |       },
3653 |       "artifact": {
3654 |         "digest": "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
3655 |         "lastUpdateTime": "2025-11-18T08:30:00Z",
3656 |         "path": "bucket/flux-system/prod-configs/e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.tar.gz",
3657 |         "revision": "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
3658 |         "size": 2048,
3659 |         "url": "http://source-controller.flux-system.svc.cluster.local./bucket/flux-system/prod-configs/e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.tar.gz"
3660 |       },
3661 |       "conditions": [
3662 |         {
3663 |           "lastTransitionTime": "2025-11-18T08:30:00Z",
3664 |           "message": "stored artifact for revision 'sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'",
3665 |           "observedGeneration": 1,
3666 |           "reason": "Succeeded",
3667 |           "status": "True",
3668 |           "type": "Ready"
3669 |         },
3670 |         {
3671 |           "lastTransitionTime": "2025-11-18T08:30:00Z",
3672 |           "message": "stored artifact for revision 'sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'",
3673 |           "observedGeneration": 1,
3674 |           "reason": "Succeeded",
3675 |           "status": "True",
3676 |           "type": "ArtifactInStorage"
3677 |         }
3678 |       ],
3679 |       "observedGeneration": 1,
3680 |       "url": "http://source-controller.flux-system.svc.cluster.local./bucket/flux-system/prod-configs/latest.tar.gz"
3681 |     }
3682 |   },
3683 |   {
3684 |     "apiVersion": "source.toolkit.fluxcd.io/v1",
3685 |     "kind": "Bucket",
3686 |     "metadata": {
3687 |       "name": "dev-configs",
3688 |       "namespace": "flux-system"
3689 |     },
3690 |     "spec": {
3691 |       "bucketName": "dev-configs",
3692 |       "endpoint": "s3.amazonaws.com",
3693 |       "interval": "5m0s",
3694 |       "provider": "aws",
3695 |       "region": "us-west-2"
3696 |     },
3697 |     "status": {
3698 |       "reconcilerRef": {
3699 |         "status": "Ready",
3700 |         "message": "stored artifact for revision 'sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'",
3701 |         "lastReconciled": "2025-11-18T11:00:00Z",
3702 |         "managedBy": "Kustomization/flux-system/flux-system"
3703 |       },
3704 |       "artifact": {
3705 |         "digest": "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
3706 |         "lastUpdateTime": "2025-11-18T11:00:00Z",
3707 |         "path": "bucket/flux-system/dev-configs/e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.tar.gz",
3708 |         "revision": "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
3709 |         "size": 1024,
3710 |         "url": "http://source-controller.flux-system.svc.cluster.local./bucket/flux-system/dev-configs/e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.tar.gz"
3711 |       },
3712 |       "conditions": [
3713 |         {
3714 |           "lastTransitionTime": "2025-11-18T11:00:00Z",
3715 |           "message": "stored artifact for revision 'sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'",
3716 |           "observedGeneration": 1,
3717 |           "reason": "Succeeded",
3718 |           "status": "True",
3719 |           "type": "Ready"
3720 |         },
3721 |         {
3722 |           "lastTransitionTime": "2025-11-18T11:00:00Z",
3723 |           "message": "stored artifact for revision 'sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'",
3724 |           "observedGeneration": 1,
3725 |           "reason": "Succeeded",
3726 |           "status": "True",
3727 |           "type": "ArtifactInStorage"
3728 |         }
3729 |       ],
3730 |       "observedGeneration": 1,
3731 |       "url": "http://source-controller.flux-system.svc.cluster.local./bucket/flux-system/dev-configs/latest.tar.gz"
3732 |     }
3733 |   },
3734 |   {
3735 |     "apiVersion": "source.toolkit.fluxcd.io/v1",
3736 |     "kind": "Bucket",
3737 |     "metadata": {
3738 |       "name": "staging-configs",
3739 |       "namespace": "flux-system"
3740 |     },
3741 |     "spec": {
3742 |       "bucketName": "staging-configs",
3743 |       "endpoint": "s3.amazonaws.com",
3744 |       "interval": "5m0s",
3745 |       "provider": "aws",
3746 |       "region": "eu-west-1"
3747 |     },
3748 |     "status": {
3749 |       "reconcilerRef": {
3750 |         "status": "Progressing",
3751 |         "message": "reconciliation in progress: fetching artifact",
3752 |         "lastReconciled": "2025-11-18T11:00:00Z",
3753 |         "managedBy": "Kustomization/flux-system/flux-system"
3754 |       },
3755 |       "conditions": [
3756 |         {
3757 |           "lastTransitionTime": "2025-11-18T11:00:00Z",
3758 |           "message": "reconciliation in progress: fetching artifact",
3759 |           "observedGeneration": 1,
3760 |           "reason": "Progressing",
3761 |           "status": "Unknown",
3762 |           "type": "Ready"
3763 |         }
3764 |       ],
3765 |       "observedGeneration": 1
3766 |     }
3767 |   },
3768 |   {
3769 |     "apiVersion": "source.toolkit.fluxcd.io/v1",
3770 |     "kind": "Bucket",
3771 |     "metadata": {
3772 |       "name": "preview-configs",
3773 |       "namespace": "flux-system"
3774 |     },
3775 |     "spec": {
3776 |       "bucketName": "preview-configs",
3777 |       "endpoint": "s3.amazonaws.com",
3778 |       "interval": "10m0s",
3779 |       "provider": "aws",
3780 |       "region": "us-east-1",
3781 |       "suspend": true
3782 |     },
3783 |     "status": {
3784 |       "reconcilerRef": {
3785 |         "status": "Suspended",
3786 |         "message": "stored artifact for revision 'sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'",
3787 |         "lastReconciled": "2025-11-18T09:00:00Z",
3788 |         "managedBy": "Kustomization/flux-system/flux-system"
3789 |       },
3790 |       "artifact": {
3791 |         "digest": "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
3792 |         "lastUpdateTime": "2025-11-18T07:00:00Z",
3793 |         "path": "bucket/flux-system/preview-configs/e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.tar.gz",
3794 |         "revision": "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
3795 |         "size": 512,
3796 |         "url": "http://source-controller.flux-system.svc.cluster.local./bucket/flux-system/preview-configs/e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855.tar.gz"
3797 |       },
3798 |       "conditions": [
3799 |         {
3800 |           "lastTransitionTime": "2025-11-18T09:00:00Z",
3801 |           "message": "stored artifact for revision 'sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'",
3802 |           "observedGeneration": 1,
3803 |           "reason": "Succeeded",
3804 |           "status": "True",
3805 |           "type": "Ready"
3806 |         }
3807 |       ],
3808 |       "observedGeneration": 1,
3809 |       "url": "http://source-controller.flux-system.svc.cluster.local./bucket/flux-system/preview-configs/latest.tar.gz"
3810 |     }
3811 |   },
3812 |   {
3813 |     "apiVersion": "source.toolkit.fluxcd.io/v1",
3814 |     "kind": "Bucket",
3815 |     "metadata": {
3816 |       "annotations": {
3817 |         "kustomize.toolkit.fluxcd.io/ssa": "Ignore"
3818 |       },
3819 |       "name": "default-configs",
3820 |       "namespace": "default"
3821 |     },
3822 |     "spec": {
3823 |       "bucketName": "default-configs",
3824 |       "endpoint": "s3.amazonaws.com",
3825 |       "interval": "15m0s",
3826 |       "provider": "generic"
3827 |     },
3828 |     "status": {
3829 |       "reconcilerRef": {
3830 |         "status": "Unknown",
3831 |         "message": "No status information available",
3832 |         "lastReconciled": "2025-11-18T09:00:00Z",
3833 |         "managedBy": "Kustomization/flux-system/flux-system"
3834 |       },
3835 |       "observedGeneration": -1
3836 |     }
3837 |   },
3838 |   {
3839 |     "apiVersion": "notification.toolkit.fluxcd.io/v1beta3",
3840 |     "kind": "Alert",
3841 |     "metadata": {
3842 |       "name": "slack",
3843 |       "namespace": "flux-system"
3844 |     },
3845 |     "spec": {
3846 |       "eventSeverity": "info",
3847 |       "eventSources": [
3848 |         {
3849 |           "kind": "GitRepository",
3850 |           "name": "*"
3851 |         },
3852 |         {
3853 |           "kind": "Kustomization",
3854 |           "name": "*"
3855 |         },
3856 |         {
3857 |           "kind": "HelmRelease",
3858 |           "name": "*"
3859 |         }
3860 |       ],
3861 |       "providerRef": {
3862 |         "name": "slack"
3863 |       },
3864 |       "suspend": false
3865 |     },
3866 |     "status": {
3867 |       "reconcilerRef": {
3868 |         "status": "Ready",
3869 |         "message": "Valid configuration",
3870 |         "lastReconciled": "2025-11-18T09:00:00Z",
3871 |         "managedBy": "Kustomization/flux-system/flux-system"
3872 |       }
3873 |     }
3874 |   },
3875 |   {
3876 |     "apiVersion": "notification.toolkit.fluxcd.io/v1beta3",
3877 |     "kind": "Provider",
3878 |     "metadata": {
3879 |       "name": "slack",
3880 |       "namespace": "flux-system"
3881 |     },
3882 |     "spec": {
3883 |       "address": "https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK",
3884 |       "channel": "#flux-notifications",
3885 |       "secretRef": {
3886 |         "name": "slack-webhook-url"
3887 |       },
3888 |       "type": "slack",
3889 |       "username": "Flux"
3890 |     },
3891 |     "status": {
3892 |       "reconcilerRef": {
3893 |         "status": "Ready",
3894 |         "message": "Valid configuration",
3895 |         "lastReconciled": "2025-11-18T09:00:00Z",
3896 |         "managedBy": "Kustomization/flux-system/flux-system"
3897 |       }
3898 |     }
3899 |   },
3900 |   {
3901 |     "apiVersion": "notification.toolkit.fluxcd.io/v1",
3902 |     "kind": "Receiver",
3903 |     "metadata": {
3904 |       "name": "github-webhook",
3905 |       "namespace": "flux-system"
3906 |     },
3907 |     "spec": {
3908 |       "events": [
3909 |         "push"
3910 |       ],
3911 |       "resources": [
3912 |         {
3913 |           "apiVersion": "source.toolkit.fluxcd.io/v1",
3914 |           "kind": "GitRepository",
3915 |           "name": "flux-system"
3916 |         }
3917 |       ],
3918 |       "secretRef": {
3919 |         "name": "github-webhook-token"
3920 |       },
3921 |       "type": "github"
3922 |     },
3923 |     "status": {
3924 |       "reconcilerRef": {
3925 |         "status": "Ready",
3926 |         "message": "Receiver initialized for path: /hook/bed6d00b5555b1603e1f59b94d7fdbca58089cb5663633fb83f2815dc626d92b",
3927 |         "lastReconciled": "2025-11-18T10:20:00Z",
3928 |         "managedBy": "Kustomization/flux-system/flux-system"
3929 |       },
3930 |       "conditions": [
3931 |         {
3932 |           "lastTransitionTime": "2025-11-18T10:20:00Z",
3933 |           "message": "Receiver initialized for path: /hook/bed6d00b5555b1603e1f59b94d7fdbca58089cb5663633fb83f2815dc626d92b",
3934 |           "observedGeneration": 1,
3935 |           "reason": "Succeeded",
3936 |           "status": "True",
3937 |           "type": "Ready"
3938 |         }
3939 |       ],
3940 |       "observedGeneration": 1,
3941 |       "webhookPath": "/hook/bed6d00b5555b1603e1f59b94d7fdbca58089cb5663633fb83f2815dc626d92b"
3942 |     }
3943 |   },
3944 |   {
3945 |     "apiVersion": "notification.toolkit.fluxcd.io/v1beta3",
3946 |     "kind": "Alert",
3947 |     "metadata": {
3948 |       "name": "msteams",
3949 |       "namespace": "automation"
3950 |     },
3951 |     "spec": {
3952 |       "eventSeverity": "info",
3953 |       "eventSources": [
3954 |         {
3955 |           "kind": "GitRepository",
3956 |           "name": "*"
3957 |         }
3958 |       ],
3959 |       "providerRef": {
3960 |         "name": "msteams"
3961 |       },
3962 |       "suspend": false
3963 |     },
3964 |     "status": {
3965 |       "reconcilerRef": {
3966 |         "status": "Ready",
3967 |         "message": "Valid configuration",
3968 |         "lastReconciled": "2025-11-18T09:00:00Z",
3969 |         "managedBy": "Kustomization/flux-system/flux-system"
3970 |       }
3971 |     }
3972 |   },
3973 |   {
3974 |     "apiVersion": "notification.toolkit.fluxcd.io/v1beta3",
3975 |     "kind": "Provider",
3976 |     "metadata": {
3977 |       "name": "msteams",
3978 |       "namespace": "automation"
3979 |     },
3980 |     "spec": {
3981 |       "address": "https://outlook.office.com/webhook/YOUR/TEAMS/WEBHOOK",
3982 |       "secretRef": {
3983 |         "name": "msteams-webhook-url"
3984 |       },
3985 |       "type": "msteams"
3986 |     },
3987 |     "status": {
3988 |       "reconcilerRef": {
3989 |         "status": "Ready",
3990 |         "message": "Valid configuration",
3991 |         "lastReconciled": "2025-11-18T09:00:00Z",
3992 |         "managedBy": "Kustomization/flux-system/flux-system"
3993 |       }
3994 |     }
3995 |   },
3996 |   {
3997 |     "apiVersion": "source.toolkit.fluxcd.io/v1",
3998 |     "kind": "HelmRepository",
3999 |     "metadata": {
4000 |       "name": "zot-registry",
4001 |       "namespace": "registry"
4002 |     },
4003 |     "spec": {
4004 |       "interval": "24h0m0s",
4005 |       "url": "https://zotregistry.dev/helm-charts"
4006 |     },
4007 |     "status": {
4008 |       "reconcilerRef": {
4009 |         "status": "Ready",
4010 |         "message": "stored artifact for revision 'sha256:2b1fdd97e969c82ee149a7ee8b00f55061760832f23c39a3235936f0912f2125'",
4011 |         "lastReconciled": "2025-11-01T23:31:41Z",
4012 |         "managedBy": "ResourceSet/flux-system/zot-registry"
4013 |       },
4014 |       "artifact": {
4015 |         "digest": "sha256:2b1fdd97e969c82ee149a7ee8b00f55061760832f23c39a3235936f0912f2125",
4016 |         "lastUpdateTime": "2025-11-01T23:31:41Z",
4017 |         "path": "helmrepository/registry/zot-registry/index.yaml",
4018 |         "revision": "sha256:2b1fdd97e969c82ee149a7ee8b00f55061760832f23c39a3235936f0912f2125",
4019 |         "size": 1024,
4020 |         "url": "http://source-controller.flux-system.svc.cluster.local./helmrepository/registry/zot-registry/index.yaml"
4021 |       },
4022 |       "conditions": [
4023 |         {
4024 |           "lastTransitionTime": "2025-11-01T23:31:41Z",
4025 |           "message": "stored artifact for revision 'sha256:2b1fdd97e969c82ee149a7ee8b00f55061760832f23c39a3235936f0912f2125'",
4026 |           "observedGeneration": 1,
4027 |           "reason": "Succeeded",
4028 |           "status": "True",
4029 |           "type": "Ready"
4030 |         }
4031 |       ]
4032 |     }
4033 |   },
4034 |   {
4035 |     "apiVersion": "source.toolkit.fluxcd.io/v1",
4036 |     "kind": "HelmRepository",
4037 |     "metadata": {
4038 |       "name": "tailscale-operator",
4039 |       "namespace": "tailscale"
4040 |     },
4041 |     "spec": {
4042 |       "interval": "24h0m0s",
4043 |       "url": "https://pkgs.tailscale.com/helmcharts"
4044 |     },
4045 |     "status": {
4046 |       "reconcilerRef": {
4047 |         "status": "Ready",
4048 |         "message": "stored artifact for revision 'sha256:2b1fdd97e969c82ee149a7ee8b00f55061760832f23c39a3235936f0912f2125'",
4049 |         "lastReconciled": "2025-11-01T23:31:02Z",
4050 |         "managedBy": "ResourceSet/flux-system/tailscale-operator"
4051 |       },
4052 |       "artifact": {
4053 |         "digest": "sha256:578d082975ad264ba4d09368febb298c3beb7f18e459bb9d323d3b7c2fc4d475",
4054 |         "lastUpdateTime": "2025-11-01T23:31:02Z",
4055 |         "path": "helmrepository/tailscale/tailscale-operator/index.yaml",
4056 |         "revision": "sha256:578d082975ad264ba4d09368febb298c3beb7f18e459bb9d323d3b7c2fc4d475",
4057 |         "size": 2048,
4058 |         "url": "http://source-controller.flux-system.svc.cluster.local./helmrepository/tailscale/tailscale-operator/index.yaml"
4059 |       },
4060 |       "conditions": [
4061 |         {
4062 |           "lastTransitionTime": "2025-11-01T23:31:02Z",
4063 |           "message": "stored artifact for revision 'sha256:578d082975ad264ba4d09368febb298c3beb7f18e459bb9d323d3b7c2fc4d475'",
4064 |           "observedGeneration": 1,
4065 |           "reason": "Succeeded",
4066 |           "status": "True",
4067 |           "type": "Ready"
4068 |         }
4069 |       ]
4070 |     }
4071 |   },
4072 |   {
4073 |     "apiVersion": "source.toolkit.fluxcd.io/v1",
4074 |     "kind": "GitRepository",
4075 |     "metadata": {
4076 |       "name": "podinfo",
4077 |       "namespace": "automation"
4078 |     },
4079 |     "spec": {
4080 |       "interval": "1m0s",
4081 |       "ref": {
4082 |         "branch": "main"
4083 |       },
4084 |       "verify": {
4085 |         "mode": "HEAD"
4086 |       },
4087 |       "url": "https://github.com/stefanprodan/podinfo"
4088 |     },
4089 |     "status": {
4090 |       "reconcilerRef": {
4091 |         "status": "Ready",
4092 |         "message": "stored artifact for revision 'main@sha1:c1b613a1e083a8918185b11b317f3c75e3c1b6d0'",
4093 |         "lastReconciled": "2025-11-18T12:00:00Z",
4094 |         "managedBy": "Kustomization/flux-system/apps"
4095 |       },
4096 |       "artifact": {
4097 |         "digest": "sha256:9c224393021c31a3ce372812b0eaf81085e5a633c50115b79c1e3f72e21a6b8f",
4098 |         "lastUpdateTime": "2025-11-18T12:00:00Z",
4099 |         "path": "gitrepository/automation/podinfo/c1b613a1e083a8918185b11b317f3c75e3c1b6d0.tar.gz",
4100 |         "revision": "main@sha1:c1b613a1e083a8918185b11b317f3c75e3c1b6d0",
4101 |         "size": 12345,
4102 |         "url": "http://source-controller.flux-system.svc.cluster.local./gitrepository/automation/podinfo/c1b613a1e083a8918185b11b317f3c75e3c1b6d0.tar.gz"
4103 |       },
4104 |       "conditions": [
4105 |         {
4106 |           "lastTransitionTime": "2025-11-18T12:00:00Z",
4107 |           "message": "stored artifact for revision 'main@sha1:c1b613a1e083a8918185b11b317f3c75e3c1b6d0'",
4108 |           "observedGeneration": 1,
4109 |           "reason": "Succeeded",
4110 |           "status": "True",
4111 |           "type": "Ready"
4112 |         }
4113 |       ]
4114 |     }
4115 |   },
4116 |   {
4117 |     "apiVersion": "image.toolkit.fluxcd.io/v1",
4118 |     "kind": "ImageRepository",
4119 |     "metadata": {
4120 |       "name": "podinfo",
4121 |       "namespace": "automation"
4122 |     },
4123 |     "spec": {
4124 |       "image": "ghcr.io/stefanprodan/podinfo",
4125 |       "interval": "5m0s"
4126 |     },
4127 |     "status": {
4128 |       "reconcilerRef": {
4129 |         "status": "Ready",
4130 |         "message": "successful scan, found 211 tags",
4131 |         "lastReconciled": "2025-11-18T12:05:00Z",
4132 |         "managedBy": "Kustomization/flux-system/apps"
4133 |       },
4134 |       "canonicalImageName": "ghcr.io/stefanprodan/podinfo",
4135 |       "lastScanResult": {
4136 |         "latestTags": [
4137 |           "6.2.0",
4138 |           "6.1.0"
4139 |         ],
4140 |         "scanTime": "2025-11-18T12:05:00Z",
4141 |         "tagCount": 2
4142 |       },
4143 |       "conditions": [
4144 |         {
4145 |           "lastTransitionTime": "2025-11-18T12:05:00Z",
4146 |           "message": "successful scan, found 211 tags",
4147 |           "observedGeneration": 1,
4148 |           "reason": "Succeeded",
4149 |           "status": "True",
4150 |           "type": "Ready"
4151 |         }
4152 |       ]
4153 |     }
4154 |   },
4155 |   {
4156 |     "apiVersion": "image.toolkit.fluxcd.io/v1",
4157 |     "kind": "ImagePolicy",
4158 |     "metadata": {
4159 |       "name": "podinfo",
4160 |       "namespace": "automation"
4161 |     },
4162 |     "spec": {
4163 |       "imageRepositoryRef": {
4164 |         "name": "podinfo"
4165 |       },
4166 |       "policy": {
4167 |         "semver": {
4168 |           "range": ">=6.0.0"
4169 |         }
4170 |       }
4171 |     },
4172 |     "status": {
4173 |       "reconcilerRef": {
4174 |         "status": "Ready",
4175 |         "message": "Latest image tag for 'ghcr.io/stefanprodan/podinfo' resolved to 6.2.0",
4176 |         "lastReconciled": "2025-11-18T12:10:00Z",
4177 |         "managedBy": "Kustomization/flux-system/apps"
4178 |       },
4179 |       "latestImage": "ghcr.io/stefanprodan/podinfo:6.2.0",
4180 |       "conditions": [
4181 |         {
4182 |           "lastTransitionTime": "2025-11-18T12:10:00Z",
4183 |           "message": "Latest image tag for 'ghcr.io/stefanprodan/podinfo' resolved to 6.2.0",
4184 |           "observedGeneration": 1,
4185 |           "reason": "Succeeded",
4186 |           "status": "True",
4187 |           "type": "Ready"
4188 |         }
4189 |       ]
4190 |     }
4191 |   },
4192 |   {
4193 |     "apiVersion": "image.toolkit.fluxcd.io/v1",
4194 |     "kind": "ImageUpdateAutomation",
4195 |     "metadata": {
4196 |       "name": "podinfo",
4197 |       "namespace": "automation"
4198 |     },
4199 |     "spec": {
4200 |       "git": {
4201 |         "checkout": {
4202 |           "ref": {
4203 |             "branch": "main"
4204 |           }
4205 |         },
4206 |         "commit": {
4207 |           "author": {
4208 |             "email": "[email protected]",
4209 |             "name": "fluxcdbot"
4210 |           },
4211 |         },
4212 |         "push": {
4213 |           "branch": "main"
4214 |         }
4215 |       },
4216 |       "interval": "15m0s",
4217 |       "sourceRef": {
4218 |         "kind": "GitRepository",
4219 |         "name": "podinfo"
4220 |       },
4221 |       "update": {
4222 |         "path": "./kustomize",
4223 |         "strategy": "Setters"
4224 |       }
4225 |     },
4226 |     "status": {
4227 |       "reconcilerRef": {
4228 |         "status": "Ready",
4229 |         "message": "pushed commit '3ebb95c' to branch 'main'",
4230 |         "lastReconciled": "2025-11-18T12:15:00Z",
4231 |         "managedBy": "Kustomization/flux-system/apps"
4232 |       },
4233 |       "lastAutomationRunTime": "2025-11-18T12:15:00Z",
4234 |       "lastPushCommit": "c1b613a1e083a8918185b11b317f3c75e3c1b6d0",
4235 |       "lastPushTime": "2025-11-18T12:15:00Z",
4236 |       "conditions": [
4237 |         {
4238 |           "lastTransitionTime": "2025-11-18T12:15:00Z",
4239 |           "message": "pushed commit '3ebb95c' to branch 'main'",
4240 |           "observedGeneration": 1,
4241 |           "reason": "Succeeded",
4242 |           "status": "True",
4243 |           "type": "Ready"
4244 |         }
4245 |       ]
4246 |     }
4247 |   },
4248 |   {
4249 |     "apiVersion": "notification.toolkit.fluxcd.io/v1",
4250 |     "kind": "Receiver",
4251 |     "metadata": {
4252 |       "name": "podinfo-webhook",
4253 |       "namespace": "automation"
4254 |     },
4255 |     "spec": {
4256 |       "type": "github",
4257 |       "events": [
4258 |         "push"
4259 |       ],
4260 |       "secretRef": {
4261 |         "name": "webhook-secret"
4262 |       },
4263 |       "resources": [
4264 |         {
4265 |           "kind": "GitRepository",
4266 |           "name": "podinfo"
4267 |         }
4268 |       ]
4269 |     },
4270 |     "status": {
4271 |       "reconcilerRef": {
4272 |         "status": "Ready",
4273 |         "message": "Receiver initialized for path: /hook/cbdee599b7977a520a36692e5b872c39d09ee53dd75b2e3ae117fea283958fbf",
4274 |         "lastReconciled": "2025-11-18T12:00:00Z",
4275 |         "managedBy": "Kustomization/flux-system/apps"
4276 |       },
4277 |       "conditions": [
4278 |         {
4279 |           "lastTransitionTime": "2025-11-18T12:00:00Z",
4280 |           "message": "Receiver initialized for path: /hook/cbdee599b7977a520a36692e5b872c39d09ee53dd75b2e3ae117fea283958fbf",
4281 |           "reason": "Succeeded",
4282 |           "status": "True",
4283 |           "type": "Ready"
4284 |         }
4285 |       ],
4286 |       "url": "/hook/cbdee599b7977a520a36692e5b872c39d09ee53dd75b2e3ae117fea283958fbf",
4287 |       "observedGeneration": 1,
4288 |       "lastHandledReconcileAt": "2025-11-18T12:00:00Z"
4289 |     }
4290 |   },
4291 |   {
4292 |     "apiVersion": "source.toolkit.fluxcd.io/v1",
4293 |     "kind": "HelmRepository",
4294 |     "metadata": {
4295 |       "name": "bitnami",
4296 |       "namespace": "flux-system"
4297 |     },
4298 |     "spec": {
4299 |       "interval": "24h",
4300 |       "url": "https://charts.bitnami.com/bitnami"
4301 |     },
4302 |     "status": {
4303 |       "reconcilerRef": {
4304 |         "status": "Failed",
4305 |         "message": "failed to fetch index: unable to connect to the server\nGet \"https://charts.bitnami.com/bitnami/index.yaml\": timeout awaiting response headers",
4306 |         "lastReconciled": "2025-11-18T12:00:00Z",
4307 |         "managedBy": "Kustomization/flux-system/flux-system"
4308 |       },
4309 |       "conditions": [
4310 |         {
4311 |           "lastTransitionTime": "2025-11-18T12:00:00Z",
4312 |           "message": "failed to fetch index: unable to connect to the server\nGet \"https://charts.bitnami.com/bitnami/index.yaml\": timeout awaiting response headers",
4313 |           "reason": "Failed",
4314 |           "status": "False",
4315 |           "type": "Ready"
4316 |         }
4317 |       ],
4318 |       "observedGeneration": 1
4319 |     }
4320 |   },
4321 |   {
4322 |     "apiVersion": "image.toolkit.fluxcd.io/v1",
4323 |     "kind": "ImageRepository",
4324 |     "metadata": {
4325 |       "name": "redis",
4326 |       "namespace": "automation"
4327 |     },
4328 |     "spec": {
4329 |       "suspend": true,
4330 |       "image": "redis",
4331 |       "interval": "10m0s"
4332 |     },
4333 |     "status": {
4334 |       "reconcilerRef": {
4335 |         "status": "Ready",
4336 |         "message": "successful scan, found 50 tags",
4337 |         "lastReconciled": "2025-11-18T12:00:00Z",
4338 |         "managedBy": "Kustomization/flux-system/flux-system"
4339 |       },
4340 |       "canonicalImageName": "redis",
4341 |       "lastScanResult": {
4342 |         "latestTags": [
4343 |           "7.0.5",
4344 |           "6.2.7"
4345 |         ],
4346 |         "scanTime": "2025-11-18T12:00:00Z",
4347 |         "tagCount": 50
4348 |       },
4349 |       "conditions": [
4350 |         {
4351 |           "lastTransitionTime": "2025-11-18T12:00:00Z",
4352 |           "message": "successful scan, found 50 tags",
4353 |           "reason": "Succeeded",
4354 |           "status": "True",
4355 |           "type": "Ready"
4356 |         }
4357 |       ]
4358 |     }
4359 |   },
4360 |   {
4361 |     "apiVersion": "image.toolkit.fluxcd.io/v1",
4362 |     "kind": "ImagePolicy",
4363 |     "metadata": {
4364 |       "name": "redis",
4365 |       "namespace": "automation"
4366 |     },
4367 |     "spec": {
4368 |       "suspend": true,
4369 |       "imageRepositoryRef": {
4370 |         "name": "redis"
4371 |       },
4372 |       "policy": {
4373 |         "semver": {
4374 |           "range": ">=6.0.0"
4375 |         }
4376 |       }
4377 |     },
4378 |     "status": {
4379 |       "reconcilerRef": {
4380 |         "status": "Ready",
4381 |         "message": "Latest image tag for 'redis' resolved to 7.0.5",
4382 |         "lastReconciled": "2025-11-18T12:00:00Z",
4383 |         "managedBy": "Kustomization/flux-system/flux-system"
4384 |       },
4385 |       "latestImage": "redis:7.0.5",
4386 |       "conditions": [
4387 |         {
4388 |           "lastTransitionTime": "2025-11-18T12:00:00Z",
4389 |           "message": "Latest image tag for 'redis' resolved to 7.0.5",
4390 |           "reason": "Succeeded",
4391 |           "status": "True",
4392 |           "type": "Ready"
4393 |         }
4394 |       ]
4395 |     }
4396 |   }
4397 | ]
4398 | 
4399 | // Export function that returns the appropriate mock resource based on query parameters
4400 | export const getMockResource = (endpoint) => {
4401 |   // Parse query params from endpoint URL
4402 |   // eslint-disable-next-line no-undef
4403 |   const url = new URL(endpoint, 'http://localhost')
4404 |   const params = url.searchParams
4405 | 
4406 |   const kind = params.get('kind')
4407 |   const name = params.get('name')
4408 |   const namespace = params.get('namespace')
4409 | 
4410 |   // Search for matching resource in the array
4411 |   const resource = mockResourcesArray.find(r =>
4412 |     r.kind === kind &&
4413 |     r.metadata.name === name &&
4414 |     r.metadata.namespace === namespace
4415 |   )
4416 | 
4417 |   if (!resource) {
4418 |     return null
4419 |   }
4420 | 
4421 |   // Inject userActions field - array of allowed actions (empty for Bucket)
4422 |   const userActions = kind !== 'Bucket' ? ['reconcile', 'suspend', 'resume'] : []
4423 |   return {
4424 |     ...resource,
4425 |     status: {
4426 |       ...resource.status,
4427 |       userActions
4428 |     }
4429 |   }
4430 | }
4431 | 
```
Page 96/126FirstPrevNextLast