No description
  • Go 84.4%
  • Makefile 13%
  • Dockerfile 2.6%
Find a file
2025-06-25 16:39:36 -06:00
.github Create jira-pr.yml 2023-07-28 14:23:43 -07:00
api/v1alpha1 Add implementation for TFCManagedMachinePool controller 2022-11-14 12:50:19 -05:00
config [COMPLIANCE] Add Copyright and License Headers 2023-02-01 18:02:16 +00:00
controllers [COMPLIANCE] Add Copyright and License Headers 2023-02-01 18:02:16 +00:00
docs Add Managed Clusters docs page 2022-11-14 23:11:47 -05:00
examples/gke [COMPLIANCE] Add Copyright and License Headers 2023-02-01 18:02:16 +00:00
hack Generate project scaffolding 2022-10-24 00:24:51 -04:00
META.d Remove duplicate summary file 2023-09-26 13:20:41 -04:00
terraform [COMPLIANCE] Add Copyright and License Headers 2023-02-01 18:02:16 +00:00
.copywrite.hcl Add .copywrite.hcl to repo 2023-10-03 11:17:15 +01:00
.dockerignore Generate project scaffolding 2022-10-24 00:24:51 -04:00
.gitignore Add terraform state to .gitignore 2022-11-14 17:17:30 -05:00
CODEOWNERS Add CODEOWNERS file 2022-11-15 16:20:22 -05:00
Dockerfile [COMPLIANCE] Add Copyright and License Headers 2023-02-01 18:02:16 +00:00
go.mod Bump golang.org/x/net from 0.0.0-20220722155237-a158d28d115b to 0.17.0 (#11) 2023-10-19 11:07:15 +00:00
go.sum Bump golang.org/x/net from 0.0.0-20220722155237-a158d28d115b to 0.17.0 (#11) 2023-10-19 11:07:15 +00:00
LICENSE Add LICENSE file 2022-11-15 16:22:01 -05:00
main.go Add implementation for TFCManagedMachinePool controller 2022-11-14 12:50:19 -05:00
Makefile Generate project scaffolding 2022-10-24 00:24:51 -04:00
PROJECT Add scaffolding for TFCManagedMachinePool 2022-11-14 12:50:16 -05:00
README.md Archive Repository (#16) 2025-06-25 16:39:36 -06:00

Please note: This Terraform provider is archived, per our provider archiving process. What does this mean?

  1. The code repository and all commit history will still be available.
  2. Existing released binaries will remain available on the releases site.
  3. Issues and pull requests are not being monitored.
  4. New releases will not be published.

If anyone from the community or an interested third party is willing to maintain it, they can fork the repository and publish it to the Terraform Registry. If you are interested in maintaining this provider, please reach out to the Terraform Provider Development Program at terraform-provider-dev@hashicorp.com.

Terraform logo

Kubernetes Cluster API Provider for Terraform Cloud

Warning

Please note that this is a technical preview and is for experimental purposes only. Please open issues generously if you have feedback.

Kubernetes-native declarative infrastructure using Terraform Cloud.

What is the Cluster API Provider for Terraform Cloud?

The Cluster API project brings declarative Kubernetes-style APIs to cluster creation, configuration and management. This provider allows you to create Terraform Modules to implement Cluster API's contracts and run them in Terraform Cloud to provision the infrastructure using Kubernetes as your source of truth.

Supported Cluster API contracts

The provider currently implements the contracts that allow the infrastructure for managed clusters and machine pools to be provisioned.

Getting Started

Youll need a Kubernetes cluster to run against. You can use kind or minikube to get a local cluster up and running.

Running on the cluster

  1. Install CRDs into the cluster
make install
  1. Build and push your image to the location specified by IMG:
make docker-build docker-push IMG=<some-registry>/cluster-api-provider-terraform-cloud:tag
  1. Deploy the controller to the cluster with the image specified by IMG:
make deploy IMG=<some-registry>/cluster-api-provider-terraform-cloud:tag

Running locally

NOTE: When run locally controller will automatically use the current context in your kubeconfig file (i.e. whatever cluster kubectl cluster-info shows).

For development purposes you can run the controller locally by running:

make run 

Uninstall CRDs

To delete the CRDs from the cluster:

make uninstall

Undeploy controller

Remove the controller to the cluster:

make undeploy

How it works

This project follows the Kubernetes Operator pattern

It uses Controllers which provides a reconcile function responsible for synchronizing resources until a desired state is reached.

In the case of this provider, the controllers will trigger runs inside Terraform Cloud using Terraform Modules configured in the API resource. The controller will monitor the Terraform Cloud run until is it finished and collect the outputs, using them to fulfill the Cluster API contract of that particular resource.

Modifying the API definitions

If you are editing the API definitions, generate the manifests such as CRs or CRDs using:

make manifests

NOTE: Run make --help for more information on all potential make targets

More information can be found via the Kubebuilder Documentation and Cluster API Documentation

Contributing

This project is highly experimental and we welcome contributions in the form of opening issues and pull requests. You can also come and talk to us in #terraform-providers on the Kubernetes Slack.

Contributors should refer to our Code of Conduct

Security Reporting

If you think you've found a security vulnerability, we'd love to hear from you.

Follow the instructions in SECURITY.md to make a report.

Experimental Status

By using the software in this repository (the "Software"), you acknowledge that: (1) the Software is still in development, may change, and has not been released as a commercial product by HashiCorp and is not currently supported in any way by HashiCorp; (2) the Software is provided on an "as-is" basis, and may include bugs, errors, or other issues; (3) the Software is NOT INTENDED FOR PRODUCTION USE, use of the Software may result in unexpected results, loss of data, or other unexpected results, and HashiCorp disclaims any and all liability resulting from use of the Software; and (4) HashiCorp reserves all rights to make all decisions about the features, functionality and commercial release (or non-release) of the Software, at any time and without any obligation or liability whatsoever.