Skip to content

Commit 2b94284

Browse files
committed
Fix initKube: broadcast KubeReady event (#9418)
1 parent e6dce0d commit 2b94284

File tree

3 files changed

+33
-2
lines changed

3 files changed

+33
-2
lines changed

Diff for: integration/helpers.go

+25
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import (
3838

3939
"golang.org/x/crypto/ssh"
4040
"golang.org/x/crypto/ssh/agent"
41+
"gopkg.in/check.v1"
4142

4243
"github.com/gravitational/teleport"
4344
"github.com/gravitational/teleport/api/types"
@@ -49,6 +50,7 @@ import (
4950
"github.com/gravitational/teleport/lib/client"
5051
"github.com/gravitational/teleport/lib/defaults"
5152
"github.com/gravitational/teleport/lib/events"
53+
"github.com/gravitational/teleport/lib/kube/kubeconfig"
5254
"github.com/gravitational/teleport/lib/reversetunnel"
5355
"github.com/gravitational/teleport/lib/service"
5456
"github.com/gravitational/teleport/lib/services"
@@ -1627,3 +1629,26 @@ func fatalIf(err error) {
16271629
log.Fatalf("%v at %v", string(debug.Stack()), err)
16281630
}
16291631
}
1632+
1633+
func enableKubernetesService(c *check.C, config *service.Config) {
1634+
kubeConfigPath := filepath.Join(c.MkDir(), "kube_config")
1635+
1636+
err := kubeconfig.Update(kubeConfigPath, kubeconfig.Values{
1637+
TeleportClusterName: "teleport-cluster",
1638+
ClusterAddr: fmt.Sprintf("%s:0", Host),
1639+
Credentials: &client.Key{
1640+
Cert: []byte("cert"),
1641+
TLSCert: []byte("tls-cert"),
1642+
Priv: []byte("priv"),
1643+
Pub: []byte("pub"),
1644+
TrustedCA: []auth.TrustedCerts{{
1645+
TLSCertificates: [][]byte{[]byte("ca-cert")},
1646+
}},
1647+
},
1648+
})
1649+
c.Assert(err, check.IsNil)
1650+
1651+
config.Kube.Enabled = true
1652+
config.Kube.KubeconfigPath = kubeConfigPath
1653+
config.Kube.ListenAddr = utils.MustParseAddr(fmt.Sprintf("%s:0", Host))
1654+
}

Diff for: integration/integration_test.go

+4
Original file line numberDiff line numberDiff line change
@@ -3381,6 +3381,10 @@ func (s *IntSuite) TestRotateSuccess(c *check.C) {
33813381
config, err := t.GenerateConfig(nil, tconf)
33823382
c.Assert(err, check.IsNil)
33833383

3384+
// Enable Kubernetes service to test issue where the `KubernetesReady` event was not properly propagated
3385+
// and in the case where Kube service was enabled cert rotation flow was broken.
3386+
enableKubernetesService(c, config)
3387+
33843388
serviceC := make(chan *service.TeleportProcess, 20)
33853389

33863390
runErrCh := make(chan error, 1)

Diff for: lib/service/kubernetes.go

+4-2
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ import (
2020
"net"
2121
"net/http"
2222

23+
"github.com/gravitational/trace"
24+
"github.com/sirupsen/logrus"
25+
2326
"github.com/gravitational/teleport"
2427
"github.com/gravitational/teleport/lib/auth"
2528
"github.com/gravitational/teleport/lib/cache"
@@ -29,8 +32,6 @@ import (
2932
"github.com/gravitational/teleport/lib/labels"
3033
"github.com/gravitational/teleport/lib/reversetunnel"
3134
"github.com/gravitational/teleport/lib/utils"
32-
"github.com/gravitational/trace"
33-
"github.com/sirupsen/logrus"
3435
)
3536

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

0 commit comments

Comments
 (0)