FoundationDB / fdb-kubernetes-operator

A kubernetes operator for FoundationDB
Apache License 2.0
240 stars 83 forks source link

Support the master branch of FDB #616

Closed jleach4 closed 2 years ago

jleach4 commented 3 years ago

I cannot currently test the master branch of FDB in K8s (i.e. in a cluster).

{"level":"error","ts":1618515674.2325447,"logger":"controller-runtime.manager.controller.foundationdbcluster","msg":"Reconciler error","reconciler group":"apps.foundationdb.org","reconciler kind":"FoundationDBCluster","name":"fdb-cluster-4xofxwjt-small","namespace":"vax5yfwbyrjhi1vrektj72ml8iwdrjf7","error":"Version 7.0.0 is not supported","stacktrace":"github.com/go-logr/zapr.(*zapLogger).Error\n\t/go/pkg/mod/github.com/go-logr/zapr@v0.2.0/zapr.go:132\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler\n\t/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.8.3/pkg/internal/controller/controller.go:302\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\t/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.8.3/pkg/internal/controller/controller.go:253\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func1.2\n\t/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.8.3/pkg/internal/controller/controller.go:216\nk8s.io/apimachinery/pkg/util/wait.JitterUntilWithContext.func1\n\t/go/pkg/mod/k8s.io/apimachinery@v0.20.4/pkg/util/wait/wait.go:185\nk8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1\n\t/go/pkg/mod/k8s.io/apimachinery@v0.20.4/pkg/util/wait/wait.go:155\nk8s.io/apimachinery/pkg/util/wait.BackoffUntil\n\t/go/pkg/mod/k8s.io/apimachinery@v0.20.4/pkg/util/wait/wait.go:156\nk8s.io/apimachinery/pkg/util/wait.JitterUntil\n\t/go/pkg/mod/k8s.io/apimachinery@v0.20.4/pkg/util/wait/wait.go:133\nk8s.io/apimachinery/pkg/util/wait.JitterUntilWithContext\n\t/go/pkg/mod/k8s.io/apimachinery@v0.20.4/pkg/util/wait/wait.go:185\nk8s.io/apimachinery/pkg/util/wait.UntilWithContext\n\t/go/pkg/mod/k8s.io/apimachinery@v0.20.4/pkg/util/wait/wait.go:99"} {"level":"error","ts":1618515681.544519,"logger":"controller-runtime.manager.controller.foundationdbcluster","msg":"Reconciler error","reconciler group":"apps.foundationdb.org","reconciler kind":"FoundationDBCluster","name":"fdb-cluster-4xofxwjt-small","namespace":"vax5yfwbyrjhi1vrektj72ml8iwdrjf7","error":"Version 7.0.0 is not supported","stacktrace":"github.com/go-logr/zapr.(*zapLogger).Error\n\t/go/pkg/mod/github.com/go-logr/zapr@v0.2.0/zapr.go:132\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler\n\t/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.8.3/pkg/internal/controller/controller.go:302\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem\n\t/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.8.3/pkg/internal/controller/controller.go:253\nsigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func1.2\n\t/go/pkg/mod/sigs.k8s.io/controller-runtime@v0.8.3/pkg/internal/controller/controller.go:216\nk8s.io/apimachinery/pkg/util/wait.JitterUntilWithContext.func1\n\t/go/pkg/mod/k8s.io/apimachinery@v0.20.4/pkg/util/wait/wait.go:185\nk8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1\n\t/go/pkg/mod/k8s.io/apimachinery@v0.20.4/pkg/util/wait/wait.go:155\nk8s.io/apimachinery/pkg/util/wait.BackoffUntil\n\t/go/pkg/mod/k8s.io/apimachinery@v0.20.4/pkg/util/wait/wait.go:156\nk8s.io/apimachinery/pkg/util/wait.JitterUntil\n\t/go/pkg/mod/k8s.io/apimachinery@v0.20.4/pkg/util/wait/wait.go:133\nk8s.io/apimachinery/pkg/util/wait.JitterUntilWithContext\n\t/go/pkg/mod/k8s.io/apimachinery@v0.20.4/pkg/util/wait/wait.go:185\nk8s.io/apimachinery/pkg/util/wait.UntilWithContext\n\t/go/pkg/mod/k8s.io/apimachinery@v0.20.4/pkg/util/wait/wait.go:99"}

johscheuer commented 3 years ago

The operator complains because it doesn't contain a fdbcli for 7.0 once we have a released version of 7.0 we can add it to the operator.

jleach4 commented 3 years ago

@johscheuer Does that make sense to you? It seems weird to release software we have never tested in a cluster. Right?

brownleej commented 3 years ago

I think the CLI issue can be addressed by #610. Once that is fixed, we can do more tests to see if there are other issues with pre-release versions of FDB that we can track here.

brownleej commented 3 years ago

It is also possible today to create a custom build of the operator image that uses unreleased binaries, provided that you have a place to download them from that is compatible with the way we download them from the public website. You can set this up with binaries on your local machine, by configuring the image to download them from a file:// address. We've done that in the past to test against unreleased versions of FDB.

johscheuer commented 3 years ago

Our idea was to not use the fdbcli directly in the operator container but rather just use exec to jump into one of the containers and execute the commands there. One of the challenges we would face here is the lock_client since it will be not trivial to solve the fdb client lib dependency. We may want to chat about this offline.

johscheuer commented 3 years ago

@brownleej that issue should be solved with the latest changes you added right?

brownleej commented 3 years ago

Yes, we can now support any version of FDB that has docker images available.

jleach4 commented 2 years ago

When attempting to automate 7.0.0-rc1 I am getting

"error":"stat /usr/bin/fdb/7.0/fdbcli: no such file or directory"

johscheuer commented 2 years ago

Could you please add a reproducible example? it's hard to see/understand what you did and the operator supports 7.0.0 since @09harsh has written some tests for it. I would expect that the issue is not on the operator side but rather how it was instantiated.

johscheuer commented 2 years ago

I would assume that how ever the operator was instantiated the fdbcli binary was not copied to the correct location: /usr/bin/fdb/7.0/fdbcli.

johscheuer commented 2 years ago

Looking into it the issue is that the version in /var/fdb/version (sidecar) was changed to 7.0.0-rc1 which was never tested and is actually a different issue since it's about adding support for the new version schema.

johscheuer commented 2 years ago

I opened a new issue to track the support for the new rc version format: https://github.com/FoundationDB/fdb-kubernetes-operator/issues/1012 the changes should be relative easy but will require a new release.