Skip to content

Commit

Permalink
Merge pull request #43 from szuecs/custom-cluster-id-prefix
Browse files Browse the repository at this point in the history
Add option to set custom ClusterID Tag Prefix
  • Loading branch information
szuecs authored Jan 19, 2022
2 parents 0a658d3 + ed09531 commit 3933944
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 18 deletions.
27 changes: 15 additions & 12 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,15 +34,16 @@ var (
)

type Config struct {
Master string
KubeConfig string
DryRun bool
LogFormat string
LogLevel string
Provider string
VPCID string
ClusterID string
ControllerID string
Master string
KubeConfig string
DryRun bool
LogFormat string
LogLevel string
Provider string
VPCID string
ClusterID string
ClusterIDTagPrefix string
ControllerID string
// required by AWS provider
NatCidrBlocks []string
// required by AWS provider
Expand All @@ -59,6 +60,7 @@ var defaultConfig = &Config{
KubeConfig: "",
VPCID: "",
ClusterID: "",
ClusterIDTagPrefix: "kubernetes.io/cluster/",
ControllerID: "kube-static-egress-controller",
DryRun: false,
LogFormat: "text",
Expand All @@ -75,10 +77,10 @@ func NewConfig() *Config {
}
}

func newProvider(clusterID, controllerID string, dry bool, name, vpcID string, natCidrBlocks, availabilityZones []string, stackTerminationProtection bool, additionalStackTags map[string]string) provider.Provider {
func newProvider(clusterID, controllerID string, dry bool, name, vpcID string, clusterIDTagPrefix string, natCidrBlocks, availabilityZones []string, stackTerminationProtection bool, additionalStackTags map[string]string) provider.Provider {
switch name {
case aws.ProviderName:
return aws.NewAWSProvider(clusterID, controllerID, dry, vpcID, natCidrBlocks, availabilityZones, stackTerminationProtection, additionalStackTags)
return aws.NewAWSProvider(clusterID, controllerID, dry, vpcID, clusterIDTagPrefix, natCidrBlocks, availabilityZones, stackTerminationProtection, additionalStackTags)
case noop.ProviderName:
return noop.NewNoopProvider()
default:
Expand Down Expand Up @@ -115,6 +117,7 @@ Example:
app.Flag("kubeconfig", "Retrieve target cluster configuration from a Kubernetes configuration file (default: auto-detect)").Default(defaultConfig.KubeConfig).StringVar(&cfg.KubeConfig)
app.Flag("provider", "Provider implementing static egress <noop|aws> (default: auto-detect)").Default(defaultConfig.Provider).StringVar(&cfg.Provider)
app.Flag("cluster-id", "Cluster ID used define ownership of Egress stack.").StringVar(&cfg.ClusterID)
app.Flag("cluster-id-tag-prefix", "Prefix for the Cluster ID tag set on the Egress stack.").Default(defaultConfig.ClusterIDTagPrefix).StringVar(&cfg.ClusterIDTagPrefix)
app.Flag("controller-id", "Controller ID used to identify ownership of Egress stack.").Default(defaultConfig.ControllerID).StringVar(&cfg.ControllerID)
app.Flag("vpc-id", "VPC ID (default: auto-detect)").Default(defaultConfig.VPCID).StringVar(&cfg.VPCID)
app.Flag("aws-nat-cidr-block", "AWS Provider requires to specify NAT-CIDR-Blocks for each AZ to have a NAT gateway in. Each should be a small network having only the NAT GW").StringsVar(&cfg.NatCidrBlocks)
Expand Down Expand Up @@ -154,7 +157,7 @@ func main() {
log.SetLevel(ll)
log.Debugf("config: %+v", cfg)

p := newProvider(cfg.ClusterID, cfg.ControllerID, cfg.DryRun, cfg.Provider, cfg.VPCID, cfg.NatCidrBlocks, cfg.AvailabilityZones, cfg.StackTerminationProtection, cfg.AdditionalStackTags)
p := newProvider(cfg.ClusterID, cfg.ControllerID, cfg.DryRun, cfg.Provider, cfg.VPCID, cfg.ClusterIDTagPrefix, cfg.NatCidrBlocks, cfg.AvailabilityZones, cfg.StackTerminationProtection, cfg.AdditionalStackTags)

configsChan := make(chan provider.EgressConfig)
cmWatcher, err := kube.NewConfigMapWatcher(newKubeClient(), cfg.Namespace, "egress=static", configsChan)
Expand Down
13 changes: 7 additions & 6 deletions provider/aws/aws.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ const (
tagDefaultAZKeyRouteTableID = "AvailabilityZone"
tagDefaultTypeValueRouteTableID = "dmz" // find route table by "Type" tag = "dmz"
egressConfigTagPrefix = "egress-config/"
clusterIDTagPrefix = "kubernetes.io/cluster/"
kubernetesApplicationTagKey = "kubernetes:application"
resourceLifecycleOwned = "owned"
maxStackWaitTimeout = 15 * time.Minute
Expand All @@ -51,6 +50,7 @@ var (

type AWSProvider struct {
clusterID string
clusterIDTagPrefix string
controllerID string
dry bool
vpcID string
Expand All @@ -74,11 +74,12 @@ type stackSpec struct {
tags []*cloudformation.Tag
}

func NewAWSProvider(clusterID, controllerID string, dry bool, vpcID string, natCidrBlocks, availabilityZones []string, stackTerminationProtection bool, additionalStackTags map[string]string) *AWSProvider {
func NewAWSProvider(clusterID, controllerID string, dry bool, vpcID string, clusterIDTagPrefix string, natCidrBlocks, availabilityZones []string, stackTerminationProtection bool, additionalStackTags map[string]string) *AWSProvider {
// TODO: find vpcID at startup
p := defaultConfigProvider()
return &AWSProvider{
clusterID: clusterID,
clusterIDTagPrefix: clusterIDTagPrefix,
controllerID: controllerID,
dry: dry,
vpcID: vpcID,
Expand Down Expand Up @@ -219,8 +220,8 @@ func (p *AWSProvider) generateStackSpec(configs map[provider.Resource]map[string
}

tags := map[string]string{
clusterIDTagPrefix + p.clusterID: resourceLifecycleOwned,
kubernetesApplicationTagKey: p.controllerID,
p.clusterIDTagPrefix + p.clusterID: resourceLifecycleOwned,
kubernetesApplicationTagKey: p.controllerID,
}
spec.tags = tagMapToCloudformationTags(mergeTags(p.additionalStackTags, tags))

Expand Down Expand Up @@ -628,8 +629,8 @@ func (p *AWSProvider) getStackByName(stackName string) (*cloudformation.Stack, e
// name.
func (p *AWSProvider) getEgressStack() (*cloudformation.Stack, error) {
tags := map[string]string{
clusterIDTagPrefix + p.clusterID: resourceLifecycleOwned,
kubernetesApplicationTagKey: p.controllerID,
p.clusterIDTagPrefix + p.clusterID: resourceLifecycleOwned,
kubernetesApplicationTagKey: p.controllerID,
}

params := &cloudformation.DescribeStacksInput{}
Expand Down

0 comments on commit 3933944

Please sign in to comment.