Skip to content

Commit

Permalink
Fixed issue with unusable CNG address being returned.
Browse files Browse the repository at this point in the history
- We now wait for the CNG service to actually have endpoints
  that can serve requests before considering the cluster online.
  • Loading branch information
brett19 committed Feb 23, 2024
1 parent 14f9690 commit cf16d57
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 3 deletions.
15 changes: 12 additions & 3 deletions deployment/caodeploy/deployer.go
Original file line number Diff line number Diff line change
Expand Up @@ -249,20 +249,29 @@ func (d *Deployer) NewCluster(ctx context.Context, def *clusterdef.Cluster) (dep
if err != nil {
d.logger.Info("no cng service detected")
} else {
d.logger.Info("cng service detected, waiting for endpoints to be available")

err := d.client.WaitServiceHasEndpoints(ctx, namespace, cngServiceName)
if err != nil {
return nil, errors.Wrap(err, "failed to wait for cng service to have endpoints")
}

hasCng = true
}

if hasCng {
d.logger.Info("cng service detected, creating NodePort service")
d.logger.Info("creating cbdc cng NodePort service")
err = d.client.CreateCbdcCngService(ctx, namespace, CouchbaseClusterName)
if err != nil {
return nil, errors.Wrap(err, "failed to create dino cng service")
}
}

if def.Cao.UseIngress {
d.logger.Info("ingresses enabled")

if isOpenShift {
d.logger.Info("cng service detected, creating ui route")
d.logger.Info("creating ui route")

// this must be a short name or we hit dns name length limits
err = d.client.CreateRoute(ctx, namespace, "ui", map[string]interface{}{
Expand All @@ -282,7 +291,7 @@ func (d *Deployer) NewCluster(ctx context.Context, def *clusterdef.Cluster) (dep
}

if hasCng {
d.logger.Info("cng service detected, creating cng route")
d.logger.Info("creating cng route")

// this must be a short name or we hit dns name length limits
err = d.client.CreateRoute(ctx, namespace, "cng", map[string]interface{}{
Expand Down
34 changes: 34 additions & 0 deletions utils/caocontrol/controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -969,3 +969,37 @@ func (c *Controller) GetService(

return service, nil
}

func (c *Controller) WaitServiceHasEndpoints(
ctx context.Context,
namespace string,
name string,
) error {
kubes, err := kubernetes.NewForConfig(c.restConfig)
if err != nil {
return errors.Wrap(err, "failed to create kubernetes client")
}

err = waitForFunc(ctx, func(ctx context.Context) (bool, error) {
endpoint, err := kubes.CoreV1().Endpoints(namespace).Get(ctx, name, metav1.GetOptions{})
if err != nil {
return false, errors.Wrap(err, "failed to get endpoints resource")
}

numEndpoints := 0
for _, subset := range endpoint.Subsets {
numEndpoints += len(subset.Addresses)
}

if numEndpoints == 0 {
return false, nil
}

return true, nil
}, 10*time.Minute)
if err != nil {
return errors.Wrap(err, "failed to wait for couchbase cluster")
}

return nil
}

0 comments on commit cf16d57

Please sign in to comment.