├── .chglog ├── CHANGELOG.tpl.md └── config.yml ├── .github └── workflows │ └── release.yml ├── .gitignore ├── CODEOWNERS ├── LICENSE ├── README.md ├── core ├── clouddriver │ ├── base │ │ ├── deployment.yml │ │ ├── kustomization.yml │ │ └── service.yml │ ├── clouddriver-caching │ │ └── kustomization.yml │ ├── clouddriver-ro-deck │ │ ├── kustomization.yml │ │ └── profile.yml │ ├── clouddriver-ro │ │ ├── kustomization.yml │ │ └── profile.yml │ ├── clouddriver-rw │ │ ├── kustomization.yml │ │ └── profile.yml │ └── kustomization.yml ├── deck │ ├── base │ │ ├── deployment.yml │ │ ├── kustomization.yml │ │ └── service.yml │ └── kustomization.yml ├── echo │ ├── base │ │ ├── deployment.yml │ │ ├── kustomization.yml │ │ └── service.yml │ ├── echo-scheduler │ │ ├── kustomization.yml │ │ └── profile.yml │ ├── echo-worker │ │ ├── kustomization.yml │ │ └── profile.yml │ └── kustomization.yml ├── front50 │ ├── base │ │ ├── deployment.yml │ │ ├── kustomization.yml │ │ └── service.yml │ └── kustomization.yml ├── gate │ ├── base │ │ ├── deployment.yml │ │ ├── kustomization.yml │ │ └── service.yml │ └── kustomization.yml ├── igor │ ├── base │ │ ├── deployment.yml │ │ ├── kustomization.yml │ │ └── service.yml │ └── kustomization.yml ├── kustomization.yml ├── orca │ ├── base │ │ ├── deployment.yml │ │ ├── kustomization.yml │ │ └── service.yml │ └── kustomization.yml ├── rosco │ ├── base │ │ ├── deployment.yml │ │ ├── kustomization.yml │ │ └── service.yml │ └── kustomization.yml └── service-discovery │ ├── kustomization.yml │ └── spinnaker.yml ├── fiat ├── base │ ├── deployment.yml │ ├── kustomization.yml │ └── service.yml └── kustomization.yml ├── kayenta ├── base │ ├── deployment.yml │ ├── kustomization.yml │ └── service.yml └── kustomization.yml ├── keel ├── base │ ├── deployment.yml │ ├── kustomization.yml │ └── service.yml └── kustomization.yml └── monitoring ├── kustomization.yml ├── patches.yml ├── patches ├── clouddriver.yml ├── echo.yml ├── fiat.yml ├── front50.yml ├── gate.yml ├── igor.yml ├── kayenta.yml ├── orca.yml ├── rosco.yml └── shared │ ├── sidecar.yml │ └── volumes.yml └── registry ├── clouddriver.yml ├── echo.yml ├── fiat.yml ├── front50.yml ├── gate.yml ├── igor.yml ├── kayenta.yml ├── orca.yml └── rosco.yml /.chglog/CHANGELOG.tpl.md: -------------------------------------------------------------------------------- 1 | {{ range .Versions }} 2 | ## Changelog 3 | 4 | {{ range .CommitGroups -}} 5 | {{ range .Commits -}} 6 | - [`{{ .Hash.Short }}`](https://github.com/spinnaker/kustomization-base/commit/{{ .Hash.Long }}): {{ .Header }}{{ if .Merge }}({{ .Merge.Ref }}){{ end }} 7 | {{ end -}} 8 | {{ end -}} 9 | {{ end -}} 10 | -------------------------------------------------------------------------------- /.chglog/config.yml: -------------------------------------------------------------------------------- 1 | style: github 2 | template: CHANGELOG.tpl.md 3 | info: 4 | title: Changelog 5 | repository_url: https://github.com/spinnaker/kustomization-base 6 | options: 7 | header: 8 | # Only include commits whose message comply with the convention: "(): " 9 | pattern: "^(\\w*)(?:\\(([\\w\\$\\.\\-\\*\\s]*)\\))?\\:\\s(.*)$" 10 | pattern_maps: 11 | - Type 12 | - Scope 13 | - Subject 14 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | on: 4 | push: 5 | tags: 6 | - 'v*.*.*' 7 | 8 | jobs: 9 | release: 10 | name: Create Release 11 | runs-on: ubuntu-latest 12 | steps: 13 | - name: Checkout code 14 | uses: actions/checkout@v2 15 | with: 16 | fetch-depth: 0 17 | 18 | - name: Generate release note 19 | id: release_note 20 | run: | 21 | wget -O git-chglog https://github.com/git-chglog/git-chglog/releases/download/0.9.1/git-chglog_linux_amd64 22 | sudo mv git-chglog /usr/local/bin 23 | sudo chmod +x /usr/local/bin/git-chglog 24 | version=${{ github.ref }} 25 | version=${version#refs/tags/} 26 | content=$(git-chglog "${version}") 27 | content="${content//'%'/'%25'}" 28 | content="${content//$'\n'/'%0A'}" 29 | content="${content//$'\r'/'%0D'}" 30 | echo "::set-output name=release_note::${content}" 31 | 32 | - name: Create Release 33 | uses: actions/create-release@v1 34 | env: 35 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 36 | with: 37 | tag_name: ${{ github.ref }} 38 | release_name: ${{ github.ref }} 39 | body: ${{ steps.release_note.outputs.release_note }} 40 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | -------------------------------------------------------------------------------- /CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @ncknt @german-muzquiz 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # kustomization-base 2 | 3 | This repo contains a base kustomization that can be used to install Spinnaker to 4 | a Kubernetes cluster. Please see the 5 | [RFC](https://github.com/spinnaker/governance/blob/master/rfc/halyard-lite.md) 6 | for an overview of the new Kubernetes-native installation pathway that is under 7 | development. 8 | 9 | This repo is under active development and is not ready for production (or even 10 | development) use, but stay tuned for updates! 11 | 12 | ## Installing Spinnaker 13 | 14 | ### Prerequisites 15 | 16 | Before you start, you will need: 17 | 18 | - A Kubernetes cluster and `kubectl` configured to communicate with that cluster 19 | - The [kustomize](https://github.com/kubernetes-sigs/kustomize/releases/latest) 20 | binary installed on your machine. Note that the version of _kustomize_ bundled 21 | with `kubectl` is out of date and will not work with these kustomizations. 22 | - The [kleat](https://github.com/spinnaker/kleat) binary installed on your 23 | machine 24 | 25 | ### Instructions 26 | 27 | Fork the [spinnaker-config](https://github.com/spinnaker/spinnaker-config) 28 | repository, and clone this fork to your local machine. This repository contains 29 | a template kustomization that you will configure to deploy Spinnaker. 30 | 31 | Change to the `base` directory; all further commands will assume that you are in 32 | this directory. 33 | 34 | At this point, you can generate the YAML needed to deploy Spinnaker by running 35 | `kustomize build .`. As we have not configured any of the services, many would 36 | fail on startup (particularly those that depend on some configured persistence 37 | store), so let's add some configuration. 38 | 39 | #### Create a `spinnaker` namespace 40 | 41 | Create a new namespace called `spinnaker` into which each microservice will be 42 | deployed: 43 | 44 | ``` 45 | kubectl create namespace spinnaker 46 | ``` 47 | 48 | If you would like to use a different namespace, you will need to update the 49 | namespace in your root `kustomization.yml` and each microservice's `baseUrl` in 50 | a fork of this repository's `service-discovery/spinnaker.yml`. 51 | 52 | #### Configure Redis 53 | 54 | A number of Spinnaker services require a Redis connection; this install pathway 55 | requires there to be a service `redis` in the `spinnaker` namespace. 56 | 57 | In the most common case, you will have an external redis; the template repo has 58 | a `Service` configured with an `ExternalName`; you can update this to point to 59 | the DNS name of your redis service. 60 | 61 | For more complex cases, please refer to the following 62 | [blog post](https://cloud.google.com/blog/products/gcp/kubernetes-best-practices-mapping-external-services) 63 | on best practices for mapping external services. In general, the only 64 | requirement of your solution is that you have a service named `redis` in the 65 | `spinnaker` namespace that routes to a valid `redis` backend. 66 | 67 | Regardless of the approach you choose, add all the relevant redis Kubernetes 68 | objects to your customization via `kustomize edit add resource redis/*.yml`. 69 | 70 | #### Add any secret files 71 | 72 | The `secrets` folder is intended to hold any secret files that are referenced by 73 | your config files. The files in this folder will be mounted in `/var/secrets` in 74 | each pod. 75 | 76 | To add a secret, put it in the `secrets/` folder and add it to the `files` field 77 | of the `spinnaker-secrets` entry in the `kustomization.yaml`. In this example, 78 | we'll add a _kubeconfig_ file called `k8s-kubeconfig`: 79 | 80 | ```shell script 81 | cp secrets/k8s-kubeconfig 82 | ``` 83 | 84 | and update the secret in the `kustomization.yaml` file as: 85 | 86 | ```yaml 87 | - behavior: merge 88 | name: spinnaker-secrets 89 | files: 90 | - secrets/k8s-kubeconfig 91 | ``` 92 | 93 | #### Generate Spinnaker config files 94 | 95 | This installation pathway expects the config files for your services to be in the 96 | `kleat` directory. As the name suggests, the expectation is that these files 97 | will be generated by `kleat` and written to this directory. 98 | 99 | `kleat` takes as input a 100 | [halconfig](https://github.com/spinnaker/kleat/blob/master/docs/docs.md). This 101 | file is in general compatible with the file consumed by Halyard; if you are 102 | migrating from Halyard, please read the minor changes you will need to make to 103 | your file in the [kleat readme](https://github.com/spinnaker/kleat). 104 | 105 | Unlike Halyard, `kleat` allows you to specify only the fields that you'd like to 106 | configure. In this case, we will assume a very simple config: 107 | 108 | ```yaml 109 | providers: 110 | kubernetes: 111 | enabled: true 112 | accounts: 113 | - name: k8s 114 | kubeconfigFile: /var/secrets/k8s-kubeconfig 115 | primaryAccount: k8s 116 | ``` 117 | 118 | Note that the `kubeconfigFile` argument here points to a file relative to 119 | `/var/secrets`. This is important, as the `kleat` config requires that all file 120 | references be relative to where they will be mounted in the running container 121 | (rather than where they happen to be on the machine running kleat). 122 | 123 | Save this file as `halconfig.yml` to the current directory, Invoke `kleat generate` to 124 | consume the input `halconfig.yml` and output the service configs to the `kleat/` 125 | directory: 126 | 127 | ```shell script 128 | kleat generate halconfig.yml kleat/ 129 | ``` 130 | 131 | This will generate service configs in the `kleat/` directory, replacing the 132 | empty configs that were there before. The `kustomization.yaml` file is already 133 | configured to mount these configs in the correct location in each microservice. 134 | For example, it has an entry for the clouddriver config as: 135 | 136 | ```yaml 137 | - behavior: merge 138 | files: 139 | - kleat/clouddriver.yml 140 | name: clouddriver-config 141 | ``` 142 | 143 | #### Enable optional services 144 | 145 | The optional Spinnaker services this workflow currently supports are Fiat, Kayenta and Keel. 146 | 147 | In the following kustomization files, we recommend including `?ref=${KUSTOMIZATION_BASE_REF}` to pin kustomization-base to a specific version. 148 | For further details, see [(Optional) Use a specific version of kustomization](#optional-use-a-specific-version-of-kustomization). 149 | 150 | To enable Kayenta, ensure that `canary.enabled` is set to `true` in your hal 151 | config, and then ensure the Kayenta kustomization is included in the `resources` 152 | block of your `kustomization.yml`: 153 | 154 | ``` 155 | resources: 156 | - github.com/spinnaker/kustomization-base/core?ref=${KUSTOMIZATION_BASE_REF} 157 | - github.com/spinnaker/kustomization-base/kayenta?ref=${KUSTOMIZATION_BASE_REF} 158 | ``` 159 | 160 | To enable Fiat, ensure that `security.authz` is set to `true` in your hal 161 | config, and then ensure the Fiat kustomization is included in the `resources` 162 | block of your `kustomization.yml`: 163 | 164 | ``` 165 | resources: 166 | - github.com/spinnaker/kustomization-base/core?ref=${KUSTOMIZATION_BASE_REF} 167 | - github.com/spinnaker/kustomization-base/fiat?ref=${KUSTOMIZATION_BASE_REF} 168 | ``` 169 | 170 | Since the default 171 | [service discovery file](/core/service-discovery/spinnaker.yml) defaults 172 | Fiat to disabled, you will need to configure a service discovery overrides file 173 | in your fork of spinnaker-config with the following block: 174 | 175 | ``` 176 | services: 177 | fiat: 178 | enabled: true 179 | ``` 180 | 181 | To enable Keel, ensure that `managedDelivery.enabled` is set to `true` in your hal 182 | config, and then ensure the Keel kustomization is included in the `resources` 183 | block of your `kustomization.yml`: 184 | 185 | ``` 186 | resources: 187 | - github.com/spinnaker/kustomization-base/core 188 | - github.com/spinnaker/kustomization-base/keel 189 | ``` 190 | 191 | #### Set the Spinnaker version 192 | 193 | By default, this base kustomization deploys the `master-latest-validated` 194 | version of each microservice, which is most recent version that has passed our 195 | integration tests. To deploy a different version, you'll need to override the 196 | version of each microservice in the `images` block in the `kustomization.yml` 197 | file. 198 | 199 | To deploy a specific version of Spinnaker, override each image's tag with 200 | `spinnaker-{version-number}`. For example, to deploy Spinnaker 1.21.0, override 201 | the tag for each microservice to be `spinnaker-1.21.0`: 202 | 203 | ```yaml 204 | images: 205 | - name: us-docker.pkg.dev/spinnaker-community/docker/clouddriver 206 | newTag: spinnaker-1.21.0 207 | - name: us-docker.pkg.dev/spinnaker-community/docker/deck 208 | newTag: spinnaker-1.21.0 209 | # ... 210 | ``` 211 | 212 | This workflow has only been tested with Spinnaker >= 1.21.0. Deploying an 213 | earlier version of Spinnaker using this workflow may not work as expected, 214 | since you may have been relying on Halyard to supply configuration defaults that 215 | were only added as microservice-level defaults after the 1.20 release branches 216 | were cut. 217 | 218 | #### Replace Gate's readiness probe 219 | 220 | If you have not enabled SSL for Gate, override Gate's readiness probe with 221 | the following patch: 222 | 223 | ```yaml 224 | readinessProbe: 225 | $patch: replace 226 | exec: 227 | command: 228 | - wget 229 | - --no-check-certificate 230 | - --spider 231 | - -q 232 | - http://localhost:8084/health 233 | ``` 234 | 235 | Reference the patch in your base `kustomization.yml` by adding the following to 236 | a `patches` block: 237 | 238 | ```yaml 239 | - target: 240 | kind: Deployment 241 | name: gate 242 | path: path/to/my/readiness/probe/patch.yml 243 | ``` 244 | 245 | #### (Optional) Use a specific version of kustomization 246 | 247 | With a reference of the version, you can use a specific version with conviction, after examining if the version works well with your configurations. Without a reference, a resource link always references `master`. You can check out the available versions [here](https://github.com/spinnaker/kustomization-base/releases). 248 | 249 | For example: 250 | 251 | ```yaml 252 | resources: 253 | - github.com/spinnaker/kustomization-base/core?ref=v0.1.0 254 | ``` 255 | 256 | For further details, see the [documentation](https://kubectl.docs.kubernetes.io/references/kustomize/resource/) for the `resources` field. 257 | 258 | #### (Optional) Add any -local configs 259 | 260 | In addition to the main `service.yml` config file, each microservice also reads 261 | in the contents of `service-local.yml` to support settings that are not 262 | configurable in the _halconfig_. 263 | 264 | If you would like to add a `-local.yml` config file for any service, add it to 265 | the `local/` directory, and update that service's config in the 266 | `kustomization.yaml` to also mount that `local.yml` file. 267 | 268 | For example, to configure for clouddriver, add these settings to 269 | `local/clouddriver-local.yml`, and update the `clouddriver-config` entry in the 270 | `kustomization.yaml` to: 271 | 272 | ```yaml 273 | - behavior: merge 274 | files: 275 | - kleat/clouddriver.yml 276 | - local/clouddriver-local.yml 277 | name: clouddriver-config 278 | ``` 279 | 280 | #### (Optional) Enable monitoring 281 | 282 | The Spinnaker monitoring daemon runs as a sidecar in each Deployment (excluding 283 | Deck). To enable monitoring, copy the [monitoring](/monitoring) directory from 284 | this repository into the `base` directory of your fork of spinnaker-config. 285 | 286 | Add the `monitoring` directory to your base kustomization.yml's `resource` 287 | block. This will pull in the kustomization.yml that includes configuration that 288 | each microservice's monitoring sidecar will use to discover the endpoint to poll 289 | for metrics. 290 | 291 | Next, copy the [example `patches` block](/monitoring/patches.yml) into your base 292 | kustomization.yml. These patches will add the monitoring sidecar and appropriate 293 | volumes to each Deployment. 294 | 295 | To include custom 296 | [metric filters](https://www.spinnaker.io/setup/monitoring/#configuring-metric-filters), 297 | add them to the included `metric-filters` directory in your fork of 298 | spinaker-config, and reference them in the spinnaker-monitoring-filters 299 | `secretGenerator` entry in the root kustomization.yml. 300 | 301 | #### Deploy Spinnaker 302 | 303 | Now that all of the config files are in place, you can generate the YAML files 304 | to install Spinnaker by running `kustomize build .`. You can either save this to 305 | a file and apply it, or directly pipe it to `kubectl` via: 306 | 307 | ```shell script 308 | kustomize build . | kubectl apply -f - 309 | ``` 310 | -------------------------------------------------------------------------------- /core/clouddriver/base/deployment.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: clouddriver 5 | spec: 6 | replicas: 1 7 | template: 8 | spec: 9 | containers: 10 | - env: 11 | - name: JAVA_OPTS 12 | value: -XX:MaxRAMPercentage=80.0 13 | - name: SPRING_PROFILES_ACTIVE 14 | value: local 15 | image: us-docker.pkg.dev/spinnaker-community/docker/clouddriver:spinnaker-master-latest-validated 16 | name: clouddriver 17 | ports: 18 | - name: traffic-port 19 | containerPort: 7002 20 | protocol: TCP 21 | readinessProbe: 22 | httpGet: 23 | port: traffic-port 24 | path: /health 25 | resources: 26 | requests: 27 | cpu: 800m 28 | memory: 1200Mi 29 | volumeMounts: 30 | - mountPath: /opt/spinnaker/config 31 | name: clouddriver-config-volume 32 | - mountPath: /var/secrets 33 | name: spinnaker-secrets-volume 34 | securityContext: 35 | allowPrivilegeEscalation: false 36 | terminationGracePeriodSeconds: 720 37 | volumes: 38 | - name: clouddriver-config-volume 39 | secret: 40 | secretName: clouddriver-config 41 | - name: spinnaker-secrets-volume 42 | secret: 43 | secretName: spinnaker-secrets 44 | securityContext: 45 | runAsUser: 10111 46 | runAsGroup: 10111 47 | runAsNonRoot: true 48 | fsGroup: 10111 49 | -------------------------------------------------------------------------------- /core/clouddriver/base/kustomization.yml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | resources: 4 | - deployment.yml 5 | - service.yml 6 | commonLabels: 7 | app.kubernetes.io/instance: clouddriver 8 | app.kubernetes.io/name: clouddriver 9 | -------------------------------------------------------------------------------- /core/clouddriver/base/service.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: clouddriver 5 | spec: 6 | ports: 7 | - port: 7002 8 | protocol: TCP 9 | targetPort: 7002 10 | selector: 11 | app.kubernetes.io/name: clouddriver 12 | app.kubernetes.io/instance: clouddriver 13 | type: ClusterIP 14 | -------------------------------------------------------------------------------- /core/clouddriver/clouddriver-caching/kustomization.yml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | resources: 4 | - ./../base 5 | nameSuffix: -caching 6 | commonLabels: 7 | app.kubernetes.io/instance: clouddriver-caching 8 | app.kubernetes.io/name: clouddriver-caching 9 | -------------------------------------------------------------------------------- /core/clouddriver/clouddriver-ro-deck/kustomization.yml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | resources: 4 | - ./../base 5 | nameSuffix: -ro-deck 6 | commonLabels: 7 | app.kubernetes.io/instance: clouddriver-ro-deck 8 | app.kubernetes.io/name: clouddriver-ro-deck 9 | patchesStrategicMerge: 10 | - profile.yml 11 | -------------------------------------------------------------------------------- /core/clouddriver/clouddriver-ro-deck/profile.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: clouddriver 5 | spec: 6 | template: 7 | spec: 8 | containers: 9 | - name: clouddriver 10 | env: 11 | - name: SPRING_PROFILES_ACTIVE 12 | value: ro,local 13 | -------------------------------------------------------------------------------- /core/clouddriver/clouddriver-ro/kustomization.yml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | resources: 4 | - ./../base 5 | nameSuffix: -ro 6 | commonLabels: 7 | app.kubernetes.io/instance: clouddriver-ro 8 | app.kubernetes.io/name: clouddriver-ro 9 | patchesStrategicMerge: 10 | - profile.yml 11 | -------------------------------------------------------------------------------- /core/clouddriver/clouddriver-ro/profile.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: clouddriver 5 | spec: 6 | template: 7 | spec: 8 | containers: 9 | - name: clouddriver 10 | env: 11 | - name: SPRING_PROFILES_ACTIVE 12 | value: ro,local 13 | -------------------------------------------------------------------------------- /core/clouddriver/clouddriver-rw/kustomization.yml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | resources: 4 | - ./../base 5 | nameSuffix: -rw 6 | commonLabels: 7 | app.kubernetes.io/instance: clouddriver-rw 8 | app.kubernetes.io/name: clouddriver-rw 9 | patchesStrategicMerge: 10 | - profile.yml 11 | -------------------------------------------------------------------------------- /core/clouddriver/clouddriver-rw/profile.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: clouddriver 5 | spec: 6 | template: 7 | spec: 8 | containers: 9 | - name: clouddriver 10 | env: 11 | - name: SPRING_PROFILES_ACTIVE 12 | value: rw,local 13 | -------------------------------------------------------------------------------- /core/clouddriver/kustomization.yml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | resources: 4 | - ./clouddriver-caching 5 | - ./clouddriver-rw 6 | - ./clouddriver-ro 7 | - ./clouddriver-ro-deck 8 | -------------------------------------------------------------------------------- /core/deck/base/deployment.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: deck 5 | spec: 6 | replicas: 1 7 | template: 8 | spec: 9 | containers: 10 | - env: 11 | - name: DECK_HOST 12 | value: 0.0.0.0 13 | - name: DECK_PORT 14 | value: "9000" 15 | envFrom: 16 | - configMapRef: 17 | name: deck-env 18 | image: us-docker.pkg.dev/spinnaker-community/docker/deck:spinnaker-master-latest-validated 19 | name: deck 20 | ports: 21 | - name: traffic-port 22 | containerPort: 9000 23 | protocol: TCP 24 | readinessProbe: 25 | tcpSocket: 26 | port: 9000 27 | volumeMounts: 28 | - mountPath: /opt/spinnaker/config 29 | name: deck-config-volume 30 | - mountPath: /var/secrets 31 | name: spinnaker-secrets-volume 32 | securityContext: 33 | allowPrivilegeEscalation: false 34 | volumes: 35 | - name: deck-config-volume 36 | secret: 37 | secretName: deck-config 38 | - name: spinnaker-secrets-volume 39 | secret: 40 | secretName: spinnaker-secrets 41 | -------------------------------------------------------------------------------- /core/deck/base/kustomization.yml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | resources: 4 | - deployment.yml 5 | - service.yml 6 | commonLabels: 7 | app.kubernetes.io/name: deck 8 | app.kubernetes.io/instance: deck 9 | -------------------------------------------------------------------------------- /core/deck/base/service.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: deck 5 | spec: 6 | ports: 7 | - port: 9000 8 | protocol: TCP 9 | targetPort: 9000 10 | type: ClusterIP 11 | -------------------------------------------------------------------------------- /core/deck/kustomization.yml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | resources: 4 | - ./base 5 | -------------------------------------------------------------------------------- /core/echo/base/deployment.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: echo 5 | spec: 6 | replicas: 1 7 | template: 8 | spec: 9 | containers: 10 | - env: 11 | - name: JAVA_OPTS 12 | value: -XX:MaxRAMPercentage=80.0 13 | - name: SPRING_PROFILES_ACTIVE 14 | value: local 15 | image: us-docker.pkg.dev/spinnaker-community/docker/echo:spinnaker-master-latest-validated 16 | name: echo 17 | ports: 18 | - name: traffic-port 19 | containerPort: 8089 20 | protocol: TCP 21 | readinessProbe: 22 | httpGet: 23 | port: traffic-port 24 | path: /health 25 | resources: 26 | requests: 27 | cpu: 800m 28 | memory: 1200Mi 29 | volumeMounts: 30 | - mountPath: /opt/spinnaker/config 31 | name: echo-config-volume 32 | - mountPath: /var/secrets 33 | name: spinnaker-secrets-volume 34 | securityContext: 35 | allowPrivilegeEscalation: false 36 | terminationGracePeriodSeconds: 720 37 | volumes: 38 | - name: echo-config-volume 39 | secret: 40 | secretName: echo-config 41 | - name: spinnaker-secrets-volume 42 | secret: 43 | secretName: spinnaker-secrets 44 | securityContext: 45 | runAsUser: 10111 46 | runAsGroup: 10111 47 | runAsNonRoot: true 48 | fsGroup: 10111 49 | -------------------------------------------------------------------------------- /core/echo/base/kustomization.yml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | resources: 4 | - deployment.yml 5 | - service.yml 6 | commonLabels: 7 | app.kubernetes.io/instance: echo 8 | app.kubernetes.io/name: echo 9 | -------------------------------------------------------------------------------- /core/echo/base/service.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: echo 5 | spec: 6 | ports: 7 | - port: 8089 8 | protocol: TCP 9 | targetPort: 8089 10 | type: ClusterIP 11 | -------------------------------------------------------------------------------- /core/echo/echo-scheduler/kustomization.yml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | resources: 4 | - ./../base 5 | nameSuffix: -scheduler 6 | commonLabels: 7 | app.kubernetes.io/instance: echo-scheduler 8 | app.kubernetes.io/name: echo-scheduler 9 | patchesStrategicMerge: 10 | - profile.yml 11 | -------------------------------------------------------------------------------- /core/echo/echo-scheduler/profile.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: echo 5 | spec: 6 | template: 7 | spec: 8 | containers: 9 | - name: echo 10 | env: 11 | - name: SPRING_PROFILES_ACTIVE 12 | value: scheduler,local 13 | -------------------------------------------------------------------------------- /core/echo/echo-worker/kustomization.yml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | resources: 4 | - ./../base 5 | nameSuffix: -worker 6 | commonLabels: 7 | app.kubernetes.io/instance: echo-worker 8 | app.kubernetes.io/name: echo-worker 9 | patchesStrategicMerge: 10 | - profile.yml 11 | -------------------------------------------------------------------------------- /core/echo/echo-worker/profile.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: echo 5 | spec: 6 | template: 7 | spec: 8 | containers: 9 | - name: echo 10 | env: 11 | - name: SPRING_PROFILES_ACTIVE 12 | value: worker,local 13 | -------------------------------------------------------------------------------- /core/echo/kustomization.yml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | resources: 4 | - ./echo-scheduler 5 | - ./echo-worker 6 | -------------------------------------------------------------------------------- /core/front50/base/deployment.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: front50 5 | spec: 6 | replicas: 1 7 | template: 8 | spec: 9 | containers: 10 | - env: 11 | - name: JAVA_OPTS 12 | value: -XX:MaxRAMPercentage=80.0 13 | - name: SPRING_PROFILES_ACTIVE 14 | value: local 15 | image: us-docker.pkg.dev/spinnaker-community/docker/front50:spinnaker-master-latest-validated 16 | name: front50 17 | ports: 18 | - name: traffic-port 19 | containerPort: 8080 20 | protocol: TCP 21 | readinessProbe: 22 | httpGet: 23 | port: traffic-port 24 | path: /health 25 | volumeMounts: 26 | - mountPath: /opt/spinnaker/config 27 | name: front50-config-volume 28 | - mountPath: /var/secrets 29 | name: spinnaker-secrets-volume 30 | securityContext: 31 | allowPrivilegeEscalation: false 32 | terminationGracePeriodSeconds: 720 33 | volumes: 34 | - name: front50-config-volume 35 | secret: 36 | secretName: front50-config 37 | - name: spinnaker-secrets-volume 38 | secret: 39 | secretName: spinnaker-secrets 40 | securityContext: 41 | runAsUser: 10111 42 | runAsGroup: 10111 43 | runAsNonRoot: true 44 | fsGroup: 10111 45 | -------------------------------------------------------------------------------- /core/front50/base/kustomization.yml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | resources: 4 | - deployment.yml 5 | - service.yml 6 | commonLabels: 7 | app.kubernetes.io/name: front50 8 | app.kubernetes.io/instance: front50 9 | -------------------------------------------------------------------------------- /core/front50/base/service.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: front50 5 | spec: 6 | ports: 7 | - port: 8080 8 | protocol: TCP 9 | targetPort: 8080 10 | type: ClusterIP 11 | -------------------------------------------------------------------------------- /core/front50/kustomization.yml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | resources: 4 | - ./base 5 | -------------------------------------------------------------------------------- /core/gate/base/deployment.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: gate 5 | spec: 6 | replicas: 1 7 | template: 8 | spec: 9 | containers: 10 | - env: 11 | - name: JAVA_OPTS 12 | value: -XX:MaxRAMPercentage=80.0 13 | - name: SPRING_PROFILES_ACTIVE 14 | value: local 15 | image: us-docker.pkg.dev/spinnaker-community/docker/gate:spinnaker-master-latest-validated 16 | name: gate 17 | ports: 18 | - name: traffic-port 19 | containerPort: 8084 20 | protocol: TCP 21 | readinessProbe: 22 | httpGet: 23 | # TODO(ezimanyi): we need some way of making this scheme configurable 24 | # so the health check passes without SSL enabled. 25 | scheme: HTTPS 26 | port: traffic-port 27 | path: /health 28 | resources: 29 | requests: 30 | memory: 1Gi 31 | cpu: 500m 32 | volumeMounts: 33 | - mountPath: /opt/spinnaker/config 34 | name: gate-config-volume 35 | - mountPath: /var/secrets 36 | name: spinnaker-secrets-volume 37 | securityContext: 38 | allowPrivilegeEscalation: false 39 | terminationGracePeriodSeconds: 720 40 | volumes: 41 | - name: gate-config-volume 42 | secret: 43 | secretName: gate-config 44 | - name: spinnaker-secrets-volume 45 | secret: 46 | secretName: spinnaker-secrets 47 | securityContext: 48 | runAsUser: 10111 49 | runAsGroup: 10111 50 | runAsNonRoot: true 51 | fsGroup: 10111 52 | -------------------------------------------------------------------------------- /core/gate/base/kustomization.yml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | resources: 4 | - deployment.yml 5 | - service.yml 6 | commonLabels: 7 | app.kubernetes.io/name: gate 8 | app.kubernetes.io/instance: gate 9 | -------------------------------------------------------------------------------- /core/gate/base/service.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: gate 5 | spec: 6 | ports: 7 | - port: 8084 8 | protocol: TCP 9 | targetPort: 8084 10 | type: ClusterIP 11 | -------------------------------------------------------------------------------- /core/gate/kustomization.yml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | resources: 4 | - ./base 5 | -------------------------------------------------------------------------------- /core/igor/base/deployment.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: igor 5 | spec: 6 | replicas: 1 7 | template: 8 | spec: 9 | containers: 10 | - env: 11 | - name: JAVA_OPTS 12 | value: -XX:MaxRAMPercentage=80.0 13 | - name: SPRING_PROFILES_ACTIVE 14 | value: local 15 | image: us-docker.pkg.dev/spinnaker-community/docker/igor:spinnaker-master-latest-validated 16 | name: igor 17 | ports: 18 | - name: traffic-port 19 | containerPort: 8088 20 | protocol: TCP 21 | readinessProbe: 22 | httpGet: 23 | port: traffic-port 24 | path: /health 25 | volumeMounts: 26 | - mountPath: /opt/spinnaker/config 27 | name: igor-config-volume 28 | - mountPath: /var/secrets 29 | name: spinnaker-secrets-volume 30 | securityContext: 31 | allowPrivilegeEscalation: false 32 | terminationGracePeriodSeconds: 720 33 | volumes: 34 | - name: igor-config-volume 35 | secret: 36 | secretName: igor-config 37 | - name: spinnaker-secrets-volume 38 | secret: 39 | secretName: spinnaker-secrets 40 | securityContext: 41 | runAsUser: 10111 42 | runAsGroup: 10111 43 | runAsNonRoot: true 44 | fsGroup: 10111 45 | -------------------------------------------------------------------------------- /core/igor/base/kustomization.yml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | resources: 4 | - deployment.yml 5 | - service.yml 6 | commonLabels: 7 | app.kubernetes.io/name: igor 8 | app.kubernetes.io/instance: igor 9 | -------------------------------------------------------------------------------- /core/igor/base/service.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: igor 5 | spec: 6 | ports: 7 | - port: 8088 8 | protocol: TCP 9 | targetPort: 8088 10 | type: ClusterIP 11 | -------------------------------------------------------------------------------- /core/igor/kustomization.yml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | resources: 4 | - ./base 5 | -------------------------------------------------------------------------------- /core/kustomization.yml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | resources: 4 | - ./clouddriver 5 | - ./deck 6 | - ./echo 7 | - ./front50 8 | - ./igor 9 | - ./gate 10 | - ./orca 11 | - ./rosco 12 | - ./service-discovery 13 | -------------------------------------------------------------------------------- /core/orca/base/deployment.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: orca 5 | spec: 6 | replicas: 1 7 | template: 8 | spec: 9 | containers: 10 | - env: 11 | - name: JAVA_OPTS 12 | value: -XX:MaxRAMPercentage=80.0 13 | - name: SPRING_PROFILES_ACTIVE 14 | value: local 15 | image: us-docker.pkg.dev/spinnaker-community/docker/orca:spinnaker-master-latest-validated 16 | name: orca 17 | ports: 18 | - name: traffic-port 19 | containerPort: 8083 20 | protocol: TCP 21 | readinessProbe: 22 | httpGet: 23 | port: traffic-port 24 | path: /health 25 | volumeMounts: 26 | - mountPath: /opt/spinnaker/config 27 | name: orca-config-volume 28 | - mountPath: /var/secrets 29 | name: spinnaker-secrets-volume 30 | securityContext: 31 | allowPrivilegeEscalation: false 32 | terminationGracePeriodSeconds: 720 33 | volumes: 34 | - name: orca-config-volume 35 | secret: 36 | secretName: orca-config 37 | - name: spinnaker-secrets-volume 38 | secret: 39 | secretName: spinnaker-secrets 40 | securityContext: 41 | runAsUser: 10111 42 | runAsGroup: 10111 43 | runAsNonRoot: true 44 | fsGroup: 10111 45 | -------------------------------------------------------------------------------- /core/orca/base/kustomization.yml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | resources: 4 | - deployment.yml 5 | - service.yml 6 | commonLabels: 7 | app.kubernetes.io/name: orca 8 | app.kubernetes.io/instance: orca 9 | -------------------------------------------------------------------------------- /core/orca/base/service.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: orca 5 | spec: 6 | ports: 7 | - port: 8083 8 | protocol: TCP 9 | targetPort: 8083 10 | type: ClusterIP 11 | -------------------------------------------------------------------------------- /core/orca/kustomization.yml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | resources: 4 | - ./base 5 | -------------------------------------------------------------------------------- /core/rosco/base/deployment.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: rosco 5 | spec: 6 | replicas: 1 7 | template: 8 | spec: 9 | containers: 10 | - env: 11 | - name: JAVA_OPTS 12 | value: -XX:MaxRAMPercentage=80.0 13 | - name: SPRING_PROFILES_ACTIVE 14 | value: local 15 | image: us-docker.pkg.dev/spinnaker-community/docker/rosco:spinnaker-master-latest-validated 16 | name: rosco 17 | ports: 18 | - name: traffic-port 19 | containerPort: 8087 20 | protocol: TCP 21 | readinessProbe: 22 | httpGet: 23 | port: traffic-port 24 | path: /health 25 | volumeMounts: 26 | - mountPath: /opt/spinnaker/config 27 | name: rosco-config-volume 28 | - mountPath: /var/secrets 29 | name: spinnaker-secrets-volume 30 | securityContext: 31 | allowPrivilegeEscalation: false 32 | terminationGracePeriodSeconds: 720 33 | volumes: 34 | - name: rosco-config-volume 35 | secret: 36 | secretName: rosco-config 37 | - name: spinnaker-secrets-volume 38 | secret: 39 | secretName: spinnaker-secrets 40 | securityContext: 41 | runAsUser: 10111 42 | runAsGroup: 10111 43 | runAsNonRoot: true 44 | fsGroup: 10111 45 | -------------------------------------------------------------------------------- /core/rosco/base/kustomization.yml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | resources: 4 | - deployment.yml 5 | - service.yml 6 | commonLabels: 7 | app.kubernetes.io/name: rosco 8 | app.kubernetes.io/instance: rosco 9 | -------------------------------------------------------------------------------- /core/rosco/base/service.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: rosco 5 | spec: 6 | ports: 7 | - port: 8087 8 | protocol: TCP 9 | targetPort: 8087 10 | type: ClusterIP 11 | -------------------------------------------------------------------------------- /core/rosco/kustomization.yml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | resources: 4 | - ./base 5 | -------------------------------------------------------------------------------- /core/service-discovery/kustomization.yml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | secretGenerator: 4 | - files: 5 | - spinnaker.yml 6 | name: clouddriver-config 7 | - files: [] 8 | name: deck-config 9 | - files: 10 | - spinnaker.yml 11 | name: echo-config 12 | - files: 13 | - spinnaker.yml 14 | name: fiat-config 15 | - files: 16 | - spinnaker.yml 17 | name: front50-config 18 | - files: 19 | - spinnaker.yml 20 | name: gate-config 21 | - files: 22 | - spinnaker.yml 23 | name: igor-config 24 | - files: 25 | - spinnaker.yml 26 | name: kayenta-config 27 | - files: 28 | - spinnaker.yml 29 | name: orca-config 30 | - files: 31 | - spinnaker.yml 32 | name: rosco-config 33 | - files: 34 | - spinnaker.yml 35 | name: keel-config 36 | - files: [] 37 | name: spinnaker-secrets 38 | - files: [] 39 | name: spinnaker-monitoring-config 40 | - files: [] 41 | name: spinnaker-monitoring-filters 42 | configMapGenerator: 43 | - name: deck-env 44 | -------------------------------------------------------------------------------- /core/service-discovery/spinnaker.yml: -------------------------------------------------------------------------------- 1 | services: 2 | # Even though clouddriver is deployed in HA mode, other services may not know 3 | # this and simply look for service.clouddriver. To account for this use case, 4 | # we'll point the generic 'clouddriver' at clouddriver-rw. 5 | clouddriver: 6 | baseUrl: http://clouddriver-rw.spinnaker:7002 7 | enabled: true 8 | clouddriverCaching: 9 | baseUrl: http://clouddriver-caching.spinnaker:7002 10 | enabled: true 11 | clouddriverRo: 12 | baseUrl: http://clouddriver-ro.spinnaker:7002 13 | enabled: true 14 | clouddriverRoDeck: 15 | baseUrl: http://clouddriver-ro-deck.spinnaker:7002 16 | enabled: true 17 | clouddriverRw: 18 | baseUrl: http://clouddriver-rw.spinnaker:7002 19 | enabled: true 20 | # Even though echo is deployed in HA mode, other services may not know 21 | # this and simply look for service.echo. To account for this use case, 22 | # we'll point the generic 'echo' at echo-worker. 23 | echo: 24 | baseUrl: http://echo-worker.spinnaker:8089 25 | enabled: true 26 | echoScheduler: 27 | baseUrl: http://echo-scheduler.spinnaker:8089 28 | enabled: true 29 | echoWorker: 30 | baseUrl: http://echo-worker.spinnaker:8089 31 | enabled: true 32 | fiat: 33 | baseUrl: http://fiat.spinnaker:7003 34 | enabled: false 35 | front50: 36 | baseUrl: http://front50.spinnaker:8080 37 | enabled: true 38 | igor: 39 | baseUrl: http://igor.spinnaker:8088 40 | enabled: true 41 | kayenta: 42 | baseUrl: http://kayenta.spinnaker:8090 43 | enabled: false 44 | keel: 45 | baseUrl: http://keel.spinnaker:7010 46 | enabled: false 47 | orca: 48 | baseUrl: http://orca.spinnaker:8083 49 | enabled: true 50 | redis: 51 | baseUrl: redis://redis.spinnaker:6379 52 | enabled: true 53 | redisRo: 54 | # For now just pointing at the primary redis 55 | # Consider pointing to a spin-redis-ro service 56 | baseUrl: redis://redis.spinnaker:6379 57 | enabled: true 58 | rosco: 59 | baseUrl: http://rosco.spinnaker:8087 60 | enabled: true 61 | -------------------------------------------------------------------------------- /fiat/base/deployment.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: fiat 5 | spec: 6 | replicas: 1 7 | template: 8 | spec: 9 | containers: 10 | - env: 11 | - name: JAVA_OPTS 12 | value: -XX:MaxRAMPercentage=80.0 13 | - name: SPRING_PROFILES_ACTIVE 14 | value: local 15 | image: us-docker.pkg.dev/spinnaker-community/docker/fiat:spinnaker-master-latest-validated 16 | name: fiat 17 | ports: 18 | - name: traffic-port 19 | containerPort: 7003 20 | protocol: TCP 21 | readinessProbe: 22 | httpGet: 23 | port: traffic-port 24 | path: /health 25 | resources: 26 | requests: 27 | memory: 1Gi 28 | cpu: 500m 29 | volumeMounts: 30 | - mountPath: /opt/spinnaker/config 31 | name: fiat-config-volume 32 | - mountPath: /var/secrets 33 | name: spinnaker-secrets-volume 34 | securityContext: 35 | allowPrivilegeEscalation: false 36 | terminationGracePeriodSeconds: 720 37 | volumes: 38 | - name: fiat-config-volume 39 | secret: 40 | secretName: fiat-config 41 | - name: spinnaker-secrets-volume 42 | secret: 43 | secretName: spinnaker-secrets 44 | securityContext: 45 | runAsUser: 10111 46 | runAsGroup: 10111 47 | runAsNonRoot: true 48 | fsGroup: 10111 49 | -------------------------------------------------------------------------------- /fiat/base/kustomization.yml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | resources: 4 | - deployment.yml 5 | - service.yml 6 | commonLabels: 7 | app.kubernetes.io/name: fiat 8 | app.kubernetes.io/instance: fiat 9 | -------------------------------------------------------------------------------- /fiat/base/service.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: fiat 5 | spec: 6 | ports: 7 | - port: 7003 8 | protocol: TCP 9 | targetPort: 7003 10 | type: ClusterIP 11 | -------------------------------------------------------------------------------- /fiat/kustomization.yml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | resources: 4 | - ./base 5 | -------------------------------------------------------------------------------- /kayenta/base/deployment.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: kayenta 5 | spec: 6 | replicas: 1 7 | template: 8 | spec: 9 | containers: 10 | - env: 11 | - name: JAVA_OPTS 12 | value: -XX:MaxRAMPercentage=80.0 13 | - name: SPRING_PROFILES_ACTIVE 14 | value: local 15 | image: us-docker.pkg.dev/spinnaker-community/docker/kayenta:spinnaker-master-latest-validated 16 | name: kayenta 17 | ports: 18 | - name: traffic-port 19 | containerPort: 8090 20 | protocol: TCP 21 | readinessProbe: 22 | httpGet: 23 | port: traffic-port 24 | path: /health 25 | resources: 26 | requests: 27 | memory: 1Gi 28 | cpu: 500m 29 | volumeMounts: 30 | - mountPath: /opt/spinnaker/config 31 | name: kayenta-config-volume 32 | - mountPath: /var/secrets 33 | name: spinnaker-secrets-volume 34 | securityContext: 35 | allowPrivilegeEscalation: false 36 | terminationGracePeriodSeconds: 720 37 | volumes: 38 | - name: kayenta-config-volume 39 | secret: 40 | secretName: kayenta-config 41 | - name: spinnaker-secrets-volume 42 | secret: 43 | secretName: spinnaker-secrets 44 | securityContext: 45 | runAsUser: 10111 46 | runAsGroup: 10111 47 | runAsNonRoot: true 48 | fsGroup: 10111 49 | -------------------------------------------------------------------------------- /kayenta/base/kustomization.yml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | resources: 4 | - deployment.yml 5 | - service.yml 6 | commonLabels: 7 | app.kubernetes.io/name: kayenta 8 | app.kubernetes.io/instance: kayenta 9 | -------------------------------------------------------------------------------- /kayenta/base/service.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: kayenta 5 | spec: 6 | ports: 7 | - port: 8090 8 | protocol: TCP 9 | targetPort: 8090 10 | type: ClusterIP 11 | -------------------------------------------------------------------------------- /kayenta/kustomization.yml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | resources: 4 | - ./base 5 | -------------------------------------------------------------------------------- /keel/base/deployment.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: keel 5 | namespace: spinnaker 6 | spec: 7 | replicas: 1 8 | template: 9 | spec: 10 | containers: 11 | - env: 12 | - name: JAVA_OPTS 13 | value: -XX:MaxRAMPercentage=50.0 14 | image: us-docker.pkg.dev/spinnaker-community/docker/keel:0.1.0-20210331200022-slim 15 | name: keel 16 | ports: 17 | - name: http 18 | containerPort: 7010 19 | protocol: TCP 20 | readinessProbe: 21 | httpGet: 22 | path: /health 23 | port: http 24 | failureThreshold: 3 25 | periodSeconds: 10 26 | successThreshold: 1 27 | timeoutSeconds: 1 28 | terminationMessagePath: /dev/termination-log 29 | terminationMessagePolicy: File 30 | volumeMounts: 31 | - mountPath: /opt/spinnaker/config 32 | name: keel-config-volume 33 | - mountPath: /var/secrets 34 | name: spinnaker-secrets-volume 35 | dnsPolicy: ClusterFirst 36 | restartPolicy: Always 37 | schedulerName: default-scheduler 38 | securityContext: {} 39 | terminationGracePeriodSeconds: 60 40 | volumes: 41 | - name: keel-config-volume 42 | secret: 43 | defaultMode: 420 44 | secretName: keel-config 45 | - name: spinnaker-secrets-volume 46 | secret: 47 | secretName: spinnaker-secrets 48 | -------------------------------------------------------------------------------- /keel/base/kustomization.yml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | resources: 4 | - deployment.yml 5 | - service.yml 6 | commonLabels: 7 | app.kubernetes.io/name: keel 8 | app.kubernetes.io/instance: keel 9 | 10 | -------------------------------------------------------------------------------- /keel/base/service.yml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: keel 5 | namespace: spinnaker 6 | spec: 7 | ports: 8 | - port: 7010 9 | protocol: TCP 10 | targetPort: 7010 11 | type: ClusterIP 12 | -------------------------------------------------------------------------------- /keel/kustomization.yml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | resources: 4 | - ./base 5 | 6 | -------------------------------------------------------------------------------- /monitoring/kustomization.yml: -------------------------------------------------------------------------------- 1 | apiVersion: kustomize.config.k8s.io/v1beta1 2 | kind: Kustomization 3 | secretGenerator: 4 | - name: spinnaker-monitoring-registry-clouddriver 5 | files: 6 | - ./registry/clouddriver.yml 7 | - name: spinnaker-monitoring-registry-echo 8 | files: 9 | - ./registry/echo.yml 10 | - name: spinnaker-monitoring-registry-fiat 11 | files: 12 | - ./registry/fiat.yml 13 | - name: spinnaker-monitoring-registry-front50 14 | files: 15 | - ./registry/front50.yml 16 | - name: spinnaker-monitoring-registry-gate 17 | files: 18 | - ./registry/gate.yml 19 | - name: spinnaker-monitoring-registry-igor 20 | files: 21 | - ./registry/igor.yml 22 | - name: spinnaker-monitoring-registry-kayenta 23 | files: 24 | - ./registry/kayenta.yml 25 | - name: spinnaker-monitoring-registry-orca 26 | files: 27 | - ./registry/orca.yml 28 | - name: spinnaker-monitoring-registry-rosco 29 | files: 30 | - ./registry/rosco.yml 31 | -------------------------------------------------------------------------------- /monitoring/patches.yml: -------------------------------------------------------------------------------- 1 | # Add the following patches block to your base kustomization.yml in your fork 2 | # of spinnaker-config: 3 | 4 | patches: 5 | - target: 6 | # Match all Deployments, excluding deck 7 | kind: Deployment 8 | name: (clouddriver|echo|fiat|front50|gate|igor|kayenta|orca|rosco) 9 | path: monitoring/patches/shared/sidecar.yml 10 | - target: 11 | # Match all Deployments, excluding deck 12 | kind: Deployment 13 | name: (clouddriver|echo|fiat|front50|gate|igor|kayenta|orca|rosco) 14 | path: monitoring/patches/shared/volumes.yml 15 | - target: 16 | kind: Deployment 17 | name: clouddriver 18 | path: monitoring/patches/clouddriver.yml 19 | - target: 20 | kind: Deployment 21 | name: echo 22 | path: monitoring/patches/echo.yml 23 | - target: 24 | kind: Deployment 25 | name: fiat 26 | path: monitoring/patches/fiat.yml 27 | - target: 28 | kind: Deployment 29 | name: front50 30 | path: monitoring/patches/front50.yml 31 | - target: 32 | kind: Deployment 33 | name: gate 34 | path: monitoring/patches/gate.yml 35 | - target: 36 | kind: Deployment 37 | name: igor 38 | path: monitoring/patches/igor.yml 39 | - target: 40 | kind: Deployment 41 | name: kayenta 42 | path: monitoring/patches/kayenta.yml 43 | - target: 44 | kind: Deployment 45 | name: orca 46 | path: monitoring/patches/orca.yml 47 | - target: 48 | kind: Deployment 49 | name: rosco 50 | path: monitoring/patches/rosco.yml 51 | -------------------------------------------------------------------------------- /monitoring/patches/clouddriver.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1beta1 2 | kind: Deployment 3 | metadata: 4 | name: clouddriver 5 | spec: 6 | template: 7 | spec: 8 | volumes: 9 | - name: spinnaker-monitoring-registry-volume 10 | secret: 11 | secretName: spinnaker-monitoring-registry-clouddriver 12 | -------------------------------------------------------------------------------- /monitoring/patches/echo.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1beta1 2 | kind: Deployment 3 | metadata: 4 | name: echo 5 | spec: 6 | template: 7 | spec: 8 | volumes: 9 | - name: spinnaker-monitoring-registry-volume 10 | secret: 11 | secretName: spinnaker-monitoring-registry-echo 12 | -------------------------------------------------------------------------------- /monitoring/patches/fiat.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1beta1 2 | kind: Deployment 3 | metadata: 4 | name: fiat 5 | spec: 6 | template: 7 | spec: 8 | volumes: 9 | - name: spinnaker-monitoring-registry-volume 10 | secret: 11 | secretName: spinnaker-monitoring-registry-fiat 12 | -------------------------------------------------------------------------------- /monitoring/patches/front50.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1beta1 2 | kind: Deployment 3 | metadata: 4 | name: front50 5 | spec: 6 | template: 7 | spec: 8 | volumes: 9 | - name: spinnaker-monitoring-registry-volume 10 | secret: 11 | secretName: spinnaker-monitoring-registry-front50 12 | -------------------------------------------------------------------------------- /monitoring/patches/gate.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1beta1 2 | kind: Deployment 3 | metadata: 4 | name: gate 5 | spec: 6 | template: 7 | spec: 8 | volumes: 9 | - name: spinnaker-monitoring-registry-volume 10 | secret: 11 | secretName: spinnaker-monitoring-registry-gate 12 | -------------------------------------------------------------------------------- /monitoring/patches/igor.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1beta1 2 | kind: Deployment 3 | metadata: 4 | name: igor 5 | spec: 6 | template: 7 | spec: 8 | volumes: 9 | - name: spinnaker-monitoring-registry-volume 10 | secret: 11 | secretName: spinnaker-monitoring-registry-igor 12 | -------------------------------------------------------------------------------- /monitoring/patches/kayenta.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1beta1 2 | kind: Deployment 3 | metadata: 4 | name: kayenta 5 | spec: 6 | template: 7 | spec: 8 | volumes: 9 | - name: spinnaker-monitoring-registry-volume 10 | secret: 11 | secretName: spinnaker-monitoring-registry-kayenta 12 | -------------------------------------------------------------------------------- /monitoring/patches/orca.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1beta1 2 | kind: Deployment 3 | metadata: 4 | name: orca 5 | spec: 6 | template: 7 | spec: 8 | volumes: 9 | - name: spinnaker-monitoring-registry-volume 10 | secret: 11 | secretName: spinnaker-monitoring-registry-orca 12 | -------------------------------------------------------------------------------- /monitoring/patches/rosco.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1beta1 2 | kind: Deployment 3 | metadata: 4 | name: rosco 5 | spec: 6 | template: 7 | spec: 8 | volumes: 9 | - name: spinnaker-monitoring-registry-volume 10 | secret: 11 | secretName: spinnaker-monitoring-registry-rosco 12 | -------------------------------------------------------------------------------- /monitoring/patches/shared/sidecar.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1beta1 2 | kind: Deployment 3 | metadata: 4 | name: ignored 5 | spec: 6 | template: 7 | spec: 8 | containers: 9 | - env: 10 | - name: JAVA_OPTS 11 | value: -XX:MaxRAMPercentage=80.0 12 | image: us-docker.pkg.dev/spinnaker-community/docker/monitoring-daemon:spinnaker-master-latest-validated 13 | name: monitoring-daemon 14 | ports: 15 | - name: http 16 | containerPort: 8008 17 | protocol: TCP 18 | readinessProbe: 19 | tcpSocket: 20 | port: http 21 | volumeMounts: 22 | - mountPath: /opt/spinnaker-monitoring/filters 23 | name: spinnaker-monitoring-filters-volume 24 | - mountPath: /opt/spinnaker-monitoring/config 25 | name: spinnaker-monitoring-config-volume 26 | - mountPath: /opt/spinnaker-monitoring/registry 27 | name: spinnaker-monitoring-registry-volume 28 | - mountPath: /var/secrets 29 | name: spinnaker-secrets-volume 30 | -------------------------------------------------------------------------------- /monitoring/patches/shared/volumes.yml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1beta1 2 | kind: Deployment 3 | metadata: 4 | name: ignored 5 | spec: 6 | template: 7 | spec: 8 | volumes: 9 | - name: spinnaker-monitoring-config-volume 10 | secret: 11 | secretName: spinnaker-monitoring-config 12 | - name: spinnaker-monitoring-filters-volume 13 | secret: 14 | secretName: spinnaker-monitoring-filters 15 | -------------------------------------------------------------------------------- /monitoring/registry/clouddriver.yml: -------------------------------------------------------------------------------- 1 | metrics_url: http://localhost:7002/spectator/metrics 2 | -------------------------------------------------------------------------------- /monitoring/registry/echo.yml: -------------------------------------------------------------------------------- 1 | metrics_url: http://localhost:8089/spectator/metrics 2 | -------------------------------------------------------------------------------- /monitoring/registry/fiat.yml: -------------------------------------------------------------------------------- 1 | metrics_url: http://localhost:7003/spectator/metrics 2 | -------------------------------------------------------------------------------- /monitoring/registry/front50.yml: -------------------------------------------------------------------------------- 1 | metrics_url: http://localhost:8080/spectator/metrics 2 | -------------------------------------------------------------------------------- /monitoring/registry/gate.yml: -------------------------------------------------------------------------------- 1 | metrics_url: http://localhost:8084/spectator/metrics 2 | -------------------------------------------------------------------------------- /monitoring/registry/igor.yml: -------------------------------------------------------------------------------- 1 | metrics_url: http://localhost:8088/spectator/metrics 2 | -------------------------------------------------------------------------------- /monitoring/registry/kayenta.yml: -------------------------------------------------------------------------------- 1 | metrics_url: http://localhost:8090/spectator/metrics 2 | -------------------------------------------------------------------------------- /monitoring/registry/orca.yml: -------------------------------------------------------------------------------- 1 | metrics_url: http://localhost:8083/spectator/metrics 2 | -------------------------------------------------------------------------------- /monitoring/registry/rosco.yml: -------------------------------------------------------------------------------- 1 | metrics_url: http://localhost:8087/spectator/metrics 2 | --------------------------------------------------------------------------------