From 7394c15d0a6271f561f458a18633699e73ec08ac Mon Sep 17 00:00:00 2001 From: zerg-junior Date: Wed, 27 Jun 2018 17:29:02 +0200 Subject: [PATCH] Make AWS region configurable in the operator cofig map (#333) --- docs/reference/operator_parameters.md | 3 +++ manifests/configmap.yaml | 1 + pkg/cluster/sync.go | 2 +- pkg/util/config/config.go | 1 + pkg/util/constants/aws.go | 2 -- pkg/util/volumes/ebs.go | 3 ++- 6 files changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/reference/operator_parameters.md b/docs/reference/operator_parameters.md index 115cb055e..4e22847dd 100644 --- a/docs/reference/operator_parameters.md +++ b/docs/reference/operator_parameters.md @@ -212,6 +212,9 @@ words. pods. Only used when combined with [kube2iam](https://github.com/jtblin/kube2iam) project on AWS. The default is empty. +* **aws_region** + AWS region used to store ESB volumes. + ## Debugging the operator * **debug_logging** boolean parameter that toggles verbose debug logs from the operator. The diff --git a/manifests/configmap.yaml b/manifests/configmap.yaml index c0295f4ca..7725c3630 100644 --- a/manifests/configmap.yaml +++ b/manifests/configmap.yaml @@ -25,6 +25,7 @@ data: # pam_role_name: zalandos # pam_configuration: | # https://info.example.com/oauth2/tokeninfo?access_token= uid realm=/employees + aws_region: eu-central-1 db_hosted_zone: db.example.com master_dns_name_format: '{cluster}.{team}.staging.{hostedzone}' replica_dns_name_format: '{cluster}-repl.{team}.staging.{hostedzone}' diff --git a/pkg/cluster/sync.go b/pkg/cluster/sync.go index cf38a6d4f..bd2823b5b 100644 --- a/pkg/cluster/sync.go +++ b/pkg/cluster/sync.go @@ -447,7 +447,7 @@ func (c *Cluster) syncVolumes() error { if !act { return nil } - if err := c.resizeVolumes(c.Spec.Volume, []volumes.VolumeResizer{&volumes.EBSVolumeResizer{}}); err != nil { + if err := c.resizeVolumes(c.Spec.Volume, []volumes.VolumeResizer{&volumes.EBSVolumeResizer{AWSRegion: c.OpConfig.AWSRegion}}); err != nil { return fmt.Errorf("could not sync volumes: %v", err) } diff --git a/pkg/util/config/config.go b/pkg/util/config/config.go index 182bb077c..d41b63e6e 100644 --- a/pkg/util/config/config.go +++ b/pkg/util/config/config.go @@ -76,6 +76,7 @@ type Config struct { // value of this string must be valid JSON or YAML; see initPodServiceAccount PodServiceAccountDefinition string `name:"pod_service_account_definition" default:""` DbHostedZone string `name:"db_hosted_zone" default:"db.example.com"` + AWSRegion string `name:"aws_region" default:"eu-central-1"` WALES3Bucket string `name:"wal_s3_bucket"` LogS3Bucket string `name:"log_s3_bucket"` KubeIAMRole string `name:"kube_iam_role"` diff --git a/pkg/util/constants/aws.go b/pkg/util/constants/aws.go index fb12cdd61..f1cfd5975 100644 --- a/pkg/util/constants/aws.go +++ b/pkg/util/constants/aws.go @@ -4,8 +4,6 @@ import "time" // AWS specific constants used by other modules const ( - // default region for AWS. TODO: move it to the operator configuration - AWSRegion = "eu-central-1" // EBS related constants EBSVolumeIDStart = "/vol-" EBSProvisioner = "kubernetes.io/aws-ebs" diff --git a/pkg/util/volumes/ebs.go b/pkg/util/volumes/ebs.go index 12cb405b1..57a334258 100644 --- a/pkg/util/volumes/ebs.go +++ b/pkg/util/volumes/ebs.go @@ -16,11 +16,12 @@ import ( // EBSVolumeResizer implements volume resizing interface for AWS EBS volumes. type EBSVolumeResizer struct { connection *ec2.EC2 + AWSRegion string } // ConnectToProvider connects to AWS. func (c *EBSVolumeResizer) ConnectToProvider() error { - sess, err := session.NewSession(&aws.Config{Region: aws.String(constants.AWSRegion)}) + sess, err := session.NewSession(&aws.Config{Region: aws.String(c.AWSRegion)}) if err != nil { return fmt.Errorf("could not establish AWS session: %v", err) }