Shipa in your organization/team can help usher in the next generation of engineering efficiency and developer experience. Though like any platform, there requires some wiring to bind Shipa to infrastructure. In this modern example, can plug into your IaC strategy in creating Kubernetes clusters then auto-wires all of the needed Shipa pieces at cluster creation time. We are excited to announce that we are building out a repository for these auto-wire frameworks on GitHub which you can take needed pieces and integrate into your automation processes. This example supercharges the initial Terraform 101 integration with Shipa Cloud.
First Look at the Auto-wiring
Focusing on the Terraform Auto-wiring, the current rendition of the example ingests a kubeconfig file. There is scaffolding in the repository to pick up a newly created EKS cluster for example if you leverage Amazon EKS.
The Terraform integration can be easily modified to pick up on a created Kubernetes cluster then wire all of the needed Shipa objects and finally can deploy an image in the example. The auto-wire is simple to run.
Run the Auto-wire
Running the auto-wire is simple, even if you have not used Terraform heavily in the past. In that use case, you can just pass in your kubeconfig [looks for the default location ~/.kube/config] and the auto-wire will pick up on the current context. To run you will need to download/clone the repository to your machine. You will need access to the Shipa CLI which will allow you to get a Shipa Token for the integration.
curl -s https://storage.googleapis.com/shipa-client/install.sh | bash shipa target add shipa-cloud target.shipa.cloud --set-current shipa login shipa version
Next, grab your Authentication Token via the Shipa CLI and save it for wiring into a variable file for Terraform.
shipa token show
Your Shipa Token can be wired into <local_repo>/terraform/evn/autowire.tfvars
The Terraform pieces will require Terraform installed on your machine and access to the files in the repository. Can download/clone the repository and make any modifications as needed. Can pass a tfvars file to Terraform with certain details.
The auto-wire assumes you will be running in Shipa Cloud. You can modify the Shipa Provider host URL to another destination if you have Shipa on-prem.
Now you are ready to run the example
With a few commands, you are ready to install the Terraform Providers and run the auto-wire. Assuming you have a Kubernetes cluster created by Terraform before or your current kubeconfig is pointed to an active Kubernetes cluster.
terraform init terraform plan -var-file="env/autowire.tfvars" terraform apply -var-file="env/autowire.tfvars"
Type in yes and you are off to the races.
Can validate in the Shipa UI that your items are being created.
Shipa -> Clusters
Shipa -> Frameworks
If deploying the sample WordPress image in your Shipa Application, can navigate to the WordPress URL and see your live image.
Shipa -> Applications -> tf-created-app -> Endpoint
Clicking on the Endpoint.
Just like that, you have gone from Kubernetes cluster inception to a deployed application with Shipa.
If you would like to clean up, can run the Terraform Destroy command.
terraform destroy -var-file="env/autowire.tfvars"
Looking to the Future
We are excited about the art of the possible with IaC and Shipa together. We will be putting together a few more examples using different IaCs. In our recent webinar, we showed off a Crossplane version of this. If you want to contribute, feel free to cut a Pull Request with your ideas/providers. We would love to hear what you are doing, feel free to engage us on Slack.