Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs(install): add install Spinnaker page #1872

Open
wants to merge 18 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions content/en/continuous-deployment/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ description: >

### Kubernetes Operators for installation

The [Armory Operator]({{< ref "armory-operator" >}}) is a Kubernetes Operator that helps you configure, deploy, and update Armory Continuous Deployment on Kubernetes clusters.
The Armory Operator is a Kubernetes Operator that enables you to [install]({{< ref "continuous-deployment/installation/armory-operator/install-armorycd" >}}) and manage Armory Continuous Deployment on Kubernetes clusters.

The open source [Spinnaker Operator](https://github.com/armory/spinnaker-operator) provides features to deploy and manage open source Spinnaker.
Like the Armory Operator, the open source Spinnaker Operator is a Kubernetes Operator that enables you to [install]({{< ref "continuous-deployment/installation/armory-operator/install-spinnaker" >}}) and manage open source Spinnaker.

### Plugins for Spinnaker and Armory CD

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ For information about TLS, see {{< linkWithTitle "tls-configure" >}}.

## Configuring Java services

Add the following to each Java service under `profiles` in the [SpinnakerService's profiles]({{< ref "op-config-manifest#specspinnakerconfigprofiles" >}}):
Add the following to each Java service under `profiles` in the [SpinnakerService's profiles]({{< ref "continuous-deployment/installation/armory-operator/op-manifest-reference#specspinnakerconfigprofiles" >}}):

```yaml
# Only needed for "server" role
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ Golang services need a X509 certificate (PEM format) and a private key for #1 as

## Configuring Java services

Add the following to each Java service profile under `profiles` in the [SpinnakerService's profiles]({{< ref "op-config-manifest#specspinnakerconfigprofiles" >}}):
Add the following to each Java service profile under `profiles` in the [SpinnakerService's profiles]({{< ref "continuous-deployment/installation/armory-operator/op-manifest-reference#specspinnakerconfigprofiles" >}}):

```yaml
# Only needed for "server" role
Expand Down
27 changes: 15 additions & 12 deletions content/en/continuous-deployment/installation/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,30 +9,33 @@ no_list: true

{{< include "armory-license.md" >}}

## Methods for installing Armory Continuous Deployment

There are several methods to install Armory Continuous Deployment or open source Spinnaker:
## Installation tools

| Method | Environment | Description | Benefits |
|------------------------------------|-----------------------|----------------------------------------------------------------------|-----------------------------------------------------------------|
| [Armory Operator]({{< ref "armory-operator" >}}) | Kubernetes Operator that enables you to configure and manage Armory Continuous Deployment declaratively | GitOps friendly and ready for production use |
| [Minnaker]({{< ref "minnaker" >}}) | MacOS, Linux, Windows | Spin up a whole environment on top of Rancher K3s to deploy Armory Continuous Deployment or Spinnaker | This is ideal if you do not have a Kubernetes cluster available and want to try Armory Continuous Deployment |
| [Operator]({{< ref "armory-operator" >}}) | Kubernetes | An open source Kubernetes Operator that installs open source Spinnaker | GitOps friendly and ready for production use |
| [Spinnaker Operator]({{< ref "armory-operator" >}}) | Kubernetes | An open source Kubernetes Operator that installs open source Spinnaker | GitOps friendly and ready for production use |


All the preceding methods share similar configurations, and you can migrate between them if your needs change.
The preceding tools share similar configurations.

> Armory Continuous Deployment does not generate default usernames and passwords for user accounts for any service. Manage these by configuring authentication and authorization for Armory Continuous Deployment.

## Guides
## Armory CD install guides

Based on your environment, use one of the following guides to help you install Armory Continuous Deployment:

| Guide | Environment | Description |
|-----------------------------------------------------------|------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|
| [Armory Operator Quickstart]({{< ref "op-quickstart" >}}) | Kubernetes, Armory Operator | Install the Armory Operator, create a Kubernetes manifest for Armory Continuous Deployment, and then deploy and manage using the Armory Operator. |
| [Air Gapped]({{< ref "air-gapped" >}}) | Air-gapped environments that use the Armory Operator | Learn how to host your own Bill of Materials for deploying Armory Continuous Deployment in an air-gapped environment. |
| [AWS Marketplace]({{< ref "aws-container-marketplace" >}}) | AWS, Armory Operator | Use the Armory Operator from the AWS Container Marketplace to deploy Armory Continuous Deployment in your Amazon Kubernetes (EKS) cluster. |
| {{< linkWithLinkTitle "continuous-deployment/installation/armory-operator/install-armorycd.md" >}} | Kubernetes, Armory Operator | Install the Armory Operator, create a Kubernetes manifest for Armory Continuous Deployment, and then deploy and manage using the Armory Operator. |
| {{< linkWithLinkTitle "continuous-deployment/installation/guide/air-gapped/_index.md" >}} | Air-gapped environments that use the Armory Operator | Learn how to host your own Bill of Materials for deploying Armory Continuous Deployment in an air-gapped environment. |
| {{< linkWithLinkTitle "continuous-deployment/installation/guide/aws-container-marketplace.md" >}} | AWS, Armory Operator | Use the Armory Operator from the AWS Container Marketplace to deploy Armory Continuous Deployment in your Amazon Kubernetes (EKS) cluster. |
| [Armory Continuous Deployment on AWS workshop](https://armory.awsworkshop.io/) | AWS | Use AWS CloudFormation to create infrastructure and deploy Armory Continuous Deployment from the AWS Marketplace. |
| [Install in AWS]({{< ref "install-on-aws" >}}) | AWS EKS | Use Armory Operator to deploy Armory Continuous Deployment in an AWS EKS cluster. |
| [Install on AWS EC2 with Operator]({{< ref "operator-k3s" >}}) | AWS EC2, Armory Operator | Installation steps for using Armory Operator to install Armory CD in a Lightweight Kubernetes (K3s) instance for a Proof of Concept.
| {{< linkWithLinkTitle "continuous-deployment/installation/guide/install-on-aws.md" >}} | AWS EKS | Use the Armory Operator to deploy Armory Continuous Deployment in an AWS EKS cluster. |

## Spinnaker install guides

| Guide | Environment | Description |
|-----------------------------------------------------------|------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|
| {{< linkWithLinkTitle "continuous-deployment/installation/armory-operator/install-spinnaker.md" >}} | Kubernetes, Spinnaker Operator, Kustomize | Install the Spinnaker Operator and use it with the `spinnaker-kustomize-patches` repo to deploy Spinnaker to your Kubernetes cluster. |

Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,16 @@ aliases:
- /docs/installation/operator/
---

{{< include "armory-license.md" >}}

## What are Kubernetes Operators for Spinnaker?

From the Kubernetes [Operator pattern docs](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/): "Operators are software extensions to Kubernetes that make use of custom resources to manage applications and their components." In other words, an Operator is a Kubernetes controller that manages a specific application using a custom resource. Both the proprietary Armory Operator and the open source [Spinnaker Operator for Kubernetes](https://github.com/armory/spinnaker-operator) are custom Kubernetes Operators that you can install in your cluster.

* The **Armory Operator** ![Proprietary](/images/proprietary.svg) extends the Spinnaker Operator's features by providing the ability to configure Armory Continuous Deployment's [features]({{< ref "continuous-deployment#what-is-armory-continuous-deployment">}}), such as Pipelines-as-Code and Policy Engine. The Armory Operator and Armory Continuous Deployment are closed source and not free to use.
* The **Spinnaker Operator** is a Kubernetes controller for deploying and managing Spinnaker. The Spinnaker Operator and Spinnaker are both open source and free to use.
* The **Armory Operator** ![Proprietary](/images/proprietary.svg) extends the Spinnaker Operator's features by providing the ability to configure Armory Continuous Deployment's [features]({{< ref "continuous-deployment#what-is-armory-continuous-deployment">}}). The Armory Operator and Armory Continuous Deployment are closed source and not free to use.

{{< include "armory-license.md" >}}

## Advantages to using a Kubernetes Operator for Armory Continuous Deployment deployment
## Advantages to using a Kubernetes Operator for deployment

* Use a Kubernetes manifest to deploy and manage Armory Continuous Deployment or Spinnaker.
* Use `kubectl` to deploy, manage, and access Armory Continuous Deployment or Spinnaker like you would with any other app deployed on Kubernetes.
Expand All @@ -29,6 +29,8 @@ From the Kubernetes [Operator pattern docs](https://kubernetes.io/docs/concepts/

The Operator is a custom controller of Kubernetes kind [`Deployment`](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/). The Operator works with a [Kubernetes custom resource](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/) named `SpinnakerService` to deploy and manage Armory Continuous Deployment or Spinnaker in your cluster.

The Operator uses Halyard to deploy Armory CD or Spinnaker. See [Custom Halyard Configuration]({{< ref "op-advanced-config.md" >}}) if you need to modify Halyard.

### `SpinnakerService` Custom Resource Definition

The `SpinnakerService` CRD declares the resource's names, the scope of the resource, and the structural schema of the `spinnakerservice.yml` [Kubernetes manifest](https://kubernetes.io/docs/concepts/cluster-administration/manage-deployment/) that contains your Spinnaker configuration:
Expand All @@ -52,12 +54,12 @@ spec:

You can view the entire `SpinnakerService` CRD in the public `spinnaker-operator` [repo](https://github.com/armory/spinnaker-operator/blob/master/deploy/crds/spinnaker.io_spinnakerservices_crd.yaml).

### Spinnnaker manifest
### Spinnaker manifest

You have the following options for creating the Spinnaker manifest:

* Create the manifest YAML file yourself using an [example](https://github.com/armory/spinnaker-operator/blob/master/deploy/spinnaker/basic/spinnakerservice.yml) `spinnakerservice.yml` as a starting point.
* Create a collection of patch files that [Kustomize](https://kustomize.io/) uses to overwrite sections of the `spinnakerservice.yml` manifest. Kustomize is part of `kubectl`.
* Create a collection of patch files that [Kustomize](https://kustomize.io/) uses to overwrite sections of the `spinnakerservice.yml` manifest. Kustomize is part of `kubectl`. Armory maintains a public `spinnaker-kustomize-patches` [repo](https://github.com/armory/spinnaker-kustomize-patches).
* Create the manifest YAML file yourself using an [example](https://github.com/armory/spinnaker-operator/blob/master/deploy/spinnaker/complete/spinnakerservice.yml) `spinnakerservice.yml` as a starting point.

Regardless of the option you use to configure Spinnaker, the `spinnakerservice.yml` manifest specifies that the Kubernetes kind is `SpinnakerService`:

Expand All @@ -68,8 +70,6 @@ metadata:
name: spinnaker
```

You can view the rest of the basic file in the `spinnaker-operator` [repo](https://github.com/armory/spinnaker-operator/blob/master/deploy/spinnaker/basic/spinnakerservice.yml).

At the highest level, when you use `kubectl` to apply the manifest:

1. `kubectl` parses `spinnakerservice.yml` and sees that the kind is `SpinnakerService`.
Expand All @@ -78,12 +78,29 @@ At the highest level, when you use `kubectl` to apply the manifest:

The Armory Operator's `SpinnakerService` CRD and Armory Continuous Deployment `SpinnakerService.yml` are slightly different than their open source counterparts so that `kubectl` knows to delegate to the Armory Operator.

## Comparison of the Spinnaker Operator and the Armory Operator
## Comparison of the Armory Operator and the Spinnaker Operator

Use the Armory Operator if you want to deploy Armory Continuous Deployment and use its proprietary features.

{{% include "armory-operator/op-feature-compare.md" %}}

## Operator installation modes

Each Operator has `basic` and `cluster` installation modes. The option you use depends on which namespace you want to deploy Armory CD or Spinnaker to.


| |Basic Mode | Cluster Mode |
|:-------------------------------------------------------- |:------------------:|:---------------:|
| <b>Permissions scoped to single namespace</b><br>Must deploy Armory CD or Spinnaker in the same namespace as the Operator<br>Suitable for a Proof of Concept (POC) | &#9989; | &#10060; |
| Can deploy Armory CD or Spinnaker to multiple namespaces<br>(requires Kubernetes ClusterRole) | &#10060; | &#9989; |
| Configure Armory CD or Spinnaker using Kustomize patches | &#9989; | &#9989; |
| Configure Armory CD or Spinnaker using a single manifest file | &#9989; | &#9989; |
| Perform pre-flight checks to prevent misconfiguration | &#10060; | &#9989; |


## {{% heading "nextSteps" %}}

* {{< linkWithTitle "continuous-deployment/installation/system-requirements.md" >}}
* {{< linkWithTitle "op-quickstart.md" >}}
* {{< linkWithTitle "continuous-deployment/installation/armory-operator/install-armorycd.md" >}}
* {{< linkWithTitle "continuous-deployment/installation/armory-operator/install-spinnaker.md" >}}

Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ description: >
Migrate your Armory Continuous Deployment or Spinnaker installation from Halyard to the Operator.
---

{{< include "armory-operator/os-operator-blurb.md">}}

## {{% heading "prereq" %}}

{{< include "armory-operator/os-operator-blurb.md">}}

You need to decide if you want to overwrite the current Halyard deployment of Armory Continuous Deployment or create a test instance.

If you choose to overwrite your current instance, you need to take downtime to clean up the namespace that the Halyard-deployed Armory Continuous Deployment is in so Operator can deploy Armory Continuous Deployment without collision.
Expand All @@ -20,11 +20,17 @@ The second method is preferred as it allows you to test everything before decomm

## Migrate to Operator

This guide assumes you want to deploy Armory Continuous Deployment using a single `SpinnakerSerivce.yml` manifest file rather than Kustomize patches.
This guide assumes you want to deploy Armory Continuous Deployment using a single `SpinnakerService.yml` manifest file rather than Kustomize patches.

The migration process from Halyard to Operator can be completed in 7 steps:

1. [Install the Operator]({{< ref "op-quickstart" >}}).
1. Deploy the Armory Operator.

Decide which [Armory Operator release](https://github.com/armory/spinnaker-operator/releases) you need based on the compatibility matrix.

{{< include "armory-operator/operator-compat-matrix.md" >}}

{{< include "armory-operator/armory-op-install-cluster.md" >}}
1. Export configuration.

Copy the desired profile's content from the `config` file
Expand All @@ -49,7 +55,7 @@ The migration process from Halyard to Operator can be completed in 7 steps:

Note: `config` is under `~/.hal`

You can see more details in [`spec.spinnakerConfig.config`]({{< ref "op-config-manifest#specspinnakerconfig" >}}).
You can see more details in [`spec.spinnakerConfig.config`]({{< ref "op-manifest-reference#specspinnakerconfig" >}}).

1. Export Armory Continuous Deployment profiles.

Expand All @@ -76,7 +82,7 @@ The migration process from Halyard to Operator can be completed in 7 steps:
<CONTENT>
```

You can see more details in [`spec.spinnakerConfig.profiles`]({{< ref "op-config-manifest#specspinnakerconfigprofiles" >}}).
You can see more details in [`spec.spinnakerConfig.profiles`]({{< ref "op-manifest-reference#specspinnakerconfigprofiles" >}}).

1. Export Armory Continuous Deployment settings.

Expand All @@ -103,7 +109,7 @@ The migration process from Halyard to Operator can be completed in 7 steps:
<CONTENT>
```

You can see more details in [spec.spinnakerConfig.service-settings]({{< ref "op-config-manifest#specspinnakerconfigservice-settings" >}}).
You can see more details in [spec.spinnakerConfig.service-settings]({{< ref "op-manifest-reference#specspinnakerconfigservice-settings" >}}).

1. Export local file references.

Expand Down Expand Up @@ -171,7 +177,7 @@ The migration process from Halyard to Operator can be completed in 7 steps:
primaryAccount: prod
```

You can see more details in [spec.spinnakerConfig.files]({{< ref "op-config-manifest#specspinnakerconfigfiles" >}}).
You can see more details in [spec.spinnakerConfig.files]({{< ref "op-manifest-reference#specspinnakerconfigfiles" >}}).

1. Export Packer template files (if used).

Expand Down Expand Up @@ -205,9 +211,9 @@ The migration process from Halyard to Operator can be completed in 7 steps:
<CONTENT>
```

You can see more details in [`spec.spinnakerConfig.files`]({{< ref "op-config-manifest#specspinnakerconfigfiles" >}}).
You can see more details in [`spec.spinnakerConfig.files`]({{< ref "op-manifest-reference#specspinnakerconfigfiles" >}}).

1. Validate your Armory configuration if you plan to run the Operator in cluster mode:
1. Validate your Armory CD configuration if you plan to run the Operator in cluster mode:

```bash
kubectl -n <namespace> apply -f <spinnaker service manifest> --dry-run=server
Expand Down
Loading