crossplane / crossplane/crossplane

Crossplane custom resources status should be compatible with kstatus

Open
#2,672 26 comments 12 reactions 0 assignees View on GitHub
enhancement exempt-from-stale proposal roadmap
Dominant language
Go
Stars
12.1k
Forks
1.3k
Avg merge
1d 6h
Merged PRs (30d)
46

Description

### What problem are you facing?

We are attempting to provision crossplane custom resources (i.e. providers) with [FluxCD](https://fluxcd.io/), and seem to have issues enabling [health assessment](https://fluxcd.io/docs/components/kustomize/kustomization/#health-assessment) for crossplane custom resources. And it seems like the problem is related to the following requirement for custom resources:

> A health check entry can reference one of the following types: **Custom resources that are compatible with [kstatus](https://github.com/kubernetes-sigs/cli-utils/tree/master/pkg/kstatus)**

And for crossplane providers, it seems like the status conditions are not compatible:
````yaml
status:
conditions:
- lastTransitionTime: "2021-10-26T11:36:13Z"
reason: HealthyPackageRevision
status: "True"
type: Healthy
- lastTransitionTime: "2021-10-26T11:36:06Z"
reason: ActivePackageRevision
status: "True"
type: Installed
````

The workaround is to disable health checks for crossplane resources in FluxCD - which is far from optimal.

### How could Crossplane help solve your problem?

It would be convenient if all crossplane custom resources had status conditions compatible with [kstatus](https://github.com/kubernetes-sigs/cli-utils/tree/master/pkg/kstatus).

I raised this question on [Slack](https://crossplane.slack.com/archives/C01718T2476/p1635249669052200), and got a reply from @muvaf:

> All managed resource CRDs and CRDs produced from XRDs have Ready condition. I believe we can have it in package APIs, too. Likely, we’d either rename Healthy to Ready or add another one.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.