Skip to content

Commit

Permalink
Fix initKube: broadcast KubeReady event (#9418)
Browse files Browse the repository at this point in the history
  • Loading branch information
smallinsky committed Mar 7, 2022
1 parent e6dce0d commit 617b2f0
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 2 deletions.
24 changes: 24 additions & 0 deletions integration/helpers.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ import (
"github.com/gravitational/teleport/lib/client"
"github.com/gravitational/teleport/lib/defaults"
"github.com/gravitational/teleport/lib/events"
"github.com/gravitational/teleport/lib/kube/kubeconfig"
"github.com/gravitational/teleport/lib/reversetunnel"
"github.com/gravitational/teleport/lib/service"
"github.com/gravitational/teleport/lib/services"
Expand Down Expand Up @@ -1627,3 +1628,26 @@ func fatalIf(err error) {
log.Fatalf("%v at %v", string(debug.Stack()), err)
}
}

func enableKubernetesService(t *testing.T, config *service.Config) {
kubeConfigPath := filepath.Join(t.TempDir(), "kube_config")

err := kubeconfig.Update(kubeConfigPath, kubeconfig.Values{
TeleportClusterName: "teleport-cluster",
ClusterAddr: net.JoinHostPort(Host, ports.Pop()),
Credentials: &client.Key{
Cert: []byte("cert"),
TLSCert: []byte("tls-cert"),
Priv: []byte("priv"),
Pub: []byte("pub"),
TrustedCA: []auth.TrustedCerts{{
TLSCertificates: [][]byte{[]byte("ca-cert")},
}},
},
})
require.NoError(t, err)

config.Kube.Enabled = true
config.Kube.KubeconfigPath = kubeConfigPath
config.Kube.ListenAddr = utils.MustParseAddr(net.JoinHostPort(Host, ports.Pop()))
}
4 changes: 4 additions & 0 deletions integration/integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3381,6 +3381,10 @@ func (s *IntSuite) TestRotateSuccess(c *check.C) {
config, err := t.GenerateConfig(nil, tconf)
c.Assert(err, check.IsNil)

// Enable Kubernetes service to test issue where the `KubernetesReady` event was not properly propagated
// and in the case where Kube service was enabled cert rotation flow was broken.
enableKubernetesService(t, config)

serviceC := make(chan *service.TeleportProcess, 20)

runErrCh := make(chan error, 1)
Expand Down
6 changes: 4 additions & 2 deletions lib/service/kubernetes.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ import (
"net"
"net/http"

"github.com/gravitational/trace"
"github.com/sirupsen/logrus"

"github.com/gravitational/teleport"
"github.com/gravitational/teleport/lib/auth"
"github.com/gravitational/teleport/lib/cache"
Expand All @@ -29,8 +32,6 @@ import (
"github.com/gravitational/teleport/lib/labels"
"github.com/gravitational/teleport/lib/reversetunnel"
"github.com/gravitational/teleport/lib/utils"
"github.com/gravitational/trace"
"github.com/sirupsen/logrus"
)

func (process *TeleportProcess) initKubernetes() {
Expand Down Expand Up @@ -262,6 +263,7 @@ func (process *TeleportProcess) initKubernetesService(log *logrus.Entry, conn *C
"Kubernetes service %s:%s is starting on %v.",
teleport.Version, teleport.Gitref, listener.Addr())
}
process.BroadcastEvent(Event{Name: KubernetesReady, Payload: nil})
err := kubeServer.Serve(listener)
if err != nil {
if err == http.ErrServerClosed {
Expand Down

0 comments on commit 617b2f0

Please sign in to comment.