diff --git a/app/common/kube_api.py b/app/common/kube_api.py index 58c121c..ddc12c3 100644 --- a/app/common/kube_api.py +++ b/app/common/kube_api.py @@ -213,6 +213,10 @@ def setup_ca(self, kube_env, cluster_name, region): f'--namespace cluster-autoscaler' return self.execute_command(command, kube_env) + def setup_ext_snat(self, kube_env): + command = "kubectl set env daemonset -n kube-system aws-node AWS_VPC_K8S_CNI_EXTERNALSNAT=true" + return self.execute_command(command, kube_env) + def setup_traefik(self, kube_env): """ Setup traefik plugin in created cluster @@ -233,14 +237,10 @@ def setup_traefik(self, kube_env): command = f'{HELM} upgrade --install traefik traefik/traefik ' \ f'--set service.type=NodePort ' \ f'--set ports.web.nodePort=30003 ' \ - f'--set ports.discovery.port=8001 ' \ - f'--set ports.discovery.expose=true ' \ - f'--set ports.discovery.exposedPort=5801 ' \ - f'--set ports.discovery.nodePort=30004 ' \ - f'--set ports.external.port=8002 ' \ - f'--set ports.external.expose=true ' \ - f'--set ports.external.exposedPort=20000 ' \ - f'--set ports.external.nodePort=30005 ' \ + f'--set ports.internal.port=8002 ' \ + f'--set ports.internal.expose=true ' \ + f'--set ports.internal.exposedPort=20000 ' \ + f'--set ports.internal.nodePort=30005 ' \ f'--set tolerations[0].key=type ' \ f'--set tolerations[0].value=kubsystem ' \ f'--set tolerations[0].operator=Equal ' \ diff --git a/app/infra/cluster_service.py b/app/infra/cluster_service.py index 1fddf7d..0e3532a 100644 --- a/app/infra/cluster_service.py +++ b/app/infra/cluster_service.py @@ -132,6 +132,13 @@ def resource_post_setup(terraform): else: yield "Traefik installed successfully.", None + # Set up ext SNAT + snat_res, msg = terraform.kctx_api.setup_ext_snat(kube_env) + if snat_res != 0: + yield "Failed to setup external SNAT. Resuming anyway", None + else: + yield "External SNAT installed successfully.", None + # Set up metrics res, msg = terraform.kctx_api.setup_metrics(kube_env) if res != 0: diff --git a/app/infra/templates/template_tfvars.tf b/app/infra/templates/template_tfvars.tf index c0476a5..caeb7fa 100644 --- a/app/infra/templates/template_tfvars.tf +++ b/app/infra/templates/template_tfvars.tf @@ -1,15 +1,12 @@ cluster-name = "{{ variables.resource_name }}" network_id = "{{ variables.network_id }}" -nebula_cidr_block = "{{ variables.nebula_cidr_block }}" -nebula_route_table_id = "{{ variables.nebula_route_table_id }}" -peer_account_id = "{{ variables.peer_account_id }}" -peer_vpc_id = "{{ variables.peer_vpc_id }}" certificate_arn_ext = "{{ variables.certificate_arn_ext }}" -certificate_arn_discovery = "{{ variables.certificate_arn_discovery }}" -nodePools = {{ variables.nodePools }} -{% if variables.cluster_type %} cluster_type = "{{ variables.cluster_type }}" -{% endif %} +transit_gw_id = "{{ variables.transit_gw_id }}" +head_vpc_id = "{{ variables.head_vpc_id }}" +dns_suffix = "{{ variables.dns_suffix }}" +dns_lb = "{{ variables.dns_lb }}" +nodePools = {{ variables.nodePools }} {% if variables.eks_version %} eks-version = "{{ variables.eks_version }}" {% endif %} diff --git a/app/infra/terraform_api.py b/app/infra/terraform_api.py index 1036da7..6e3bab0 100644 --- a/app/infra/terraform_api.py +++ b/app/infra/terraform_api.py @@ -79,7 +79,7 @@ def create_resource(self): # Terraform apply _cmd_apply = f"terraform apply -no-color -var-file={aws_vars_path} -var-file={resource_vars_path} -auto-approve" yield f"RUNNING: Actually CREATING resource. This may take time... {_cmd_apply}", None - err_code_apply, outp = shell_run(_cmd_apply, cwd=self.work_dir, timeout=900) + err_code_apply, outp = shell_run(_cmd_apply, cwd=self.work_dir, timeout=2000) for s in outp: self.logger.info(s) yield f"Terraform apply: {s}", None @@ -90,7 +90,7 @@ def create_resource(self): _cmd_destroy = f"terraform destroy -no-color" \ f" -var-file={aws_vars_path} -var-file={resource_vars_path} -auto-approve" yield f"RUNNING: DESTROYING partially created resource. This may take time... {_cmd_destroy}", None - err_code_destroy, outp = shell_run(_cmd_destroy, cwd=self.work_dir, timeout=900) + err_code_destroy, outp = shell_run(_cmd_destroy, cwd=self.work_dir, timeout=2000) for s in outp: self.logger.info(s) self.logger.info(f"Terraform destroy complete. Errcode: {err_code_destroy}") @@ -141,7 +141,7 @@ def destroy_resource(self): _cmd_destroy = f"terraform destroy -no-color" \ f" -var-file={aws_vars_path} -var-file={resource_vars_path} -auto-approve" yield f"RUNNING: Actually DESTROYING resources. This may take time... {_cmd_destroy}", None - err_code_destroy, outp = shell_run(_cmd_destroy, cwd=self.work_dir, timeout=900) + err_code_destroy, outp = shell_run(_cmd_destroy, cwd=self.work_dir, timeout=2000) for s in outp: self.logger.info(s) yield f"Terraform destroy: {s}", None