crossplane-contrib / function-go-templating

A Go templating composition function
https://crossplane.io
Apache License 2.0
37 stars 26 forks source link

Readiness not correctly reflected in claim for `Object.kubernetes.crossplane.io/v1alpha2` MRs #99

Open milkpirate opened 1 month ago

milkpirate commented 1 month ago

What happened?

I have multiple kubernetes.crossplane.io/v1alpha2 Objects (provider-kubernetes) which get created correctly and are synced and ready:

$ kg objects
NAME                                                                             KIND             PROVIDERCONFIG   SYNCED   READY   AGE
role.tunnel.secret.transformer.of.tunnel-example.of.example-cf-setup             Role             default          True     True    34m
rb.tunnel.secret.transformer.of.tunnel-example.of.example-cf-setup               RoleBinding      default          True     True    34m
sa.tunnel.secret.transformer.of.example-cf-setup                                 ServiceAccount   default          True     True    34m
credentials.tunnel.of.tunnel-example.of.example-cf-setup                         Secret           default          True     True    3m5s
objecttemplate.tunnel.secret.transformer.of.tunnel-example.of.example-cf-setup   ObjectTemplate   default          True     True    34m

But their status is not correctly reflected in the status/events of the claim:

$ kgf claim.yaml
...
Status:
  At Provider:
    Ca Certs:
      Applications:
        Browser - Ssh:
  Conditions:
    Last Transition Time:  2024-05-27T18:47:31Z
    Reason:                ReconcileSuccess
    Status:                True
    Type:                  Synced
    Last Transition Time:  2024-05-27T19:18:33Z
    Message:               Unready resources: secret-transform-role, secret-transform-role-binding, secret-transform-sa, and 2 more
    Reason:                Creating
    Status:                False
    Type:                  Ready
  Connection Details:
    Last Published Time:  2024-05-27T18:47:31Z
Events:
  Type    Reason            Age                   From                                                             Message
  ----    ------            ----                  ----                                                             -------
  Normal  ComposeResources  31m                   defined/compositeresourcedefinition.apiextensions.crossplane.io  Composed resource "secret-transform-role" is not yet ready
  Normal  ComposeResources  31m                   defined/compositeresourcedefinition.apiextensions.crossplane.io  Composed resource "secret-transform-role-binding" is not yet ready
  Normal  ComposeResources  31m                   defined/compositeresourcedefinition.apiextensions.crossplane.io  Composed resource "secret-transformer" is not yet ready
  Normal  ComposeResources  3m16s (x68 over 31m)  defined/compositeresourcedefinition.apiextensions.crossplane.io  Successfully composed resources

All other resource(type)s work well and their status gets propagated well. What am I missing for Objects?

How can we reproduce it?

Sample objcet:

          ---
          apiVersion: kubernetes.crossplane.io/v1alpha2
          kind: Object
          metadata:
            name: sa.tunnel.secret.transformer.of.{{ $name }}
            annotations:
              gotemplating.fn.crossplane.io/composition-resource-name: secret-transform-sa
          spec:
            forProvider:
              manifest:
                apiVersion: v1
                kind: ServiceAccount
                metadata:
                  name: tunnel.secret.transformer.of.{{ $tunnel.name }}.of.{{ $name }}
                  namespace: crossplane-system

What environment did it happen in?

Function version: v0.4.1