<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Armory Docs – Install Armory Continuous Deployment for Spinnaker</title><link>/continuous-deployment/installation/</link><description>Recent content in Install Armory Continuous Deployment for Spinnaker on Armory Docs</description><generator>Hugo -- gohugo.io</generator><atom:link href="/continuous-deployment/installation/index.xml" rel="self" type="application/rss+xml"/><item><title>Continuous-Deployment: System Requirements for Armory Continuous Deployment</title><link>/continuous-deployment/installation/system-requirements/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/continuous-deployment/installation/system-requirements/</guid><description>
&lt;p>The requirements described on this page are meant as a minimum starting point for installing Armory Continuous Deployment. You may need to increase the resources based on the number of applications, pipelines, and executions. Work with your IT organization to make sure that the requirements are met.&lt;/p>
&lt;h2 id="installation-targets">Installation targets&lt;/h2>
&lt;blockquote>
&lt;p>This section defines where you can run Armory Continuous Deployment, not where you can deploy your applications. For information about where you can deploy applications to, see the &lt;a href="/continuous-deployment/feature-status/continuous-deployment-matrix/#deployment-targets">Product Compatibility Matrix&lt;/a>.&lt;/p>
&lt;/blockquote>
&lt;p>Armory Continuous Deployment can be installed on any &lt;a href="https://www.cncf.io/certification/software-conformance/">certified Kubernetes cluster&lt;/a> that meets the following version requirements:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Minimum version&lt;/strong>: 1.20&lt;/li>
&lt;li>&lt;strong>Maximum version&lt;/strong>: 1.25&lt;/li>
&lt;/ul>
&lt;!-- track EKS versions -->
&lt;p>You install Armory Continuous Deployment using the &lt;a href="/continuous-deployment/installation/armory-operator/">Armory Operator&lt;/a> (a Kubernetes operator), which has the following requirements:&lt;/p>
&lt;ul>
&lt;li>You must be able to apply Kubernetes manifests and CRDs, either directly using &lt;code>kubectl&lt;/code> commands from your machine or another method.&lt;/li>
&lt;li>By default, the Operator pulls images from a public registry. If you cannot pull images from public registries, see &lt;a href="/continuous-deployment/installation/guide/air-gapped/ag-operator/"}>Air-Gapped with the Armory Operator&lt;/a>.&lt;/li>
&lt;/ul>
&lt;p>Note that Armory does not produce marketplace specific images that can be used by different certified Kubernetes offerings.&lt;/p>
&lt;p>The Kubernetes cluster itself must meet the following requirements:&lt;/p>
&lt;ul>
&lt;li>You have administrator rights to install the Custom Resource Definition (CRD) for the Armory Operator.&lt;/li>
&lt;li>If you are managing your own Kubernetes cluster (&lt;strong>not&lt;/strong> EKS), be sure:
&lt;ul>
&lt;li>You have enabled admission controllers in Kubernetes (&lt;code>-enable-admission-plugins&lt;/code>).&lt;/li>
&lt;li>You have &lt;code>ValidatingAdmissionWebhook&lt;/code> enabled in &lt;code>kube-apiserver&lt;/code>. Alternatively, you can pass the &lt;code>--disable-admission-controller&lt;/code> parameter to the to the &lt;code>deployment.yaml&lt;/code> file that deploys the Operator.&lt;/li>
&lt;/ul>
&lt;/li>
&lt;/ul>
&lt;p>If you do not have a cluster already, consult guides for &lt;a href="https://docs.aws.amazon.com/eks/latest/userguide/getting-started-console.html">Amazon EKS&lt;/a>or the equivalent for your Kubernetes provider.&lt;/p>
&lt;h2 id="browsers">Browsers&lt;/h2>
&lt;p>The UI for Armory Continuous Deployment works best on Firefox or Chromium-based browsers.&lt;/p>
&lt;h2 id="external-storage">External storage&lt;/h2>
&lt;p>Armory Continuous Deployment requires external storage for storing metadata and history.&lt;/p>
&lt;h3 id="bucket-storage">Bucket storage&lt;/h3>
&lt;p>You need an S3-compatible object store, such as an S3 bucket or Minio, for persisting your application settings and pipelines. The account you use to install and run Armory Continuous Deployment needs read/write access to the buckets.&lt;/p>
&lt;h3 id="rdbms-sql">RDBMS (SQL)&lt;/h3>
&lt;p>Depending on the service, Armory Continuous Deployment also uses either Redis, MySQL, or Postgres as a backing store. The following table lists the supported database and the service:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Database&lt;/th>
&lt;th>DB version&lt;/th>
&lt;th>Armory&lt;/th>
&lt;th>Services&lt;/th>
&lt;th>Note&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>Redis&lt;/td>
&lt;td>All supported versions&lt;/td>
&lt;td>All supported versions&lt;/td>
&lt;td>All Armory Continuous Deployment services that require a backing store&lt;/td>
&lt;td>The DB versions refer to external Redis instances. Supported only for services that still require Redis for a feature, such as Gate sessions. Redis is not supported as a core persistent storage engine. Although Armory Continuous Deployment deploys internal Redis instances, do not use these instances for production deployments. Armory recommends only using them for testing and proof-of-concept deployments. &lt;br/>&lt;br/> For AWS ElastiCache for Redis, the instance type should minimally be set to &lt;code>cache.m5.large&lt;/code>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>MySQL&lt;/td>
&lt;td>5.7; AWS Aurora&lt;/td>
&lt;td>All supported versions&lt;/td>
&lt;td>Clouddriver, Front50, Orca&lt;/td>
&lt;td>For AWS RDS, the instance type should minimally be set to &lt;code>db.r5&lt;/code>.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>PostgreSQL&lt;/td>
&lt;td>10&amp;#43;&lt;/td>
&lt;td>2.24.0 or later&lt;/td>
&lt;td>Clouddriver&lt;/td>
&lt;td>For AWS RDS, the instance type should minimally be set to &lt;code>db.r5&lt;/code>.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>Armory recommends using MySQL or PostgreSQL as the backing store when possible for production instances of Armory Continuous Deployment. For other services, use an external Redis instance for production instances of Armory Continuous Deployment.&lt;/p>
&lt;h2 id="hardware-requirements">Hardware requirements&lt;/h2>
&lt;p>Armory recommends a minimum of 3 nodes that match the following profile:&lt;/p>
&lt;ul>
&lt;li>&lt;strong>CPUS&lt;/strong>: 8&lt;/li>
&lt;li>&lt;strong>Memory (GiB)&lt;/strong>: 32&lt;/li>
&lt;/ul>
&lt;h2 id="kubectl">kubectl&lt;/h2>
&lt;p>To install and manage Armory Continuous Deployment, Armory recommends using the &lt;a href="/continuous-deployment/installation/armory-operator/op-config-kustomize/">Armory Operator with Kustomize&lt;/a> and tailoring the Kustomize files to meet the requirements of your instance and environment. This installation method supports the following versions of &lt;code>kubectl&lt;/code>: 1.16 to 1.19.&lt;/p>
&lt;!-- this is cause of the go-yaml bug: https://github.com/kubernetes-sigs/kustomize/issues/3605 -->
&lt;p>It is possible to use the Operator to &lt;a href="/continuous-deployment/installation/armory-operator/op-config-manifest/">install Armory Continuous Deployment without the Kustomize repo&lt;/a>. In that case, any actively maintained version of &lt;code>kubectl&lt;/code> is supported.&lt;/p>
&lt;h2 id="networking">Networking&lt;/h2>
&lt;p>Pods in your Kubernetes cluster must be able to communicate with each other without restrictions.&lt;/p>
&lt;p>Additionally, the ports for the API gateway (the Gate service) and the UI (the Deck service) need to be exposed. All interactions with Armory Continuous Deployment go through these two services.&lt;/p>
&lt;p>&lt;strong>Gate ports&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>8084&lt;/li>
&lt;li>8085 when secured by x509&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Deck port&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>9000&lt;/li>
&lt;/ul>
&lt;h2 id="security">Security&lt;/h2>
&lt;p>Armory Continuous Deployment needs to be able to assume roles in the accounts that it deploys applications to. For example, Armory Continuous Deployment needs the &lt;code>sts:AssumeRole&lt;/code> permission for AWS. Elevated access (equivalent to the level of &lt;strong>PowerUser&lt;/strong> access in AWS) is helpful so that Armory Continuous Deployment can cache data from deployment target accounts and deploy without errors.&lt;/p>
&lt;p>In addition to the security requirements that Armory Continuous Deployment needs to run, Armory recommends securing your installation by using a &lt;a href="/continuous-deployment/feature-status/continuous-deployment-matrix/#secret-stores">secret store&lt;/a> for sensitive values in your configs as well as configuring &lt;a href="/continuous-deployment/feature-status/continuous-deployment-matrix/#authentication">authentication&lt;/a> and &lt;a href="/continuous-deployment/feature-status/continuous-deployment-matrix/#authorization">authorization&lt;/a>.&lt;/p></description></item><item><title>Continuous-Deployment: Deploy Armory Continuous Deployment or Spinnaker Using Kubernetes Operators</title><link>/continuous-deployment/installation/armory-operator/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/continuous-deployment/installation/armory-operator/</guid><description>
&lt;blockquote>
&lt;p>Armory Continuous Deployment (Armory CD) requires a license. For more information, contact &lt;a href="https://www.armory.io/contact-us/">Armory&lt;/a>.&lt;/p>
&lt;/blockquote>
&lt;div class="alert alert-warning" role="alert">
&lt;h4 class="alert-heading">Important&lt;/h4>
&lt;a href="/continuous-deployment/installation/armory-operator/">Armory Operator&lt;/a> has been deprecated and will is considered EOL. Please migrate to the &lt;a href="/continuous-deployment/spinnaker-user-guides/armory-operator-to-kustomize-migration/">Kustomize&lt;/a> method of deployment.
&lt;/div>
&lt;h2 id="what-are-kubernetes-operators-for-spinnaker">What are Kubernetes Operators for Spinnaker?&lt;/h2>
&lt;p>From the Kubernetes &lt;a href="https://kubernetes.io/docs/concepts/extend-kubernetes/operator/">Operator pattern docs&lt;/a>: &amp;ldquo;Operators are software extensions to Kubernetes that make use of custom resources to manage applications and their components.&amp;rdquo; 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 &lt;a href="https://github.com/armory/spinnaker-operator">Spinnaker Operator for Kubernetes&lt;/a> are custom Kubernetes Operators that you can install in your cluster.&lt;/p>
&lt;ul>
&lt;li>The &lt;strong>Armory Operator&lt;/strong> &lt;img src="/images/proprietary.svg" alt="Proprietary"> extends the Spinnaker Operator&amp;rsquo;s features by providing the ability to configure Armory Continuous Deployment&amp;rsquo;s &lt;a href="/continuous-deployment/#what-is-armory-continuous-deployment">features&lt;/a>, such as Pipelines-as-Code and Policy Engine. The Armory Operator and Armory Continuous Deployment are closed source and not free to use.&lt;/li>
&lt;li>The &lt;strong>Spinnaker Operator&lt;/strong> is a Kubernetes controller for deploying and managing Spinnaker. The Spinnaker Operator and Spinnaker are both open source and free to use.&lt;/li>
&lt;/ul>
&lt;h2 id="advantages-to-using-a-kubernetes-operator-for-armory-continuous-deployment-deployment">Advantages to using a Kubernetes Operator for Armory Continuous Deployment deployment&lt;/h2>
&lt;ul>
&lt;li>Use a Kubernetes manifest to deploy and manage Armory Continuous Deployment or Spinnaker.&lt;/li>
&lt;li>Use &lt;code>kubectl&lt;/code> to deploy, manage, and access Armory Continuous Deployment or Spinnaker like you would with any other app deployed on Kubernetes.&lt;/li>
&lt;li>Store and reference configuration secrets in one of the &lt;a href="/continuous-deployment/armory-admin/secrets/">supported secrets engines&lt;/a>.&lt;/li>
&lt;li>Store your configuration in &lt;code>git&lt;/code> for an auditable and reversible GitOps workflow.&lt;/li>
&lt;/ul>
&lt;h2 id="how-the-armory-operator-and-the-spinnaker-operator-work">How the Armory Operator and the Spinnaker Operator work&lt;/h2>
&lt;p>The Operator is a custom controller of Kubernetes kind &lt;a href="https://kubernetes.io/docs/concepts/workloads/controllers/deployment/">&lt;code>Deployment&lt;/code>&lt;/a>. The Operator works with a &lt;a href="https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/">Kubernetes custom resource&lt;/a> named &lt;code>SpinnakerService&lt;/code> to deploy and manage Armory Continuous Deployment or Spinnaker in your cluster.&lt;/p>
&lt;h3 id="spinnakerservice-custom-resource-definition">&lt;code>SpinnakerService&lt;/code> Custom Resource Definition&lt;/h3>
&lt;p>The &lt;code>SpinnakerService&lt;/code> CRD declares the resource&amp;rsquo;s names, the scope of the resource, and the structural schema of the &lt;code>spinnakerservice.yml&lt;/code> &lt;a href="https://kubernetes.io/docs/concepts/cluster-administration/manage-deployment/">Kubernetes manifest&lt;/a> that contains your Spinnaker configuration:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">apiVersion&lt;/span>: apiextensions.k8s.io/v1beta1
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">kind&lt;/span>: CustomResourceDefinition
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">metadata&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">name&lt;/span>: spinnakerservices.spinnaker.io
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">spec&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">group&lt;/span>: spinnaker.io
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">names&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">kind&lt;/span>: SpinnakerService
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">listKind&lt;/span>: SpinnakerServiceList
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">plural&lt;/span>: spinnakerservices
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">shortNames&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> - spinsvc
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">singular&lt;/span>: spinnakerservice
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">scope&lt;/span>: Namespaced
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>You can view the entire &lt;code>SpinnakerService&lt;/code> CRD in the public &lt;code>spinnaker-operator&lt;/code> &lt;a href="https://github.com/armory/spinnaker-operator/blob/master/deploy/crds/spinnaker.io_spinnakerservices_crd.yaml">repo&lt;/a>.&lt;/p>
&lt;h3 id="spinnnaker-manifest">Spinnnaker manifest&lt;/h3>
&lt;p>You have the following options for creating the Spinnaker manifest:&lt;/p>
&lt;ul>
&lt;li>Create the manifest YAML file yourself using an &lt;a href="https://github.com/armory/spinnaker-operator/blob/master/deploy/spinnaker/basic/spinnakerservice.yml">example&lt;/a> &lt;code>spinnakerservice.yml&lt;/code> as a starting point.&lt;/li>
&lt;li>Create a collection of patch files that &lt;a href="https://kustomize.io/">Kustomize&lt;/a> uses to overwrite sections of the &lt;code>spinnakerservice.yml&lt;/code> manifest. Kustomize is part of &lt;code>kubectl&lt;/code>.&lt;/li>
&lt;/ul>
&lt;p>Regardless of the option you use to configure Spinnaker, the &lt;code>spinnakerservice.yml&lt;/code> manifest specifies that the Kubernetes kind is &lt;code>SpinnakerService&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">apiVersion&lt;/span>: spinnaker.io/v1alpha2
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">kind&lt;/span>: SpinnakerService
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">metadata&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">name&lt;/span>: spinnaker
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>You can view the rest of the basic file in the &lt;code>spinnaker-operator&lt;/code> &lt;a href="https://github.com/armory/spinnaker-operator/blob/master/deploy/spinnaker/basic/spinnakerservice.yml">repo&lt;/a>.&lt;/p>
&lt;p>At the highest level, when you use &lt;code>kubectl&lt;/code> to apply the manifest:&lt;/p>
&lt;ol>
&lt;li>&lt;code>kubectl&lt;/code> parses &lt;code>spinnakerservice.yml&lt;/code> and sees that the kind is &lt;code>SpinnakerService&lt;/code>.&lt;/li>
&lt;li>&lt;code>kubectl&lt;/code> delegates manifest validation and deployment to the Operator.&lt;/li>
&lt;li>The Operator validates the manifest and uses Halyard to deploy Spinnaker.&lt;/li>
&lt;/ol>
&lt;p>The Armory Operator&amp;rsquo;s &lt;code>SpinnakerService&lt;/code> CRD and Armory Continuous Deployment &lt;code>SpinnakerService.yml&lt;/code> are slightly different than their open source counterparts so that &lt;code>kubectl&lt;/code> knows to delegate to the Armory Operator.&lt;/p>
&lt;h2 id="comparison-of-the-spinnaker-operator-and-the-armory-operator">Comparison of the Spinnaker Operator and the Armory Operator&lt;/h2>
&lt;p>Use the Armory Operator if you want to deploy Armory Continuous Deployment and use its proprietary features.&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align:left">&lt;/th>
&lt;th style="text-align:center">Armory Operator &lt;img src="/images/proprietary.svg" alt="Proprietary">&lt;/th>
&lt;th style="text-align:center">Spinnaker Operator&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align:left">Deploy open source Spinnaker&lt;/td>
&lt;td style="text-align:center">❌&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Deploy Armory Continuous Deployment for Spinnaker &lt;img src="/images/proprietary.svg" alt="Proprietary">&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;td style="text-align:center">❌&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Use &lt;code>kubectl&lt;/code> to manage deployment&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Validate your configuration before deployment&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Use a single &lt;code>spinnakerservice.yml&lt;/code> configuration file&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Use Kustomize patches instead of a single configuration file&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Store Spinnaker secrets in Kubernetes secrets&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Store your configuration in &lt;code>git&lt;/code> for an easy GitOps workflow&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Define Kubernetes accounts in &lt;code>SpinnakerAccount&lt;/code> objects&lt;br> and store &lt;code>kubeconfig&lt;/code> inline, in Kubernetes secrets, in s3, or GCS&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Expose via &lt;code>LoadBalancer&lt;/code> or &lt;code>Ingress&lt;/code> &lt;img src="/images/proprietary.svg" alt="Proprietary">&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;td style="text-align:center">❌&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Deploy in an Istio-controlled cluster &lt;img src="/images/proprietary.svg" alt="Proprietary">&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;td style="text-align:center">❌&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Configure diagnostics &lt;img src="/images/proprietary.svg" alt="Proprietary">&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;td style="text-align:center">❌&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Configure Pipelines-as-Code &lt;img src="/images/proprietary.svg" alt="Proprietary">&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;td style="text-align:center">❌&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Configure Policy Engine &lt;img src="/images/proprietary.svg" alt="Proprietary">&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;td style="text-align:center">❌&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Configure Terraform integration &lt;img src="/images/proprietary.svg" alt="Proprietary">&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;td style="text-align:center">❌&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Configure Vault secrets &lt;img src="/images/proprietary.svg" alt="Proprietary">&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;td style="text-align:center">❌&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Configure artifacts&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Configure canary&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Configure continuous integration providers&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Configure deployment environment&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Configure features&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Configure metric stores&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Configure notifications&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Configure persistent storage&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Configure plugins&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Configure pub sub&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Configure repository artifactory&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Configure security&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Configure stats&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="text-align:left">Configure webhooks&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;td style="text-align:center">✅&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="whats-next">What&amp;rsquo;s next&lt;/h2>
&lt;ul>
&lt;li>&lt;a href="/continuous-deployment/installation/system-requirements/"}>System Requirements for Armory Continuous Deployment&lt;/a>&lt;/li>
&lt;li>&lt;a href="/continuous-deployment/installation/armory-operator/op-quickstart/"}>Install Operator and Deploy Armory Continuous Deployment Quickstart&lt;/a>&lt;/li>
&lt;/ul></description></item><item><title>Continuous-Deployment: Install Spinnaker on Lightweight Kubernetes using Minnaker</title><link>/continuous-deployment/installation/minnaker/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/continuous-deployment/installation/minnaker/</guid><description>
&lt;h2 id="install-spinnaker-in-10-minutes-using-minnaker">Install Spinnaker in 10 minutes using Minnaker&lt;/h2>
&lt;p>Armory Minnaker is an easy to use installation script that leverages the power of &lt;strong>Kubernetes&lt;/strong> with the simplicity of a &lt;em>Virtual Machine&lt;/em>. Minnaker makes it easy to install Spinnaker and lets you scale your deployment into a medium to large deployment down the road.&lt;/p>
&lt;p>The Kubernetes environment that gets installed on your behalf is based on &lt;a href="https://k3s.io/">Rancher&amp;rsquo;s K3s&lt;/a>. You do not need to know how to set up Kubernetes. Minnaker takes care of the hard parts for you, allowing you to get Spinnaker up and running in under 10 minutes.&lt;/p>
&lt;p>Watch &lt;em>Spinnaker in 10 minutes or less with Project Minnaker&lt;/em> for a demo of using Minnaker to install Spinnaker on cloud platforms as well as VMWare Fusion running locally.&lt;/p>
&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/jg8vJEzcuAA" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>&lt;/iframe>
&lt;h3 id="prerequisites-for-running-minnaker">Prerequisites for running Minnaker&lt;/h3>
&lt;p>Your VM should have 4 vCPUs, 16G of memory and 30G of HDD space.&lt;/p>
&lt;h3 id="getting-started">Getting started&lt;/h3>
&lt;p>Check out the &lt;a href="https://github.com/armory/minnaker">GitHub project&lt;/a> for more information. After you install Minnaker, use the &lt;a href="/continuous-deployment/installation/guide/quickstart/armory-spinnaker-quickstart-1/">AWS Quick Start&lt;/a> to learn how to configure Armory to deploy to AWS.&lt;/p></description></item><item><title>Continuous-Deployment: Guides for Installing Armory Continuous Deployment for Spinnaker</title><link>/continuous-deployment/installation/guide/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/continuous-deployment/installation/guide/</guid><description>
&lt;p>Once installed, Armory Continuous Deployment can deploy to supported providers through Clouddriver regardless of where it is installed.&lt;/p>
&lt;p>See &lt;a href="/continuous-deployment/installation/guide/air-gapped/"}>Install Armory Continuous Deployment for Spinnaker in Air-Gapped Environments&lt;/a> for additional steps you have to take if you have an air-gapped environment.&lt;/p></description></item><item><title>Continuous-Deployment: Instance Registration</title><link>/continuous-deployment/installation/ae-instance-reg/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/continuous-deployment/installation/ae-instance-reg/</guid><description>
&lt;!--Several shortlinks point to this page from Deck:
- go.armory.io/UIdocs-deploy-reg points to the top of this page
- go.armory.io/UIdocs-deploy-reg-troubleshooting points to Troubleshooting
- go.armory.io/UIdocs-deploy-reg-manual-id points to the Operator fails to generate an instance ID section
-->
&lt;h2 id="register-your-instance">Register your instance&lt;/h2>
&lt;ol>
&lt;li>
&lt;p>Navigate to the URL provided by Armory and follow the instructions to create an account.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Make note of the following information:&lt;/p>
&lt;ul>
&lt;li>Instance ID&lt;/li>
&lt;li>Client ID&lt;/li>
&lt;li>Secret&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>This is the only time you are shown the secret value. Store it somewhere safe.&lt;/strong>&lt;/p>
&lt;/li>
&lt;/ol>
&lt;h2 id="apply-the-registration-information">Apply the registration information&lt;/h2>
&lt;p>In your Operator manifest, configure the following parameters:&lt;/p>
&lt;ul>
&lt;li>&lt;code>spec.spinnakerConfig.profiles.spinnaker.armory.cloud.iam.tokenIssueUrl&lt;/code>: set this value to &lt;code>https://auth.cloud.armory.io/oauth/token&lt;/code>.&lt;/li>
&lt;li>&lt;code>spec.spinnakerConfig.profiles.spinnaker.armory.cloud.iam.clientID&lt;/code>: set this value to &lt;strong>Client ID&lt;/strong> that you received from &lt;a href="#register-your-instance">Register your instance&lt;/a>.&lt;/li>
&lt;li>&lt;code>spec.spinnakerConfig.profiles.spinnaker.”armory.cloud”.iam.clientSecret&lt;/code>: set this value to the &lt;strong>Secret&lt;/strong> that you received from &lt;a href="#register-your-instance">Register your instance&lt;/a>.&lt;/li>
&lt;/ul>
&lt;p>Once you apply the registration information to your instance, your Armory Continuous Deployment instance is registered with Armory.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-yaml" data-lang="yaml">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#ff79c6">spec&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">spinnakerConfig&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">profiles&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">gate&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">armory.cloud&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">enabled&lt;/span>: &lt;span style="color:#ff79c6">true&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">iam&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">tokenIssuerUrl&lt;/span>: https://auth.cloud.armory.io/oauth/token
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">clientId&lt;/span>: &amp;lt;clientId&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">clientSecret&lt;/span>: &amp;lt;clientSecret&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">api&lt;/span>:
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#ff79c6">baseUrl&lt;/span>: https://api.cloud.armory.io
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Save the file and apply the manifest. This redeploys Armory Continuous Deployment.&lt;/p>
&lt;h2 id="troubleshooting">Troubleshooting&lt;/h2>
&lt;h3 id="registration-fails">Registration fails&lt;/h3>
&lt;p>This issue can occur if Operator failed to generate a UUID for your Armory Continuous Deployment instance. You can resolve this issue with one of the following actions:&lt;/p>
&lt;ul>
&lt;li>Deploy Armory Continuous Deployment with a supported Operator version that corresponds to your Armory Continuous Deployment version.&lt;/li>
&lt;li>Manually apply a registration ID.&lt;/li>
&lt;/ul>
&lt;p>To manually apply a registration ID, perform the following steps:&lt;/p>
&lt;ol>
&lt;li>
&lt;p>In your Operator manifest (&lt;code>spinnakerservice.yml&lt;/code> by default), check if there is a value for &lt;code>spec.spinnakerConfig.config.armory.diagnostics.uuid&lt;/code>.&lt;/p>
&lt;p>If there is a value, use that value for the next step.&lt;/p>
&lt;p>If there is no value, generate a UUID and add it to &lt;code>spec.spinnakerConfig.config.armory.diagnostics.uuid&lt;/code> field.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Add the UUID to the &lt;code>spec.spinnakerConfig.profiles.spinnaker.armory.registrationId&lt;/code> field.&lt;/p>
&lt;/li>
&lt;li>
&lt;p>Save the file and deploy Armory Continuous Deployment.&lt;/p>
&lt;/li>
&lt;/ol>
&lt;p>If you generated your own UUID, contact Armory Support and provide your UUID so that it can be associated with your organization. This helps with troubleshooting when you contact Support.&lt;/p></description></item></channel></rss>