Skip to content

Commit

Permalink
Merge pull request #467 from deads2k/no-waiting
Browse files Browse the repository at this point in the history
don't wait for healthz on recovery-apiserver and don't destroy on shutdown
  • Loading branch information
deads2k committed May 8, 2019
2 parents e2e9601 + af455f5 commit 259c590
Show file tree
Hide file tree
Showing 2 changed files with 1 addition and 56 deletions.
31 changes: 1 addition & 30 deletions pkg/cmd/recoveryapiserver/create.go
@@ -1,16 +1,12 @@
package recoveryapiserver

import (
"context"
"fmt"
"path"

"github.com/spf13/cobra"
"k8s.io/apiserver/pkg/server"
"k8s.io/klog"

"k8s.io/client-go/tools/watch"

"github.com/openshift/cluster-kube-apiserver-operator/pkg/recovery"
)

Expand Down Expand Up @@ -72,15 +68,6 @@ func (o *CreateOptions) Validate() error {
}

func (o *CreateOptions) Run() error {
ctx, cancel := watch.ContextWithOptionalTimeout(context.TODO(), 0 /*infinity*/)
defer cancel()

signalHandler := server.SetupSignalHandler()
go func() {
<-signalHandler
cancel()
}()

recoveryApiserver := &recovery.Apiserver{
PodManifestDir: o.PodManifestDir,
StaticPodResourcesDir: o.StaticPodResourcesDir,
Expand All @@ -90,26 +77,10 @@ func (o *CreateOptions) Run() error {
if err != nil {
return fmt.Errorf("failed to create recovery apiserver: %v", err)
}
// destroy the server when we're done
defer func() {
if err := recoveryApiserver.Destroy(); err != nil {
klog.Errorf("failed to destroy the recovery apiserver")
}
}()

kubeconfigPath := path.Join(recoveryApiserver.GetRecoveryResourcesDir(), recovery.AdminKubeconfigFileName)
klog.Infof("Waiting for recovery apiserver to be healthy.")
klog.Infof("To access the server.")
klog.Infof(" export KUBECONFIG=%s", kubeconfigPath)
klog.Infof("to access the server.")

err = recoveryApiserver.WaitForHealthz(ctx)
if err != nil {
return fmt.Errorf("failed to wait for recovery apiserver to be ready: %v", err)
}
klog.Infof("Recovery apiserver is up.")

<-ctx.Done()
klog.Infof("Exit requested.")

return nil
}
26 changes: 0 additions & 26 deletions pkg/recovery/apiserver.go
Expand Up @@ -2,7 +2,6 @@ package recovery

import (
"bytes"
"context"
"errors"
"fmt"
"io"
Expand All @@ -17,7 +16,6 @@ import (

corev1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/apiserver/pkg/authentication/user"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
Expand Down Expand Up @@ -299,30 +297,6 @@ func (s *Apiserver) Create() error {
return nil
}

func (s *Apiserver) WaitForHealthz(ctx context.Context) error {
// We don't have to worry about connecting to an old, terminating apiserver
// as our client certs are unique to this instance

kubeClientset, err := s.GetKubeClientset()
if err != nil {
return err
}

return wait.PollUntil(500*time.Millisecond, func() (bool, error) {
req := kubeClientset.RESTClient().Get().AbsPath("/healthz")

klog.V(1).Infof("Waiting for recovery apiserver to come up at %q", req.URL())

_, err = req.DoRaw()
if err != nil {
klog.V(5).Infof("apiserver returned error: %v", err)
return false, nil
}

return true, nil
}, ctx.Done())
}

func (s *Apiserver) Destroy() error {
recoveryPodManifestPath := filepath.Join(s.PodManifestDir, RecoveryPodFileName)

Expand Down

0 comments on commit 259c590

Please sign in to comment.