Skip to content

Commit d81b688

Browse files
authored
Merge branch 'SAP:master' into add-allow-ip-for-svc-gcp
2 parents 15c85f9 + 5723a18 commit d81b688

1 file changed

Lines changed: 40 additions & 0 deletions

File tree

src/services/gcp/pkg/stub/handler.go

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,11 @@ func syncGKECluster(cr *v1alpha1.GKECluster, log *logrus.Entry) (*v1alpha1.GKECl
280280
return nil, err
281281
}
282282

283+
err = updateClusterFirewall(gkecluster, log)
284+
if err != nil {
285+
log.Errorf("Failed to update cluster %s firewall: %v", gkecluster.Name, err)
286+
}
287+
283288
log.Infof("GKE cluster %s is ready", cr.Status.ClusterName)
284289

285290
status := cr.Status
@@ -1208,6 +1213,41 @@ func injectCollector(cluster *RemoteCluster, log *logrus.Entry) error {
12081213
return nil
12091214
}
12101215

1216+
type FirewallRule struct {
1217+
Name string
1218+
SourceRanges []string
1219+
}
1220+
1221+
func updateClusterFirewall(cluster *RemoteCluster, log *logrus.Entry) error {
1222+
masterIpv4CidrBlock, ok := cluster.PrivateClusterConfig["masterIpv4CidrBlock"].(string)
1223+
if ok && masterIpv4CidrBlock != "" {
1224+
log.Infof("Update firewall rule for cluster %s with %s", cluster.Name, masterIpv4CidrBlock)
1225+
cmd := exec.Command("gcloud" , "compute", "firewall-rules", "list", "--filter", fmt.Sprintf("name~^gke-%s(.)vms", cluster.Name), "--format", "json")
1226+
out, err := cmd.CombinedOutput()
1227+
if err != nil {
1228+
err = fmt.Errorf("failed to get firewall rule for cluster %s: %v, %s", cluster.Name, err, out)
1229+
log.Error(err)
1230+
return err
1231+
}
1232+
var firewallRule []FirewallRule
1233+
json.Unmarshal(out, &firewallRule)
1234+
name := firewallRule[0].Name
1235+
sourceRanges := firewallRule[0].SourceRanges
1236+
newRanges := append(sourceRanges, masterIpv4CidrBlock)
1237+
newRangesString := strings.Join(newRanges,",")
1238+
cmd = exec.Command("gcloud", "compute", "firewall-rules", "update", name, fmt.Sprintf("--source-ranges=%s", newRangesString))
1239+
_, err = cmd.CombinedOutput()
1240+
if err != nil {
1241+
err = fmt.Errorf("failed to update firewall rule for cluster %s: %v", cluster.Name, err)
1242+
log.Error(err)
1243+
return err
1244+
}
1245+
return nil
1246+
}
1247+
log.Warningf("MasterIpv4CidrBlock fetching failed for cluster %s", cluster.Name)
1248+
return nil
1249+
}
1250+
12111251
type RemoteClusterSDK struct {
12121252
kubeConfig *rest.Config
12131253
cluster *RemoteCluster

0 commit comments

Comments
 (0)