https://github.com/hops-ops/crossplane-listmonk-provider-stack
Crossplane configuration package: crossplane-listmonk-provider. Listmonk provider, ProviderConfig, and ExternalSecret-sourced credentials.
https://github.com/hops-ops/crossplane-listmonk-provider-stack
Last synced: about 1 month ago
JSON representation
Crossplane configuration package: crossplane-listmonk-provider. Listmonk provider, ProviderConfig, and ExternalSecret-sourced credentials.
- Host: GitHub
- URL: https://github.com/hops-ops/crossplane-listmonk-provider-stack
- Owner: hops-ops
- Created: 2026-05-29T05:01:57.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2026-05-29T06:43:00.000Z (2 months ago)
- Last Synced: 2026-05-29T08:28:10.169Z (2 months ago)
- Language: Go Template
- Size: 18.6 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Agents: AGENTS.md
Awesome Lists containing this project
README
# crossplane-listmonk-provider-stack
Installs hops-ops/provider-listmonk and optionally composes its Secret-backed ProviderConfig.
## Why This XR?
Without a dedicated provider XR, provider lifecycle changes are coupled to
the Crossplane core install. With this XR, the provider package, runtime
resources, and ProviderConfig can be reconciled independently.
## The Journey
### Stage 1: Getting Started
Apply the minimal example in `examples/listmonkproviderstacks/minimal.yaml` after
the target cluster already has Crossplane core installed.
### Stage 2: Growing
Override `spec.runtimeConfig` when the provider controller needs different
requests or limits, and set `spec.nodePool.enabled: true` to land provider
runtimes on the CrossplaneStack NodePool. Use `spec.scheduling` only for
custom node selector or toleration overrides.
### Stage 3: Enterprise Scale
Pin provider package versions with `spec.package.version` and keep provider
credentials in a stack-owned Secret or ExternalSecret.
### Stage 4: Import Existing
Existing target-cluster ProviderConfigs can be left in place by omitting
`spec.secretName` where ProviderConfig rendering is optional.
The target `Provider` manifest uses the existing
`hops-ops-provider-listmonk` name so local rollouts can adopt the provider
that already owns the Listmonk CRDs instead of installing a duplicate.
Set `spec.secretName` to compose a ProviderConfig that reads credentials
from a target-cluster Secret. Omit it when another stack owns the
ProviderConfig lifecycle.
## Status
- `status.provider.ready`: readiness of the composed provider package Object.
## Composed Resources
- `Object` wrapping `DeploymentRuntimeConfig` for provider runtime settings.
- `Object` wrapping the target `Provider` package.
## Development
```sh
make render:all
make validate:all
make test
```
## License
Apache-2.0