Notice something off about this package? Help us keep the marketplace safe and trustworthy by reporting inappropriate content or behavior.
Report this packageThe provider-crossplane-akuity repository is the Crossplane infrastructure
provider for Akuity Platform. It installs
Kubernetes CRDs and controllers that let Crossplane manage Akuity resources
from managed resource specs.
Start with docs/index.md. The docs include provider setup, resource pages, and focused guides for secrets, ConfigMaps, Config Management Plugins, declarative resources, and reconciliation behavior.
Install Crossplane, replace REPLACE_WITH_VERSION in
examples/provider/provider.yaml, then
install the provider:
kubectl apply -f examples/provider/provider.yaml
kubectl get providers.pkg.crossplane.io
Create the provider credentials Secret. Either edit and apply
examples/provider/credentials-secret.yaml,
or create it from a local credentials file. The credentials key must contain
JSON with apiKeyId and apiKeySecret:
kubectl -n crossplane-system create secret generic akuity-provider-secret \
--from-file=credentials=./akuity-credentials.json
Edit examples/provider/config.yaml with your Akuity organization ID, then apply it:
kubectl apply -f examples/provider/config.yaml
Create an Argo CD instance:
kubectl apply -f examples/instance/basic.yaml
kubectl get instances.core.akuity.crossplane.io
All managed resources are cluster-scoped and live in
core.akuity.crossplane.io/v1alpha1.
| Resource | Purpose | Examples |
|---|---|---|
Instance | Akuity Argo CD instance. | examples/instance |
Cluster | Kubernetes cluster attached to an Argo CD instance. | examples/cluster |
InstanceIpAllowList | Standalone Argo CD instance IP allow list. | examples/instanceipallowlist |
KargoInstance | Akuity Kargo instance. | examples/kargoinstance |
KargoAgent | Kargo agent attached to a Kargo instance. | examples/kargoagent |
KargoDefaultShardAgent | Default shard agent binding for a Kargo instance. | examples/kargodefaultshardagent |
For the full CRD schema, use doc.crds.dev/github.com/akuity/provider-crossplane-akuity.
spec.crossplane.version: ">=v1.19.0" is declared in
package/crossplane.yaml.safe-start capability (Crossplane 2.x); 1.x
cores ignore it as a no-op.v1alpha1 manifests authored against earlier provider releases continue to
work without edits.managementPolicies (beta): every managed resource accepts the
Crossplane spec.managementPolicies list, which scopes the operations the
controller may perform on the external Akuity resource. ["*"] (default)
allows the full create/update/delete loop; ["Observe"] makes the resource
read-only — the provider syncs .status.atProvider and never writes to the
Akuity API. Use it to import an existing Akuity resource without risk of
drift-correction. See
Lifecycle and Reconciliation
for the full policy matrix.deletionPolicy: Orphan leaves the Akuity-side resource in place when
the Kubernetes managed resource is deleted.Cluster and KargoAgent apply
Akuity-generated install manifests during create when a kubeconfig source
is configured. Updates do not reapply those manifests; recreate the MR or
reapply manually.publishConnectionDetailsTo and StoreConfig. Use
external-secrets-operator, provider-vault, or provider-sops instead.publishConnectionDetailsTo or StoreConfig before
installing v2.0.0; the controller rejects them at apply.Instance, Cluster, KargoInstance,
KargoAgent, KargoDefaultShardAgent, and InstanceIpAllowList manifests
is sufficient; no schema changes affect the upgrade path.For general Crossplane getting started guides, installation, deployment, and administration, see the Crossplane Documentation.
Crossplane provides a build submodule that is used for most of the Makefile targets. To initialize the submodule run:
git submodule update --init
To generate the CRDs used by Crossplane for Akuity resources:
make generate
The CRDs are generated from the types defined in apis/core/v1alpha1/.
To run the Crossplane provider locally using a Kind cluster and apply the CRDs generated above:
make dev
The above command should only be run once. It will error if a Kind cluster already exists.
If you need to make changes to the CRDs, you can regenerate them and apply them to the already running cluster:
make generate
kubectl apply -f package/crds/
If you need to make changes to the provider Go code, you can Ctrl-C to quit the binary
started with make dev and start it again to include your changes:
make run
make test — unit, converter round-trip, drift-helper, and reason-classifier suites.make test-envtest — boots a real Kubernetes apiserver via envtest and validates the generated CRD CEL rules end-to-end (instance-id vs instance-ref, immutability, at-least-one). Requires the envtest assets managed by setup-envtest; the Makefile target installs them on first run.make lint — golangci-lint (v2.11.4 pin).For filing bugs, suggesting improvements, or requesting new features, please open an issue.