upbound / up

The @upbound CLI
Apache License 2.0
52 stars 41 forks source link

package.yaml has empty controller image even if it is not given by user #321

Closed muvaf closed 1 year ago

muvaf commented 1 year ago

What happened?

I got an error deploying my provider built with v0.16.0 : ...spec.containers[0].image: required value which is surprising because it should be the package itself since I didn't give any package URL in the repo similar to other providers. When I extracted /package.yaml from the package, I saw the following:

---
apiVersion: meta.pkg.crossplane.io/v1alpha1
kind: Provider
metadata:
  ...
  creationTimestamp: null
  name: provider-dummy
spec:
  controller:
    image: ""

When I downgrade to v0.15.0, the problem disappears. I assume we made a change in between that defaulted spec.controller.image and metadata.creationTimestamp to their zero-values.

How can we reproduce it?

Build a provider package with v0.16.0. Then run it with classic docker run -d and while it's running, extract package.yaml with docker cp <container hash>:/package.yaml /tmp/package.yaml and see the beginning of that file.

What environment did it happen in?

up v0.16.0

muvaf commented 1 year ago

FWIW, this is probably a showstopper for up CLI that we should follow up with a patch release.

muvaf commented 1 year ago

Seems like we're still using v1.5.0 of Crossplane that does not have omitempty json tag for the image field, hence initialize to "". Updating it causes dependency problems though. Will continue.

go: finding module for package go.opentelemetry.io/otel/semconv/v1.12.0
go: finding module for package go.opentelemetry.io/otel/exporters/otlp/internal
go: finding module for package go.opentelemetry.io/otel/exporters/otlp/internal/envconfig
github.com/upbound/up/internal/xpkg/snapshot imports
    k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation imports
    k8s.io/apiserver/pkg/util/webhook imports
    k8s.io/component-base/tracing imports
    go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc imports
    go.opentelemetry.io/otel/exporters/otlp/internal: module go.opentelemetry.io/otel/exporters/otlp@latest found (v0.0.0-00010101000000-000000000000, replaced by go.opentelemetry.io/otel/exporters/otlp@v0.20.0), but does not contain package go.opentelemetry.io/otel/exporters/otlp/internal
github.com/upbound/up/internal/xpkg/snapshot imports
    k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation imports
    k8s.io/apiserver/pkg/util/webhook imports
    k8s.io/component-base/tracing imports
    go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc imports
    go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/otlpconfig imports
    go.opentelemetry.io/otel/exporters/otlp/internal/envconfig: module go.opentelemetry.io/otel/exporters/otlp@latest found (v0.0.0-00010101000000-000000000000, replaced by go.opentelemetry.io/otel/exporters/otlp@v0.20.0), but does not contain package go.opentelemetry.io/otel/exporters/otlp/internal/envconfig
github.com/upbound/up/internal/xpkg/snapshot imports
    k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation imports
    k8s.io/apiserver/pkg/util/webhook imports
    k8s.io/component-base/tracing imports
    go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc imports
    go.opentelemetry.io/otel/exporters/otlp/otlptrace imports
    go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform tested by
    go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/tracetransform.test imports
    go.opentelemetry.io/otel/semconv/v1.12.0: module go.opentelemetry.io/otel@latest found (v0.0.0-00010101000000-000000000000, replaced by go.opentelemetry.io/otel@v0.20.0), but does not contain package go.opentelemetry.io/otel/semconv/v1.12.0