kops/cmd/kops
Christian Joun e91ed11449
Implement API load balancer class with NLB and ELB support on AWS (#9011)
* refactor TargetLoadBalancer to use DNSTarget interface instead of LoadBalancer

* add LoadBalancerClass fields into api

* make api machinery

* WIP: Implemented API loadbalancer class, allowing NLB and ELB support on AWS for new clusters.

* perform vendoring related tasks and apply fixes identified from hack/

dissallow spotinst + nlb
remove reflection in status_discovery.go
Add precreated additional security groups to the Master nodes in case of NLB
Remove support for attaching individual instances to NLB; only rely on ASG attachments
Don't specify Classic loadbalancer in GCE integration test

* add utility function to the kops model context to make LoadBalancer comparisons simpler

* use DNSTarget interface when locating DNSName of API ELB

* wip: create target group task

* Consolidate TargetGroup tasks

* Use context helper for determining api load balancer type to avoid nil pointers

* Update NLB creation to use target group ARN from separate task rather than creating a TG in-line

* Address staticcheck and bazel failures

* Removing NLB Attachment tasks because they're not used since we switched to defining them as a part of the ASGs

* Address PR review feedback

* Only set LB Class field for AWS clusters, fix nil pointer

* Move target group attributes from NLB task to TG task, removing unused attributes

* Add terraform and cloudformation support for NLBs, listeners, and target groups

* Update integration test for NLB support

* Fix NLB name format to pass terraform validation

* Preserve security group rule names when switching ELB to NLB to reduce destructive terraform changes

* Use elbv2 enums and address some TODOs

* Set healthcheck values in target group

* Find TG tags, fix NLB name detection

* Fix more spurious changes reported by lifecycle integration test

* Fix spotinst validation, more code cleanup

* Address more PR feedback

* ReconcileTargetGroups unit test + more code simplification

* Addressing PR feedback Renaming task 1. awstasks.LoadBalancer -> awstasks.ClassicLoadBalancer

* Addressing PR feedback Renaming task: ELBName() -> CLBName() / LinkToELB() -> LinkToCLB()

* Addressing PR feedback: Various text changes

* fix export of kubecfg

* address TargetGroup should have the same name as the NLB

* should address error when fetching tags due to missing ARN

* Update expected and crds

* Add feature table to NLB docs

* Address more feedback and remove some TODOs that arent applicable anymore

* Update spotinst validation error message

Co-authored-by: Peter Rifel <pgrifel@gmail.com>
2020-11-02 05:28:52 -08:00
..
util Support authentication helper for kubectl 2020-08-30 15:16:20 -04:00
BUILD.bazel Refactor based on changes to cloud instances 2020-09-01 08:41:53 +02:00
completion.go fix some go-lint warning 2020-06-09 08:52:50 +08:00
create.go Update cluster and state store names in CLI docs 2020-10-28 18:22:53 +02:00
create_cluster.go Implement API load balancer class with NLB and ELB support on AWS (#9011) 2020-11-02 05:28:52 -08:00
create_cluster_integration_test.go Add integration test for GCE private topology with bastion 2020-08-27 14:28:26 -05:00
create_cluster_test.go Remove unnecessary code 2018-11-08 12:40:13 -05:00
create_ig.go Pass cloud into populate cluster 2020-09-24 07:22:13 +02:00
create_secret.go Update cluster and state store names in CLI docs 2020-10-28 18:22:53 +02:00
create_secret_cilium_encryptionconfig.go Update cluster and state store names in CLI docs 2020-10-28 18:22:53 +02:00
create_secret_dockerconfig.go Update cluster and state store names in CLI docs 2020-10-28 18:22:53 +02:00
create_secret_encryptionconfig.go Update cluster and state store names in CLI docs 2020-10-28 18:22:53 +02:00
create_secret_keypair.go Update cluster and state store names in CLI docs 2020-10-28 18:22:53 +02:00
create_secret_keypair_ca.go Update cluster and state store names in CLI docs 2020-10-28 18:22:53 +02:00
create_secret_sshpublickey.go Update cluster and state store names in CLI docs 2020-10-28 18:22:53 +02:00
create_secret_weave_encryptionconfig.go Update cluster and state store names in CLI docs 2020-10-28 18:22:53 +02:00
delete.go Update cluster and state store names in CLI docs 2020-10-28 18:22:53 +02:00
delete_cluster.go kubeconfig generation: add tests for kops plugin 2020-08-30 15:17:36 -04:00
delete_confirm_test.go Update copyright notices 2019-09-09 14:47:51 -04:00
delete_instance.go Fix nil pointer when deleting instance 2020-10-13 13:23:22 +02:00
delete_instancegroup.go Add context.Context to most signatures 2020-04-11 14:44:17 -04:00
delete_secret.go fix some go-lint warning 2020-06-09 08:52:50 +08:00
describe.go Move kubectl dependency to k8s.io/kubectl 2020-01-17 06:24:24 -05:00
describe_secrets.go fix some go-lint warning 2020-06-09 08:52:50 +08:00
edit.go Update cluster and state store names in CLI docs 2020-10-28 18:22:53 +02:00
edit_cluster.go Update cluster and state store names in CLI docs 2020-10-28 18:22:53 +02:00
edit_instancegroup.go Update cluster and state store names in CLI docs 2020-10-28 18:22:53 +02:00
editor.go Update copyright notices 2019-09-09 14:47:51 -04:00
export.go Update cluster and state store names in CLI docs 2020-10-28 18:22:53 +02:00
export_kubecfg.go Update cluster and state store names in CLI docs 2020-10-28 18:22:53 +02:00
gen_help_docs.go Update copyright notices 2019-09-09 14:47:51 -04:00
get.go Keep the good part from last attempt 2020-09-01 08:30:03 +02:00
get_cluster.go Import package aliases modified 2020-04-17 16:55:08 +02:00
get_instancegroups.go Add context.Context to most signatures 2020-04-11 14:44:17 -04:00
get_instances.go Improve kops get instances when api is unavailable 2020-09-19 08:43:53 +02:00
get_secrets.go Upgrade to klog2 2020-08-16 20:56:48 -05:00
import.go Move kubectl dependency to k8s.io/kubectl 2020-01-17 06:24:24 -05:00
import_cluster.go Add context.Context to most signatures 2020-04-11 14:44:17 -04:00
integration_test.go Set minimum Terraform version to 0.12.26/0.13.0 2020-10-28 20:24:41 +00:00
lifecycle_integration_test.go Add lifecycle integration tests for complex and externallb clusters 2020-10-30 10:06:36 -05:00
main.go Support authentication helper for kubectl 2020-08-30 15:16:20 -04:00
replace.go Upgrade to klog2 2020-08-16 20:56:48 -05:00
rollingupdate.go Update copyright notices 2019-09-09 14:47:51 -04:00
rollingupdatecluster.go Add rolling upgrade to openstack 2020-10-01 20:07:44 +02:00
root.go Support authentication helper for kubectl 2020-08-30 15:16:20 -04:00
set.go Remove code supporting dropped k8s versions 2020-06-04 12:11:51 -07:00
set_cluster.go Remove code supporting dropped k8s versions 2020-06-04 12:11:51 -07:00
toolbox.go feat toolbox instance-selector implementation 2020-08-10 16:16:51 -05:00
toolbox_convert_imported.go Add context.Context to most signatures 2020-04-11 14:44:17 -04:00
toolbox_dump.go Upgrade to klog2 2020-08-16 20:56:48 -05:00
toolbox_instance_selector.go Pass cloud into populate cluster 2020-09-24 07:22:13 +02:00
toolbox_instance_selector_internal_test.go use byte quantity flag instead of int MiBs for memory args 2020-08-10 16:16:51 -05:00
toolbox_template.go Merge pull request #7319 from lcrisci/fix-template-clustername-behavior 2020-01-28 08:23:40 -08:00
toolbox_template_test.go Update copyright notices 2019-09-09 14:47:51 -04:00
update.go Update cluster and state store names in CLI docs 2020-10-28 18:22:53 +02:00
update_cluster.go Update cluster and state store names in CLI docs 2020-10-28 18:22:53 +02:00
upgrade.go Update cluster and state store names in CLI docs 2020-10-28 18:22:53 +02:00
upgrade_cluster.go upgrade-cluster: test that new image in stable or alpha channel will receive automated update 2020-10-14 10:14:47 -04:00
validate.go Update cmd help text 2020-06-11 08:37:10 +02:00
validate_cluster.go Upgrade to klog2 2020-08-16 20:56:48 -05:00
version.go Move kubectl dependency to k8s.io/kubectl 2020-01-17 06:24:24 -05:00