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 authored Dec 20, 2021
1 parent d012a0b commit 95547a2
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 @@ -54,6 +54,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 @@ -1660,3 +1661,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 @@ -3447,6 +3447,10 @@ func testRotateSuccess(t *testing.T, suite *integrationTestSuite) {
config, err := teleport.GenerateConfig(t, nil, tconf)
require.NoError(t, err)

// 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"
apidefaults "github.com/gravitational/teleport/api/defaults"
"github.com/gravitational/teleport/api/types"
Expand All @@ -30,8 +33,6 @@ import (
"github.com/gravitational/teleport/lib/reversetunnel"
"github.com/gravitational/teleport/lib/services"
"github.com/gravitational/teleport/lib/utils"
"github.com/gravitational/trace"
"github.com/sirupsen/logrus"
)

func (process *TeleportProcess) initKubernetes() {
Expand Down Expand Up @@ -270,6 +271,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 95547a2

Please sign in to comment.