kops/cloudmock
Nat Henderson 9b08c4bb51 Enable internal load balancers when running on GCP
* Add ILBs, broadly following the AWS model.  The following new
capabilities are added for clusters in GCP:
  * Cluster's spec.api.loadBalancer can be set to 'type: internal' on
    GCP.
    * Therefore, GCP can now create:
        * regional backend services
        * regional (non-legacy) healthchecks
        * firewall rules with "internal" load-balancing scheme
        * firewall rules with dot-notation-specified IP addresses
  * Cluster's spec.api.loadBalancer's 'subnets' field functions
    as in the AWS model.

A few incidental changes are included, either because this change
touched the relevant code or because my use case happened to trigger the
issues that are fixed here.

* Cluster's spec.networkID field can be prefixed by project to use
  GCP's common cross-project networking model.
    * The presumption is that all specified subnets belong to this
      network and therefore this project.

* Add missing operation wait on forwarding rule creation.

* Some Terraform output improvements:
    * Permit no-ACL files in GCS buckets in Terraform output.
    * Enable marginally better cross-resource reference in Terraform outputs
    * Add project to network + subnetwork literals in Terraform output.
    * Add terraform output to backend services and health checks.

Testing:
  * Add mocks for backend services and health checks.
  * Add minimal integration test - copied from gce_private and ilb added.
  * Add update cluster goldens.

Co-authored-by: Travis Reid <travis_reid@apple.com>
2022-04-25 13:31:47 -07:00
..
aws Remove bazel files from vendor 2022-04-12 13:29:03 +02:00
gce Enable internal load balancers when running on GCP 2022-04-25 13:31:47 -07:00
openstack Remove bazel files from vendor 2022-04-12 13:29:03 +02:00
README.md Add an initial structure for openstack cloudmock 2020-08-05 23:13:34 -05:00

README.md

cloudmock is a mock implementation of the CloudProvider APIs.

The goal is to let us test code that interacts with the CloudProvider APIs, without creating actual resources.

While no resources are created, we maintain state so that (for example) after you call CreateVpc, a subsequent call to DescribeVpcs will return that VPC. The end-goal is that we simulate the CloudProvider APIs accurately, so that we can quickly run test-cases that might otherwise require a lot of time or money to run with real resources.

In future, we can also do fault injection etc.

Note: The APIs are very large, and most of them are not implemented. Functions that are implemented may not be implemented correctly, particularly around edge-cases (such as error handling).

Typical AWS use: c := &mockec2.MockEC2{}. MockEC2 implements the EC2 API interface ec2iface.EC2API, so can be used where otherwise you would use a real EC2 client.