Spinnaker is an open source, multicloud, cloud native continuous delivery platform. It’s fully supported and integrated with Oracle Cloud Infrastructure (OCI). Spinnaker integration with OCI allows customers to follow continuous integration-continuous delivery (CICD) best practices to deploy applications on OCI repeatedly in an automated manner. Customers can use Spinnaker to deploy their applications running on an Oracle Cloud Infrastructure Container Engine for Kubernetes cluster and Compute instances.
Recently, we formed a special interest group (SIG) for supporting Spinnaker on OCI. The SIG works with the developer community to enable the automated deployment of applications onto the platform and improve the Oracle Cloud driver.
Using Spinnaker with Oracle Cloud driver, you can define your release pipelines to deploy your applications on Oracle Cloud in an automated manner. By automating deployments, you can achieve better repeatability and faster delivery of your applications.
Deploy Spinnaker on Container Engine for Kubernetes
Spinnaker runs on Kubernetes, and you can deploy it on Container Engine for Kubernetes. You can then configure Spinnaker to define automated release pipelines to deploy applications to any other target Kubernetes cluster or Compute instances on OCI.
-
Install Halyard, Spinnaker’s configuration management client locally. Halyard runs on Debian, Ubuntu, macOS, or Docker.
-
Install kubectl on the machine running Halyard.
-
Enable the Container Engine for Kubernetes provider using Halyard using these instructions. For the driver to connect to your Kubernetes Cluster, you need to create a service account and register it in your kubeconfig file.
-
Spinnaker’s runtime metadata persist in an Oracle Cloud Object Store bucket. Create an account for an Identity and Access Management (IAM) user and enable the Oracle provider in Spinnaker.
-
Create a spinnaker bucket in Object Storage, register it in Halyard, and set the storage type to oracle.
-
Install Spinnaker on Oracle Container Engine for Kubernetes with the distributed installation methodology. Use the account name of the Container Engine for Kubernetes provider that you previously registered.
hal config deploy edit --type distributed --account-name $K8S-ACCOUNT -
Deploy Spinnaker. Once deployed, you can connect to Spinnaker using the following code:
hal deploy connect -
Once the port forward is set up, you can access the Spinnaker UI from http://localhost:9000.
Deploy application on Oracle Cloud Container Engine for Kubernetes
To run your Kubernetes application on Container Engine for Kubernetes, you need to package it as a Docker image and publish to a registry. OCI also hosts a Docker Registry service, so you can configure your CI tooling to publish tested and verified images to Oracle Cloud Registry and deploy the application to Container Engine for Kubernetes using Spinnaker.
The Spinnaker Codelab outlines the process.
-
Define an application in Spinnaker and specify the Kubernetes provider for the target cluster. The target cluster can differ from the one that’s running Spinnaker. You can enable multiple Kubernetes providers for each cluster in your Halyard configuration.
-
Create a load balancer by specifying a service YAML of type load balancer.
-
Define a pipeline and add a stage of type “Deploy (Manifest)” to deploy the application onto Container Engine for Kubernetes. The manifest can be defined as inline text or as an artifact coming from your source repository. Refer to this document on how to configure an artifact for a Kubernetes descriptor.
-
Access your application through the service load balancer’s ingress IP address.
Deploy application on Oracle Cloud Infrastructure Compute
The Spinnaker Codelab outlines the process of running your application on a group of Oracle Cloud Infrastructure Compute instances.
-
Define an application in Spinnaker and specify “oracle” as the provider.
-
Set up a VCN to be used by the load balancer from the Oracle Cloud Console.
-
Create a load balancer from the Spinnaker UI. The Oracle Cloud driver provisions the load balancer on Oracle Cloud.
The LoadBalancer Create dialog currently shows an error that’s benign and can be ignored. It’s described in this GitHub issue. It has been fixed and is available in the next release of Spinnaker.
If you don’t specify a value for the stack, such as “test,” and detail, such as “lb,” the load balancer creation fails.
-
Define a pipeline in Spinnaker to spin a custom OS image and deploy it onto Compute instances.
-
Add a bake stage that installs a specific package onto a base OS image. Configure the bakery in Halyard. Spinnaker’s bake functionality is based on Packer. This deployment uses an Oracle Cloud builder for Packer.
You can either create your own custom image or use images that Oracle provides as the base. Each image that Oracle supplies has its own OCID.
Add a deploy stage that provisions a server group or cluster of Compute instances with the baked image from the previous step. The servers are wired as backends for the load balancer, defined earlier.
-
Delete the prior set of servers running the older version.
Conclusion
We look forward to getting your feedback. Connect with us on Slack or join our monthly meetings to engage with the Oracle Cloud SIG team.
