Skip to content

Commit 6fbabbf

Browse files
committed
add masterip to firewall
1 parent edf54c0 commit 6fbabbf

1 file changed

Lines changed: 41 additions & 1 deletion

File tree

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

Lines changed: 41 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,11 @@ func syncGKECluster(cr *v1alpha1.GKECluster, log *logrus.Entry) (*v1alpha1.GKECl
276276
return nil, err
277277
}
278278

279+
err = updateClusterFirewall(gkecluster, log)
280+
if err != nil {
281+
log.Errorf("Failed to update cluster %s firewall: %v", gkecluster.Name, err)
282+
}
283+
279284
log.Infof("GKE cluster %s is ready", cr.Status.ClusterName)
280285

281286
status := cr.Status
@@ -1204,6 +1209,41 @@ func injectCollector(cluster *RemoteCluster, log *logrus.Entry) error {
12041209
return nil
12051210
}
12061211

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

0 commit comments

Comments
 (0)