Deploying containerized applications on Amazon Elastic
Kubernetes Service (EKS) is a common practice. To further
streamline this process, many organizations turn to Spinnaker,
a continuous delivery platform known for its flexibility and
feature-rich ecosystem. Spinnaker is a continuous delivery
platform, originally developed by Netflix, for releasing
software changes rapidly and reliably. Spinnaker makes it
easier for developers to focus on writing code without having
to worry about the underlying cloud infrastructure. It
integrates seamlessly with Jenkins and other popular build
tools.
In this blog we will discuss on two primary options When it
comes to managing Spinnaker on EKS: Spinnaker Operator and
Halyard. Choosing the right one depends on your specific needs
and preferences. Let's dive into a detailed comparison,
highlighting the advantages and disadvantages of each method
A. Halyard
1. What is Halyard and Why Was it Built?
Halyard is the traditional way to manage Spinnaker. It is
a command-line tool that allows you to install, configure,
and upgrade Spinnaker. Halyard was built with the
following goals in mind:
-
Flexibility: Halyard can be used to
deploy Spinnaker on a variety of platforms, including
bare metal, virtual machines, and Kubernetes.
-
Extensibility:
Halyard allows you to extend Spinnaker with custom
plugins and services.
-
Simplicity:
Halyard is a relatively simple tool to learn and use
2. What Are the Main Benefits of Halyard?
- Mature and well-tested: Halyard has been around for many years and is a
mature
and well-tested tool.
- Highly configurable:Halyard gives you a lot of control over Spinnaker's
configuration.
- Supports multiple platforms: Halyard can be used to deploy Spinnaker on a
variety
of platforms.
3. What Are the Main Disadvantages of Halyard?
- Manual configuration: Halyard requires you to manually configure Spinnaker,
which
can be time-consuming and error-prone.
- Not declarative: Halyard is not a declarative tool, which means that your
configuration files can become complex and difficult to manage.
- Difficult to update: Updating Spinnaker with Halyard can be a complex process
that requires careful planning and execution
4. Key Use Cases:
- Deploying Spinnaker on various platforms (bare metal, virtual machines, Kubernetes)
- Customizing Spinnaker extensively with plugins and services
- Maintaining fine-grained control over Spinnaker's configuration
5. Problems it Solves:
- Facilitates Spinnaker installation, configuration, and management across diverse environments
- Provides flexibility for customization and integration with other tools/li>
- Enables granular control over Spinnaker's settings for specific requirements
6. How Does it Work?
Halyard takes a manual, command-line approach to managing Spinnaker. Here's the basic workflow:
1. Configuration Files: You define Spinnaker's configuration using YAML files
like
clouddriver.yml and gate.yml.
2. Validation and Generation: Halyard validates your configuration files against
known settings and generates additional configuration files based on your choices.
Deployment Options: You can choose to deploy Spinnaker:
- Locally: Halyard generates deployment scripts for your local machine.
- Remotely: Halyard uploads configuration files and scripts to your target
environment (e.g., Google Cloud Storage) and triggers deployment actions.
4. Management: You update Spinnaker by modifying configuration files and
re-running
deployment commands.
B. Spinnaker Operator
1. What is the Spinnaker Operator and What Problems Does it
Solve?
The Spinnaker Operator is a Kubernetes operator that can be used to deploy and
manage
Spinnaker on EKS. The Spinnaker Operator was built to address the limitations of Halyard by
providing
a:
- Declarative: The Spinnaker Operator uses Kubernetes Custom Resource
Definitions
(CRDs) to define Spinnaker's desired state. This makes it easier to manage and update
Spinnaker's
configuration.
- Automated: The Spinnaker Operator can automatically install, configure, and
upgrade Spinnaker. This makes it less time-consuming and error-prone than Halyard.
- Integrated with EKS: The Spinnaker Operator is tightly integrated with EKS,
which makes it easier to manage Spinnaker alongside your other Kubernetes applications.
2. What Are the Main Benefits of the Spinnaker Operator?
- Declarative configuration: The Spinnaker Operator makes it easy to manage and
update Spinnaker's configuration.
- Automated operations: The Spinnaker Operator can automatically install,
configure, and upgrade Spinnaker.
- Integration with EKS: The Spinnaker Operator is tightly integrated with EKS,
which makes it easier to manage Spinnaker alongside your other Kubernetes applications.
3. What Are the Main Disadvantages of the Spinnaker Operator?
- Newer and less mature: The Spinnaker Operator is a newer tool than Halyard
and is
less mature.
- Limited platform support: The Spinnaker Operator only supports deployment on
EKS.
- Less flexibility: T·The Spinnaker Operator gives you less control over
Spinnaker's configuration than Halyard.
4. Key Use Cases:
- Streamlining Spinnaker deployment and management on EKS
- Leveraging declarative configuration for easier maintenance and updates
- Automating Spinnaker operations for reduced manual effort and errors
- Integrating Spinnaker seamlessly with the Kubernetes ecosystem
5. Problems it Solves:
- Simplifies Spinnaker configuration and updates using Kubernetes CRDs
- Automates Spinnaker installation, configuration, and upgrades
- Enhances consistency and reliability through automated operations
- Fosters tighter integration between Spinnaker and EKS for a cohesive experience
6. How Does it Work?
The Spinnaker Operator leverages Kubernetes capabilities to manage Spinnaker
declaratively
- Custom Resource Definitions (CRDs): You define Spinnaker's desired state
using
YAML files representing Spinnaker CRDs.
- Kubernetes Reconciliation: The Spinnaker Operator continuously monitors the
CRDs
and compares them to the actual Spinnaker state on EKS.
- Automatic Reconciliation: If there's a difference, the Operator applies the
desired state by deploying or adjusting Spinnaker resources within the Kubernetes cluster.
- Management: You update Spinnaker by modifying the CRD YAML files, triggering
an
automatic reconciliation process.
Which one is Better for Which Scenario?
Deciding between Halyard and the Spinnaker Operator boils down to prioritizing
flexibility and control versus automation and ease of use. Here's a deeper dive into specific
scenarios to help you choose:
Halyard is the better choice for you if:
- You're a multi-cloud environment: Halyard supports deploying Spinnaker on
various
platforms, not just EKS, giving you flexibility across diverse infrastructure.
- Customization is paramount: Halyard offers granular control over Spinnaker's
configuration. If you have specific needs outside the standard feature set, Halyard gives you
the
freedom to fine-tune it.
- You're comfortable with manual configuration: Halyard requires manual
configuration, which can be advantageous for experienced users who prefer detailed control and
understanding of the inner workings.
However, consider the downsides of Halyard:
- You're solely focused on EKS: The Operator seamlessly integrates with EKS, making deployment,
configuration, and updates smooth and streamlined.
- Automation is your mantra: The Operator automates most tasks, reducing manual configuration
overhead and promoting consistency.
- Declarative configuration simplifies management: Defining Spinnaker's desired state through
CRDs
makes maintaining complex setups easier and more collaborative.
However, be aware of the Operator's limitations:
-
Limited platform support currently restricts it to EKS deployments, offering less flexibility.
- It's a relatively new tool compared to Halyard, with potentially less community support and
documentation.
- Less granular control over configuration might not be ideal for highly customized setups.
Conclusion:
Ultimately, the best choice depends on your specific needs and priorities.
- For flexibility, control, and multi-cloud deployments, Halyard remains a reliable option.
- If ease of use, automation, and tight EKS integration are crucial, the Spinnaker Operator is a
compelling choice.