mirror of
https://github.com/k3s-io/k3s.git
synced 2026-04-21 14:17:46 -04:00
If no etcd was deployed, fail etcd-snapshot with a useful error
Signed-off-by: manuelbuil <mbuil@suse.com>
This commit is contained in:
parent
0e15269e99
commit
4ec261733e
2 changed files with 20 additions and 12 deletions
|
|
@ -11,9 +11,13 @@ import (
|
|||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
"github.com/k3s-io/k3s/pkg/cluster/managed"
|
||||
"github.com/k3s-io/k3s/pkg/etcd"
|
||||
"github.com/k3s-io/k3s/pkg/nodepassword"
|
||||
"github.com/k3s-io/k3s/pkg/util"
|
||||
"github.com/k3s-io/k3s/pkg/version"
|
||||
"github.com/sirupsen/logrus"
|
||||
apierrors "k8s.io/apimachinery/pkg/api/errors"
|
||||
|
|
@ -96,7 +100,7 @@ func (c *Cluster) start(ctx context.Context) error {
|
|||
// management of etcd cluster membership without being disrupted when a member is removed from the cluster.
|
||||
func (c *Cluster) registerDBHandlers(handler http.Handler) (http.Handler, error) {
|
||||
if c.managedDB == nil {
|
||||
return handler, nil
|
||||
return handlerNoEtcd(handler), nil
|
||||
}
|
||||
|
||||
return c.managedDB.Register(handler)
|
||||
|
|
@ -168,3 +172,18 @@ func (c *Cluster) deleteNodePasswdSecret(ctx context.Context) {
|
|||
logrus.Warnf("failed to delete old node password secret: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
// handlerNoEtcd wraps a handler with an error message indicating that etcd is not deployed.
|
||||
func handlerNoEtcd(handler http.Handler) http.Handler {
|
||||
r := mux.NewRouter().SkipClean(true)
|
||||
|
||||
// Wildcard route for anything after /db/
|
||||
r.HandleFunc("/db/{_:.*}", func(resp http.ResponseWriter, r *http.Request) {
|
||||
util.SendError(errors.New("etcd datastore disabled"), resp, r, http.StatusBadRequest)
|
||||
})
|
||||
|
||||
// Needs to come at the end, otherwise wildcard routes won't work
|
||||
r.NotFoundHandler = handler
|
||||
|
||||
return r
|
||||
}
|
||||
|
|
|
|||
|
|
@ -145,17 +145,6 @@ var _ = Describe("Verify snapshots and cluster restores work", Ordered, func() {
|
|||
Expect(e2e.RunCmdOnNode(cmd, serverNodeNames[0])).Error().NotTo(HaveOccurred())
|
||||
})
|
||||
|
||||
It("Resets non bootstrap nodes", func() {
|
||||
for _, nodeName := range serverNodeNames {
|
||||
if nodeName != serverNodeNames[0] {
|
||||
cmd := "k3s server --cluster-reset"
|
||||
response, err := e2e.RunCmdOnNode(cmd, nodeName)
|
||||
Expect(err).NotTo(HaveOccurred())
|
||||
Expect(response).Should(ContainSubstring("Managed etcd cluster membership has been reset, restart without --cluster-reset flag now"))
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
It("Checks that other servers are not ready", func() {
|
||||
fmt.Printf("\nFetching node status\n")
|
||||
Eventually(func(g Gomega) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue