Skip to content

Operator v1.9.0 panics & crashes with an item containing a file #209

@LoicFerrot

Description

@LoicFerrot

Your environment

Operator Version: 1.9.0

Connect Server Version: 1.7.3

Kubernetes Version: 1.27

What happened?

The operator panics and crashes when trying to create a secret from a 1Password item containing a file.

What did you expect to happen?

The operator should create the secret and continue running, as is the case in v1.8.1.

Steps to reproduce

  1. Deploy the connect operator
    a. Deploy the connect helm chart with version 1.17.0 and operator.create=true, then kubectl edit onepassword-connect-operator and change the image version from 1.8.1 to 1.9.0
    b. Alternatively, deploy the connect helm chart with version 2.0.0 and operator.create=true
  2. Create a OnePasswordItem pointing to an item with a single file (in this case server.crt)
  3. Observe the panic, logged below
  4. kubectl edit onepassword-connect-operator and change the image version to 1.8.1
  5. Everything works

Notes & Logs

Panic logs
2025-07-02T15:05:48Z	INFO	Secret with name foobar and version 3 already exists
2025-07-02T15:05:48Z	DPANIC	odd number of arguments passed as key-value pairs for logging	{"ignored key": "server.crt"}
github.com/1Password/onepassword-operator/pkg/kubernetessecrets.BuildKubernetesSecretData
	/workspace/pkg/kubernetessecrets/kubernetes_secrets_builder.go:123
github.com/1Password/onepassword-operator/pkg/kubernetessecrets.BuildKubernetesSecretFromOnePasswordItem
	/workspace/pkg/kubernetessecrets/kubernetes_secrets_builder.go:105
github.com/1Password/onepassword-operator/pkg/kubernetessecrets.CreateKubernetesSecretFromItem
	/workspace/pkg/kubernetessecrets/kubernetes_secrets_builder.go:49
github.com/1Password/onepassword-operator/internal/controller.(*OnePasswordItemReconciler).handleOnePasswordItem
	/workspace/internal/controller/onepassworditem_controller.go:191
github.com/1Password/onepassword-operator/internal/controller.(*OnePasswordItemReconciler).Reconcile
	/workspace/internal/controller/onepassworditem_controller.go:107
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Reconcile
	/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.17.2/pkg/internal/controller/controller.go:119
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler
	/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.17.2/pkg/internal/controller/controller.go:316
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem
	/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.17.2/pkg/internal/controller/controller.go:266
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2.2
	/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.17.2/pkg/internal/controller/controller.go:227
2025-07-02T15:05:48Z	INFO	Observed a panic in reconciler: odd number of arguments passed as key-value pairs for logging	{"controller": "onepassworditem", "controllerGroup": "onepassword.com", "controllerKind": "OnePasswordItem", "OnePasswordItem": {"name":"some-item","namespace":"some-ns"}, "namespace": "some-ns", "name": "some-item", "reconcileID": "4fc06c5b-f644-4c95-9ded-aae59c97942c"}
panic: odd number of arguments passed as key-value pairs for logging [recovered]
	panic: odd number of arguments passed as key-value pairs for logging

goroutine 80 [running]:
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Reconcile.func1()
	/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.17.2/pkg/internal/controller/controller.go:116 +0x1da
panic({0x18a9c00?, 0xc000908a10?})
	/usr/local/go/src/runtime/panic.go:792 +0x132
go.uber.org/zap/zapcore.CheckWriteAction.OnWrite(0x26?, 0xb?, {0x0?, 0x0?, 0xc00050de40?})
	/go/pkg/mod/go.uber.org/zap@v1.27.0/zapcore/entry.go:196 +0x54
go.uber.org/zap/zapcore.(*CheckedEntry).Write(0xc000690c30, {0xc00031fd40, 0x1, 0x1})
	/go/pkg/mod/go.uber.org/zap@v1.27.0/zapcore/entry.go:262 +0x24a
go.uber.org/zap.(*Logger).DPanic(0x1bd8226?, {0x1c3d3c3?, 0x18a9c00?}, {0xc00031fd40, 0x1, 0x1})
	/go/pkg/mod/go.uber.org/zap@v1.27.0/logger.go:275 +0x4b
github.com/go-logr/zapr.(*zapLogger).handleFields(0xc0003293b0, 0xffffffffffffffff, {0xc0009089d0, 0x1, 0x148?}, {0xc00031fcc0, 0x1, 0xc000019590?})
	/go/pkg/mod/github.com/go-logr/zapr@v1.3.0/zapr.go:147 +0xd45
github.com/go-logr/zapr.(*zapLogger).Error(0xc0003293b0, {0x1e7e040, 0xc0009089c0}, {0x1bff882?, 0xc000019550?}, {0xc0009089d0, 0x1, 0x1})
	/go/pkg/mod/github.com/go-logr/zapr@v1.3.0/zapr.go:207 +0x18d
sigs.k8s.io/controller-runtime/pkg/log.(*delegatingLogSink).Error(0xc0001499c0, {0x1e7e040, 0xc0009089c0}, {0x1bff882, 0x22}, {0xc0009089d0, 0x1, 0x1})
	/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.17.2/pkg/log/deleg.go:142 +0xe7
github.com/go-logr/logr.Logger.Error({{0x1e9fcc8?, 0xc0001499c0?}, 0x0?}, {0x1e7e040, 0xc0009089c0}, {0x1bff882, 0x22}, {0xc0009089d0, 0x1, 0x1})
	/go/pkg/mod/github.com/go-logr/logr@v1.4.2/logr.go:301 +0x145
github.com/1Password/onepassword-operator/pkg/kubernetessecrets.BuildKubernetesSecretData({0xc000580160, 0x1, 0x512dfa?}, {0xc0004d7270, 0x1, 0x42?})
	/workspace/pkg/kubernetessecrets/kubernetes_secrets_builder.go:123 +0x475
github.com/1Password/onepassword-operator/pkg/kubernetessecrets.BuildKubernetesSecretFromOnePasswordItem({0xc0004a1320?, 0x2a?}, {0xc000133200, 0x11}, 0xc00064f560, 0xc00064ee10, {0x0, 0x0}, {{0xc0007d68a0, 0x1a}, ...}, ...)
	/workspace/pkg/kubernetessecrets/kubernetes_secrets_builder.go:105 +0x139
github.com/1Password/onepassword-operator/pkg/kubernetessecrets.CreateKubernetesSecretFromItem({0x1e99a70, 0xc00064ed50}, {0x1ea7420, 0xc0000e6000}, {0xc0004a1320, 0x2a}, {0xc000133200, 0x11}, 0xc0007cdd40, {0x0, ...}, ...)
	/workspace/pkg/kubernetessecrets/kubernetes_secrets_builder.go:49 +0x345
github.com/1Password/onepassword-operator/internal/controller.(*OnePasswordItemReconciler).handleOnePasswordItem(0xc00058fce0, {0x1e99a70, 0xc00064ed50}, 0xc00065cc80, {{{0x1e99a70?, 0xc00064ed50?}, {0xc000133200?, 0x0?}}})
	/workspace/internal/controller/onepassworditem_controller.go:191 +0x3b3
github.com/1Password/onepassword-operator/internal/controller.(*OnePasswordItemReconciler).Reconcile(0xc00058fce0, {0x1e99a70, 0xc00064ed50}, {{{0xc000133200?, 0x5?}, {0xc0004a1320?, 0xc000019d10?}}})
	/workspace/internal/controller/onepassworditem_controller.go:107 +0x5f6
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Reconcile(0x1e9fda0?, {0x1e99a70?, 0xc00064ed50?}, {{{0xc000133200?, 0xb?}, {0xc0004a1320?, 0x0?}}})
	/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.17.2/pkg/internal/controller/controller.go:119 +0xa5
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler(0xc0005183c0, {0x1e99aa8, 0xc0005bd8b0}, {0x1a26f60, 0xc00050c220})
	/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.17.2/pkg/internal/controller/controller.go:316 +0x39c
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem(0xc0005183c0, {0x1e99aa8, 0xc0005bd8b0})
	/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.17.2/pkg/internal/controller/controller.go:266 +0x197
sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2.2()
	/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.17.2/pkg/internal/controller/controller.go:227 +0x73
created by sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func2 in goroutine 86
	/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.17.2/pkg/internal/controller/controller.go:223 +0x509

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions