Giter Club home page Giter Club logo

minnaker's Introduction

Spinnaker All-In-One (Minnaker) Quick Start

Minnaker is a simple way to install Spinnaker inside a VM.

Background

Minnaker performs the following actions when run on a single Linux instance:

Requirements

To use Minnaker, make sure your Linux instance meets the following requirements:

  • Linux distribution running in a VM or bare metal

    • Ubuntu 18.04 or Debian 10 (VM or bare metal)
    • 2 vCPUs (recommend 4)
    • 8GiB of RAM (recommend 16)
    • 30GiB of HDD (recommend 40+)
    • NAT or Bridged networking with access to the internet
    • Install curl, git, and tar (if they're not already installed):
      • sudo apt-get install curl git tar
    • Port 443 on your VM needs to be accessible from your workstation / browser. By default, Minnaker installs Spinnaker and configures it to listen on port 443, using paths / and /api/v1(for the UI and API).
  • OSX

    • Docker Desktop local Kubernetes cluster enabled
    • At least 6 GiB of memory allocated to Docker Desktop
  • On Ubuntu, the Minnaker installer will install K3s for you (a minimal installation of Kubernetes), so you do not have to pre-install Docker or Kubernetes.

Changelog

  • 2/XX/2021 - Major update - install.sh has been replaced to use the spinnaker operator as the default installation method. Todo: Many of the convience scripts will also need to be updated to use the operator as well. If you would still like to use Halyard - please reference Release 0.0.23
    • operator_install.sh replaces install.sh
    • removing operator_install.sh
    • ToDo: Clean up all other scripts to remove dependency on halyard.
    • see notes below on currently supported scripts

Installation

  1. Login (SSH) to your VM or bare metal box.

  2. Download the minnaker tarball and untar:

    curl -L https://github.com/armory/minnaker/archive/v0.1.3.tar.gz | tar -zxv
  3. Change into the directory:

    cd minnaker-0.1.*
  4. Execute the install script. Note the following options before running the script:

    • Add the -o flag if you want to install open source Spinnaker.
    • By default, the script installs Armory Spinnaker and uses your public IP address (determined by curling ifconfig.co) as the endpoint for Spinnaker.
    • For bare metal or a local VM, specify the IP address for your server with -P flag. -P is the 'Public Endpoint' and must be an address or DNS name you will use to access Spinnaker (an IP address reachable by your end users).
    ./scripts/install.sh

    For example, the following command installs OSS Spinnaker on a VM with the IP address of 192.168.10.1:

    export PRIVATE_IP=192.168.10.1
    ./scripts/install.sh -o -P $PRIVATE_IP

    Installation can take between 5-10 minutes to complete depending on VM size.

  5. Once Minnaker is up and running, you can make changes to its configuration using kustomize and the spinnaker-operator under the folder ~/minnaker-1.0.1/spinsvc. For example, to change the version of Spinnaker that is installed, you can do this:

  • Using your favorite editor, edit the file: ~/minnaker-1.0.1/spinsvc/core_config/patch-version.yml
  • Update line 8 to the version you desire. e.g. version: 2.24.0
  • Then either run cd ~/minnaker-1.0.1/spinsvc && ./deploy.sh or kubectl apply -k ~/minnaker-1.0.1/spinsvc
  • To find the latest versions available:
  • By default, Minnaker will install the latest GA version of Spinnaker or Armory available.

Accessing Spinnaker

  1. A helper script called spin_endpoint was created during the installation process that prints out the URL associated with your spinnaker instance as well as the credentials (as necessary).

    spin_endpoint

    outputs:

    https://192.168.64.3
    username: 'admin'
    password: 'xxxxx'
  2. In your browser, navigate to the address (https://192.168.64.3/) for Spinnaker from step 1. This is Deck, the Spinnaker UI.

    If you installed Minnaker on a local VM, you must access it from your local machine. If you deployed Minnaker in the cloud, such as an EC2 instance, you can access Spinnaker from any machine that has access to that 'Public IP'.

  3. Log in to Deck with the following credentials:

    Username: admin

    Password: <Password from step 1>

Changing Your Spinnaker Configuration

  1. SSH into the machine where you have installed Spinnaker
  2. Modify the contents of ~/spinnaker/spinsvc/kustomization.yml and the associated patch files.

** PRO TIP: Use VS Code - Remote SSH extension to interact with your minnaker instance, and manage and edit multiple files **

See [Armory's Spinnaker Operator] (https://docs.armory.io/docs/installation/operator/).

By default, the install script clones [Armory's Spinnaker Kustomize Patches repo (branch: minnaker)](https://github.com/armory/spinnaker-kustomize-patches/tree/minnaker). This branch has been pre-configured with many features to make learning Spinnaker easy. 

[Armory Operator Reference](https://docs.armory.io/docs/installation/operator-reference/)
  1. When finished save your changes, and run deploy.sh located under ~/spinnaker/spinsvc.

Next Steps

After you finish your installation of Minnaker, go through our AWS QuickStart to learn how to deploy applications to AWS with Spinnaker.

Alternatively, take a look at the available Minnaker guides.

To learn more about the Spinnaker Operator check out the docs here: https://docs.armory.io/docs/installation/operator/

Also check out the spinnaker-kustomize-patches repo

Details

  • If you shut down and restart the instance and it gets different IP addresses, you'll have to update Spinnaker with the new IP address(es):

    • Run refresh_endpoint.sh and this will try to detect your new IP address and update the spinnaker configuration to your new IP address.
  • Certificate support isn't yet documented. There are several ways to achieve this:

    • Using actual cert files: create certs that Traefik can use in the ingress definition(s)
    • Using ACM or equivalent: put a certificate in front of the instance and change the overrides
    • Either way, you must use certificates that your browser will trust that match your DNS name (your browser may not prompt to trust the untrusted API certificate)
  • If you need to get the password again, you can execute the command spin_endpoint (this was added by the install script under /usr/local/bin)

Troubleshooting

Under the hood, Minnaker just wraps Spinnaker Operator, so it still runs all the components of Spinnaker as Kubernetes pods in the spinnaker namespace. You can use standard Kubernetes troubleshooting steps to troubleshoot Spinnaker components.

For example, to see all the components of Minnaker:

$ kubectl -n spinnaker get all -o wide
NAME                                   READY   STATUS    RESTARTS   AGE     IP           NODE              NOMINATED NODE   READINESS GATES
pod/minio-0                            1/1     Running   0          2d11h   10.42.0.11   ip-172-31-19-10   <none>           <none>
pod/mariadb-0                          1/1     Running   0          2d11h   10.42.0.12   ip-172-31-19-10   <none>           <none>
pod/spin-redis-57966d86df-qfn9m        1/1     Running   0          2d11h   10.42.0.16   ip-172-31-19-10   <none>           <none>
pod/spin-deck-778577cb65-7m6mw         1/1     Running   0          2d11h   10.42.0.13   ip-172-31-19-10   <none>           <none>
pod/spin-gate-75c99f6b9d-fcgth         1/1     Running   0          2d11h   10.42.0.14   ip-172-31-19-10   <none>           <none>
pod/spin-rosco-86b4b4d6b5-h4vgf        1/1     Running   0          2d11h   10.42.0.20   ip-172-31-19-10   <none>           <none>
pod/spin-orca-84dd94c7f9-ch2t5         1/1     Running   0          2d11h   10.42.0.18   ip-172-31-19-10   <none>           <none>
pod/spin-clouddriver-564d98585-p9m76   1/1     Running   0          2d11h   10.42.0.17   ip-172-31-19-10   <none>           <none>
pod/spin-front50-955856785-tr8pw       1/1     Running   0          2d11h   10.42.0.19   ip-172-31-19-10   <none>           <none>
pod/spin-echo-5b5dc87b4c-ldv97         1/1     Running   0          2d11h   10.42.0.15   ip-172-31-19-10   <none>           <none>

NAME                       TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE     SELECTOR
service/mariadb            ClusterIP   10.43.69.47     <none>        3306/TCP   2d11h   app=mariadb
service/minio              ClusterIP   10.43.44.26     <none>        9000/TCP   2d11h   app=minio
service/spin-deck          ClusterIP   10.43.68.156    <none>        9000/TCP   2d11h   app=spin,cluster=spin-deck
service/spin-gate          ClusterIP   10.43.230.74    <none>        8084/TCP   2d11h   app=spin,cluster=spin-gate
service/spin-redis         ClusterIP   10.43.102.9     <none>        6379/TCP   2d11h   app=spin,cluster=spin-redis
service/spin-echo          ClusterIP   10.43.147.178   <none>        8089/TCP   2d11h   app=spin,cluster=spin-echo
service/spin-orca          ClusterIP   10.43.27.1      <none>        8083/TCP   2d11h   app=spin,cluster=spin-orca
service/spin-clouddriver   ClusterIP   10.43.181.214   <none>        7002/TCP   2d11h   app=spin,cluster=spin-clouddriver
service/spin-rosco         ClusterIP   10.43.187.43    <none>        8087/TCP   2d11h   app=spin,cluster=spin-rosco
service/spin-front50       ClusterIP   10.43.121.22    <none>        8080/TCP   2d11h   app=spin,cluster=spin-front50

NAME                               READY   UP-TO-DATE   AVAILABLE   AGE     CONTAINERS    IMAGES                                                   SELECTOR
deployment.apps/spin-redis         1/1     1            1           2d11h   redis         gcr.io/kubernetes-spinnaker/redis-cluster:v2             app=spin,cluster=spin-redis
deployment.apps/spin-deck          1/1     1            1           2d11h   deck          docker.io/armory/deck:2.14.0-5f306f6-df9097d-rc6         app=spin,cluster=spin-deck
deployment.apps/spin-gate          1/1     1            1           2d11h   gate          docker.io/armory/gate:1.14.0-42ccb4f-a2428e6-rc5         app=spin,cluster=spin-gate
deployment.apps/spin-rosco         1/1     1            1           2d11h   rosco         docker.io/armory/rosco:0.16.0-7c38ed6-508e253-rc5        app=spin,cluster=spin-rosco
deployment.apps/spin-orca          1/1     1            1           2d11h   orca          docker.io/armory/orca:2.12.0-67f03ef-c3b6f15-rc8         app=spin,cluster=spin-orca
deployment.apps/spin-clouddriver   1/1     1            1           2d11h   clouddriver   docker.io/armory/clouddriver:6.5.1-f969aaf-2f123de-rc6   app=spin,cluster=spin-clouddriver
deployment.apps/spin-front50       1/1     1            1           2d11h   front50       docker.io/armory/front50:0.21.0-cca684d-4e0f6fc-rc5      app=spin,cluster=spin-front50
deployment.apps/spin-echo          1/1     1            1           2d11h   echo          docker.io/armory/echo:2.10.0-48991a0-e3df630-rc6         app=spin,cluster=spin-echo

NAME                                         DESIRED   CURRENT   READY   AGE     CONTAINERS    IMAGES                                                   SELECTOR
replicaset.apps/spin-redis-57966d86df        1         1         1       2d11h   redis         gcr.io/kubernetes-spinnaker/redis-cluster:v2             app=spin,cluster=spin-redis,pod-template-hash=57966d86df
replicaset.apps/spin-deck-778577cb65         1         1         1       2d11h   deck          docker.io/armory/deck:2.14.0-5f306f6-df9097d-rc6         app=spin,cluster=spin-deck,pod-template-hash=778577cb65
replicaset.apps/spin-gate-75c99f6b9d         1         1         1       2d11h   gate          docker.io/armory/gate:1.14.0-42ccb4f-a2428e6-rc5         app=spin,cluster=spin-gate,pod-template-hash=75c99f6b9d
replicaset.apps/spin-rosco-86b4b4d6b5        1         1         1       2d11h   rosco         docker.io/armory/rosco:0.16.0-7c38ed6-508e253-rc5        app=spin,cluster=spin-rosco,pod-template-hash=86b4b4d6b5
replicaset.apps/spin-orca-84dd94c7f9         1         1         1       2d11h   orca          docker.io/armory/orca:2.12.0-67f03ef-c3b6f15-rc8         app=spin,cluster=spin-orca,pod-template-hash=84dd94c7f9
replicaset.apps/spin-clouddriver-564d98585   1         1         1       2d11h   clouddriver   docker.io/armory/clouddriver:6.5.1-f969aaf-2f123de-rc6   app=spin,cluster=spin-clouddriver,pod-template-hash=564d98585
replicaset.apps/spin-front50-955856785       1         1         1       2d11h   front50       docker.io/armory/front50:0.21.0-cca684d-4e0f6fc-rc5      app=spin,cluster=spin-front50,pod-template-hash=955856785
replicaset.apps/spin-echo-5b5dc87b4c         1         1         1       2d11h   echo          docker.io/armory/echo:2.10.0-48991a0-e3df630-rc6         app=spin,cluster=spin-echo,pod-template-hash=5b5dc87b4c

NAME                       READY   AGE     CONTAINERS   IMAGES
statefulset.apps/minio     1/1     2d11h   minio        minio/minio
statefulset.apps/mariadb   1/1     2d11h   mariadb      mariadb:10.4.12-bionic

To list all of the pods:

$ kubectl -n spinnaker get pods
NAME                               READY   STATUS    RESTARTS   AGE
minio-0                            1/1     Running   0          2d11h
mariadb-0                          1/1     Running   0          2d11h
spin-redis-57966d86df-qfn9m        1/1     Running   0          2d11h
spin-deck-778577cb65-7m6mw         1/1     Running   0          2d11h
spin-gate-75c99f6b9d-fcgth         1/1     Running   0          2d11h
spin-rosco-86b4b4d6b5-h4vgf        1/1     Running   0          2d11h
spin-orca-84dd94c7f9-ch2t5         1/1     Running   0          2d11h
spin-clouddriver-564d98585-p9m76   1/1     Running   0          2d11h
spin-front50-955856785-tr8pw       1/1     Running   0          2d11h
spin-echo-5b5dc87b4c-ldv97         1/1     Running   0          2d11h

To see information about a specific pod:

$ kubectl -n spinnaker describe pod spin-gate-75c99f6b9d-fcgth
Name:         spin-gate-75c99f6b9d-fcgth
Namespace:    spinnaker
Priority:     0
Node:         ip-172-31-19-10/172.31.19.10
Start Time:   Tue, 18 Feb 2020 16:49:51 +0000
Labels:       app=spin
              app.kubernetes.io/managed-by=halyard
              app.kubernetes.io/name=gate
              app.kubernetes.io/part-of=spinnaker
              app.kubernetes.io/version=2.18.0
              cluster=spin-gate
              pod-template-hash=75c99f6b9d
Annotations:  <none>
Status:       Running
IP:           10.42.0.14
IPs:
  IP:           10.42.0.14
Controlled By:  ReplicaSet/spin-gate-75c99f6b9d
Containers:
  gate:
    Container ID:   containerd://86aeeaa76477b83a36466f9267c3319caca7ea410928a9d5206d1e1e893cb850
    Image:          docker.io/armory/gate:1.14.0-42ccb4f-a2428e6-rc5
    Image ID:       docker.io/armory/gate@sha256:29fe06df04a21cb00a0cd94af95db8c441b42078b94648af07a46a98264057aa
    Port:           8084/TCP
    Host Port:      0/TCP
    State:          Running
      Started:      Tue, 18 Feb 2020 16:50:29 +0000
    Ready:          True
    Restart Count:  0
    Readiness:      exec [wget --no-check-certificate --spider -q http://localhost:8084/api/v1/health] delay=0s timeout=1s period=10s #success=1 #failure=3
    Environment:
      SPRING_PROFILES_ACTIVE:  local
    Mounts:
      /opt/spinnaker/config from spin-gate-files-1546480033 (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-tj4cz (ro)
Conditions:
  Type              Status
  Initialized       True
  Ready             True
  ContainersReady   True
  PodScheduled      True
Volumes:
  spin-gate-files-1546480033:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  spin-gate-files-1546480033
    Optional:    false
  default-token-tj4cz:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-tj4cz
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:          <none>

And to see the logs for a given pod:

$ kubectl -n spinnaker logs -f spin-gate-75c99f6b9d-fcgth
2020-02-21 01:06:20.802  INFO 1 --- [applications-10] c.n.s.g.s.internal.Front50Service        : ---> HTTP GET http://spin-front50.spinnaker:8080/v2/applications?restricted=false
2020-02-21 01:06:20.802  INFO 1 --- [-applications-9] c.n.s.g.s.internal.ClouddriverService    : ---> HTTP GET http://spin-clouddriver.spinnaker:7002/applications?restricted=false&expand=true
2020-02-21 01:06:20.805  INFO 1 --- [-applications-9] c.n.s.g.s.internal.ClouddriverService    : <--- HTTP 200 http://spin-clouddriver.spinnaker:7002/applications?restricted=false&expand=true (2ms)
2020-02-21 01:06:20.806  INFO 1 --- [applications-10] c.n.s.g.s.internal.Front50Service        : <--- HTTP 200 http://spin-front50.spinnaker:8080/v2/applications?restricted=false (4ms)
2020-02-21 01:06:25.808  INFO 1 --- [applications-10] c.n.s.g.s.internal.Front50Service        : ---> HTTP GET http://spin-front50.spinnaker:8080/v2/applications?restricted=false
2020-02-21 01:06:25.808  INFO 1 --- [-applications-9] c.n.s.g.s.internal.ClouddriverService    : ---> HTTP GET http://spin-clouddriver.spinnaker:7002/applications?restricted=false&expand=true
2020-02-21 01:06:25.810  INFO 1 --- [-applications-9] c.n.s.g.s.internal.ClouddriverService    : <--- HTTP 200 http://spin-clouddriver.spinnaker:7002/applications?restricted=false&expand=true (2ms)
2020-02-21 01:06:25.813  INFO 1 --- [applications-10] c.n.s.g.s.internal.Front50Service        : <--- HTTP 200 http://spin-front50.spinnaker:8080/v2/applications?restricted=false (4ms)

Uninstalling K3s

  • This will kill your kubernetes cluster: /usr/local/bin/k3s-killall.sh

Uninstall Minnaker for OSX

  • Delete the spinnaker and spinnaker-operator namespace.
kubectl --context docker-desktop delete ns spinnaker
kubectl --context docker-desktop delete ns spinnaker-operator
  • (Optionally) delete the ingress-nginx namespace: kubectl --context docker-desktop delete ns ingress-nginx
  • (Optionally) delete the local resources (including all pipeline defs): rm -rf ~/minnaker

minnaker's People

Contributors

317brian avatar abdulbasitkay avatar aimeeu avatar akshayabd avatar alchen99 avatar aleon1220 avatar alexfornuto avatar away168 avatar chadtripod avatar easyasabc123 avatar justinrlee avatar mauricioborges avatar nladha09 avatar robzienert avatar ryanpei avatar wurbanski avatar yogeek avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

minnaker's Issues

installation error in azure VM linux ubuntu 18

Hi, I am using
storage_image_reference_offer = "UbuntuServer"
storage_image_reference_sku = "18.04-LTS"
storage_image_reference_version = "latest"
azure_vm_size = "Standard_DS3_v2"

For the installation i used

./scripts/install.sh -o -P $MY_AZURE_PUBLIC_IP

the issue seems to be with the operator part. It might be similar to #108

[INFO ] Downloading operator from https://github.com/armory/spinnaker-operator/releases/download/v/manifests.tgz
[KUBE ] kubectl apply -f /home/testadmin/minnaker-0.1.3/spinsvc/operator/deploy/crds/
[ERROR] Error executing command:
error: the path "/home/testadmin/minnaker-0.1.3/spinsvc/operator/deploy/crds/" does not exist[KUBE ] kubectl apply -f https://engineering.armory.io/manifests/pacrd-1.0.1.yaml -n spinnaker
[ERROR] Error executing command:
Warning: apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
Error from server (NotFound): error when creating "https://engineering.armory.io/manifests/pacrd-1.0.1.yaml": namespaces "spinnaker" not found
Error from server (NotFound): error when creating "https://engineering.armory.io/manifests/pacrd-1.0.1.yaml": namespaces "spinnaker" not found
Error from server (NotFound): error when creating "https://engineering.armory.io/manifests/pacrd-1.0.1.yaml": namespaces "spinnaker" not found
Error from server (NotFound): error when creating "https://engineering.armory.io/manifests/pacrd-1.0.1.yaml": namespaces "spinnaker" not found
Error from server (NotFound): error when creating "https://engineering.armory.io/manifests/pacrd-1.0.1.yaml": namespaces "spinnaker" not found

Osx install script fails - helper functions commented out

./scripts/osx_install.sh
Using Armory SpinnakerSetting the Halyard Image to
Running minnaker setup for OSX
./scripts/osx_install.sh: line 103: copy_templates: command not found

The copy_templates helper, as well as other helpers for generating the kubernetes manifests have been commented out in scripts/functions.sh in favor of something else, but they're still being referenced in the osx install script. I tried skipping the copy_templates step, and uncommenting the said helpers, but these did not work as well, and I am getting all sorts of errors as I try to bring back the commented out code.

./scripts/osx_install.sh -P $PRIVATE_IP
/Users/kelly/minnaker-0.1.1
Using Armory SpinnakerSetting the Halyard Image to
Running minnaker setup for OSX
[INFO ] Trying to detect endpoint
/Users/kelly/minnaker-0.1.1/scripts/functions.sh: line 33: : No such file or directory

Installing locally fails

I executed this

export PRIVATE_IP=192.168.1.107
./scripts/install.sh -o -P $PRIVATE_IP

but got this error few minutes after I started the install script. Here are the last few parts of the output. Any ideas why it's failing?

[INFO]  systemd: Creating service file /etc/systemd/system/k3s.service
[INFO]  systemd: Enabling k3s unit
Created symlink /etc/systemd/system/multi-user.target.wants/k3s.service → /etc/systemd/system/k3s.service.
[INFO]  systemd: Starting k3s
[INFO ]  --- END K3s ---
[INFO ] Setting Kubernetes context to Spinnaker namespace
Context "default" created.
[INFO ] Spinnaker Operator Version: 1.2.5
[INFO ] Spinnaker flavor: oss
The connection to the server 192.168.1.107:8443 was refused - did you specify the right host or port?
[ERROR] Unable to list namespaces of the kubernetes cluster:
[KUBE ] kubectl apply -f https://engineering.armory.io/manifests/pacrd-1.0.1.yaml -n spinnaker
[ERROR] Error executing command:
unable to recognize "https://engineering.armory.io/manifests/pacrd-1.0.1.yaml": Get https://192.168.1.107:8443/api?timeout=32s: dial tcp 192.168.1.107:8443: connect: connection refused
unable to recognize "https://engineering.armory.io/manifests/pacrd-1.0.1.yaml": Get https://192.168.1.107:8443/api?timeout=32s: dial tcp 192.168.1.107:8443: connect: connection refused

Timeout with AWS EC2 install on ap-southeast-2 Australia type: m4.large

Installation fails and error of timeout is shown when installing spinnaker OSS in AWS EC2 type m4.large.

Instance Details:
2 CPUs
8192 Memory
60 GB Disk

It meets the requirements but it got stuck during the installation process.

Instance type | Instance family | Instance size | Availability zones | Free-Tier eligible | Bare metal | Hypervisor | vCPUs | Architecture | Cores | Valid cores | Threads per core | Valid threads per core | Sustained clock speed (GHz) | Memory (MiB) | Storage (GB) | Local instance storage | Storage type | Storage disk count | EBS encryption support | EBS optimization support | Network performance | ENA support | Maximum number of network interfaces | IPv4 addresses per interface | IPv6 addresses per interface | IPv6 support | Supported placement group strategies | GPUs | FPGAs | Auto Recovery support | Supported root devices | Dedicated Host support | On-Demand Hibernation support | Burstable Performance support | Current generation | On-Demand Linux pricing | On-Demand Windows pricing
-- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | --
m4.large | m4 | large | ap-southeast-2a, ap-southeast-2b, ap-southeast-2c | false | false | xen | 2 | x86_64 | 1 | 1 | 2 | 1,2 | 2.4 | 8192 | - | - | - | - | supported | default | Moderate | unsupported | 2 | 10 | 10 | true | partition, cluster, spread | - | - | true | - | true | true | - | true | 0.125 USD per Hour | 0.217 USD per Hour
-- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | --

If k3s install fails the script continues

When running the script, if the k3s install fail, the scripts continues.

 $ ./scripts/install.sh -o -P localhost
[INFO ] Using OSS Spinnaker
[INFO ] Using OSS Spinnaker
[INFO ] Running minnaker setup for Linux
(...)
[INFO ] --- Installing K3s ---
[ERROR]  Can not find systemd or openrc to use as a process supervisor for k3s
[INFO ]  --- END K3s ---
[INFO ] Setting Kubernetes context to Spinnaker namespace
....

Set up Oauth Authentication with BitBucket

I am running minnaker in AWs EC2.

Basically i have followed steps from https://www.spinnaker.io/setup/security/authentication/oauth/#bring-your-own-provider

In the step to "manually set the redirect_uri for Gate"
hal config security authn oauth2 edit --pre-established-redirect-uri https://my-real-gate-address.com:8084/login
is my-real-gate-address.com my public IP??

Here is detail to my configs:
hal config

name: default
version: 1.18.7
providers:
  appengine:
    enabled: false
    accounts: []
  aws:
    enabled: true
    accounts:
    - name: deref-master-managing
      requiredGroupMembership: []
      providerVersion: V1
      permissions: {}
      accountId: 'SECRET'
      regions:
      - name: us-east-1
      - name: ap-southeast-1
      - name: ap-southeast-2
      assumeRole: role/SpinnakerManagedRoleAccount
      lifecycleHooks: []
    - name: deref-systest
      requiredGroupMembership: []
      providerVersion: V1
      permissions: {}
      accountId: 'SECRET'
      regions:
      - name: us-east-1
      - name: ap-southeast-1
      - name: ap-southeast-2
      assumeRole: role/SpinnakerManagedRoleAccount
      lifecycleHooks: []
    - name: deref-sectest
      requiredGroupMembership: []
      providerVersion: V1
      permissions: {}
      accountId: 'SECRET'
      regions:
      - name: us-east-1
      - name: ap-southeast-1
      - name: ap-southeast-2
      assumeRole: role/SpinnakerManagedRoleAccount
      lifecycleHooks: []
    primaryAccount: deref-master-managing
    bakeryDefaults:
      baseImages: []
    accessKeyId: SECRET
    secretAccessKey: SECRET/SECRET+SECRET/SECRET
    defaultKeyPairTemplate: '{{name}}-keypair'
    defaultRegions:
    - name: us-west-2
    defaults:
      iamRole: BaseIAMRole
  ecs:
    enabled: false
    accounts: []
  azure:
    enabled: false
    accounts: []
    bakeryDefaults:
      templateFile: azure-linux.json
      baseImages: []
  dcos:
    enabled: false
    accounts: []
    clusters: []
  dockerRegistry:
    enabled: false
    accounts: []
  google:
    enabled: false
    accounts: []
    bakeryDefaults:
      templateFile: gce.json
      baseImages: []
      zone: us-central1-f
      network: default
      useInternalIp: false
  huaweicloud:
    enabled: false
    accounts: []
    bakeryDefaults:
      baseImages: []
  kubernetes:
    enabled: true
    accounts:
    - name: spinnaker
      requiredGroupMembership: []
      providerVersion: V2
      permissions: {}
      dockerRegistries: []
      serviceAccount: true
      cacheThreads: 1
      namespaces: []
      omitNamespaces: []
      kinds: []
      omitKinds: []
      customResources: []
      cachingPolicies: []
      onlySpinnakerManaged: true
    primaryAccount: spinnaker
  oracle:
    enabled: false
    accounts: []
    bakeryDefaults:
      templateFile: oci.json
      baseImages: []
  cloudfoundry:
    enabled: false
    accounts: []
deploymentEnvironment:
  size: SMALL
  type: Distributed
  accountName: spinnaker
  imageVariant: SLIM
  updateVersions: true
  consul:
    enabled: false
  vault:
    enabled: false
  location: spinnaker
  customSizing: {}
  sidecars: {}
  initContainers: {}
  hostAliases: {}
  affinity: {}
  tolerations: {}
  nodeSelectors: {}
  gitConfig:
    upstreamUser: spinnaker
  livenessProbeConfig:
    enabled: false
  haServices:
    clouddriver:
      enabled: false
      disableClouddriverRoDeck: false
    echo:
      enabled: false
persistentStorage:
  persistentStoreType: s3
  azs: {}
  gcs:
    rootFolder: front50
  redis: {}
  s3:
    bucket: spinnaker
    rootFolder: front50
    pathStyleAccess: true
    endpoint: http://minio.spinnaker:9000
    accessKeyId: minio
    secretAccessKey: SECRET+SECRET/SECRET
  oracle: {}
features:
  auth: false
  fiat: false
  chaos: false
  entityTags: false
  artifacts: true
metricStores:
  datadog:
    enabled: false
    tags: []
  prometheus:
    enabled: false
    add_source_metalabels: true
  stackdriver:
    enabled: false
  newrelic:
    enabled: false
    tags: []
  period: 30
  enabled: false
notifications:
  slack:
    enabled: false
  twilio:
    enabled: false
    baseUrl: https://api.twilio.com/
  github-status:
    enabled: false
timezone: America/Los_Angeles
ci:
  jenkins:
    enabled: false
    masters: []
  travis:
    enabled: false
    masters: []
  wercker:
    enabled: false
    masters: []
  concourse:
    enabled: false
    masters: []
  gcb:
    enabled: false
    accounts: []
repository:
  artifactory:
    enabled: false
    searches: []
security:
  apiSecurity:
    ssl:
      enabled: false
    overrideBaseUrl: https://SECRETPUBLIC_IP/api/v1
  uiSecurity:
    ssl:
      enabled: false
    overrideBaseUrl: https://SECRETPUBLIC_IP
  authn:
    oauth2:
      enabled: true
      client:
        clientId: SECRET
        clientSecret: SECRET
        useCurrentUri: false
      resource: {}
      userInfoMapping: {}
    saml:
      enabled: false
      userAttributeMapping: {}
    ldap:
      enabled: false
    x509:
      enabled: false
    iap:
      enabled: false
    enabled: true
  authz:
    groupMembership:
      service: EXTERNAL
      google:
        roleProviderType: GOOGLE
      github:
        roleProviderType: GITHUB
      file:
        roleProviderType: FILE
      ldap:
        roleProviderType: LDAP
    enabled: false
artifacts:
  bitbucket:
    enabled: false
    accounts: []
  gcs:
    enabled: false
    accounts: []
  oracle:
    enabled: false
    accounts: []
  github:
    enabled: false
    accounts: []
  gitlab:
    enabled: false
    accounts: []
  gitrepo:
    enabled: false
    accounts: []
  http:
    enabled: true
    accounts: []
  helm:
    enabled: false
    accounts: []
  s3:
    enabled: false
    accounts: []
  maven:
    enabled: false
    accounts: []
  templates: []
pubsub:
  enabled: false
  google:
    enabled: false
    pubsubType: GOOGLE
    subscriptions: []
    publishers: []
canary:
  enabled: false
  serviceIntegrations:
  - name: google
    enabled: false
    accounts: []
    gcsEnabled: false
    stackdriverEnabled: false
  - name: prometheus
    enabled: false
    accounts: []
  - name: datadog
    enabled: false
    accounts: []
  - name: signalfx
    enabled: false
    accounts: []
  - name: aws
    enabled: false
    accounts: []
    s3Enabled: false
  - name: newrelic
    enabled: false
    accounts: []
  reduxLoggerEnabled: true
  defaultJudge: NetflixACAJudge-v1.0
  stagesEnabled: true
  templatesEnabled: true
  showAllConfigsEnabled: true
plugins:
  plugins: []
  enabled: false
  downloadingEnabled: false
  pluginConfigurations:
    plugins: {}
webhook:
  trust:
    enabled: false
telemetry:
  enabled: true
  endpoint: https://stats.spinnaker.io
  instanceId: SECRET
  connectionTimeoutMillis: 3000
  readTimeoutMillis: 5000

~/.hal/default/profiles/settings-local.js

window.spinnakerSettings.feature.artifactsRewrite = true;

~/.hal/default/profiles/gate-local.yml

server:
  servlet:
    context-path: /api/v1
  tomcat:
    protocolHeader: X-Forwarded-Proto
    remoteIpHeader: X-Forwarded-For
    internalProxies: .*
    httpsServerPort: X-Forwarded-Port

security:
  basicform:
    enabled: false
  oauth2:
    client:
      clientId:
      clientSecret:
      userAuthorizationUri: https://bitbucket.org/site/oauth2/authorize
      accessTokenUri: https://bitbucket.org/site/oauth2/access_token
      scope: ""
    resource:
      userInfoUri: https://api.bitbucket.org/2.0/user
    userInfoMapping: # Used to map the userInfo response to our User
      email: email
      username: username

But interestingly enough take a look at the gate.yml inside the Gate Pod
It has BASIC security still enabled. how do i disable it?

/opt/spinnaker/config/gate.yml

## WARNING
## This file was autogenerated, and _will_ be overwritten by Halyard.
## Any edits you make here _will_ be lost.

spectator:
  applicationName: ${spring.application.name}
  webEndpoint:
    enabled: false

server:
  ssl:
    enabled: false
  port: '8084'
  address: 0.0.0.0
security:
  basic:
    enabled: true
  user: {}
  oauth2:
    enabled: true
    client:
      clientId: SECRET
      clientSecret: SECRET
      useCurrentUri: false
    resource: {}
    userInfoMapping: {}
cors: {}
google: {}

integrations:
  gremlin:
    enabled: false
    baseUrl: https://api.gremlin.com/v1

# halconfig

redis:
  connection: ${services.redis.baseUrl:redis://localhost:6379}

In Spinnaker UI it always shows as anonymous! Please help
image

Install issues on Mac OS 12.0.1

Well this pretty much sums it up (also in 1.2);

minnaker-0.1.3 % ./scripts/osx_install.sh
Using Armory SpinnakerSetting the Halyard Image to
Running minnaker setup for OSX
./scripts/osx_install.sh: line 103: copy_templates: command not found

Getting CrashLoopBackOff for minio-0 pod

1.- Description
When running the installation script, the operator runs and the minio-0 pod won't start. It fails with "CrashLoopBackOff".

2.- Environment
GCP with Ubuntu LTS 18.04. 4 CPUs and 8 GB memory.

3.- Some troubleshooting

i.- kubectl describe pod minio-0

Events:
Type Reason Age From Message


Warning FailedScheduling 5m1s default-scheduler persistentvolumeclaim "minio-pvc" not found
Normal Scheduled 4m51s default-scheduler Successfully assigned spinnaker/minio-0 to minnak
er
Normal Pulled 4m11s kubelet Successfully pulled image "minio/minio" in 38.871
741781s
Normal Pulled 3m49s kubelet Successfully pulled image "minio/minio" in 398.24
3525ms
Normal Pulled 3m12s kubelet Successfully pulled image "minio/minio" in 362.38
4058ms
Normal Pulled 2m47s kubelet Successfully pulled image "minio/minio" in 357.34
6151ms
Normal Created 2m47s (x4 over 3m51s) kubelet Created container minio
Normal Started 2m47s (x4 over 3m51s) kubelet Started container minio
Warning BackOff 2m19s (x7 over 3m28s) kubelet Back-off restarting failed container
Normal Pulling 2m5s (x5 over 4m50s) kubelet Pulling image "minio/minio"
Normal Pulled 2m5s kubelet Successfully pulled image "minio/minio" in 369.44
3169ms

ii.- kubectl logs minio-0
/bin/sh: /usr/bin/minio: No such file or directory

iii.- I tried the workaround described in issue #99, but it didn't work

kubectl apply -f $BASE_DIR/infrastructure/minio.yml

Note: I replaced for my own base directory.
Then:

kubectl delete pod minio-0

And it fails with the same error.

Regards,
Luis.

Task: Set up Spinnaker to deploy to EC2

Configure Spinnaker with an AWS account, including documentation for a repeatable way to set this up, and how to set up a pipeline that bakes and deploys.

Use SQL instead of Minio

The SQL backend is more aligned with the future direction of Spinnaker, and also supports versioning.

Update installation architecture: tarball

As discussed in #31, gonna refactor to deliver as a tarball which can be extracted.

In the tarball will be:

  • install.sh (or some shell script)
  • directories containing scaffolded out templates
  • other things?

Additional SDLC Tooling - Continuous Integration

Looking at the market, we have had a few of our Minnaker users express interest in having a CI solution bundled into the Minnaker install to make it easier to manage. We want to investigate what it would look like to have something like Jenkins or Concourse CI automatically integrated with Minnaker. We would ❤️to get some additional feedback from our community if you think this would be valuable.

halyard container doesn't come up macos

using macos installer in a separate base directory, the following error comes from a kubectl describe after the installer attempts to deploy the halyard container

Warning FailedCreate 3m23s (x23 over 41m) statefulset-controller create Pod halyard-0 in StatefulSet halyard failed error: Pod "halyard-0" is invalid: [spec.volumes[0].hostPath.path: Invalid value: "../plugins-test/.hal": must not contain '..', spec.volumes[1].hostPath.path: Invalid value: "../plugins-test/.kube": must not contain '..', spec.containers[0].volumeMounts[0].name: Not found: "hal", spec.containers[0].volumeMounts[1].name: Not found: "kube"]

The installation was suspended

Hi
I tried to install the minnaker on Ubuntu 18.04 LTS, Ubuntu 20LTS but got the following error:

#journalctl -f -u k3s
18 14:27:58 free k3s[5653]: E0618 14:27:58.706925 5653 pod_workers.go:191] Error syncing pod 313ba60e-3908-44c5-bf52-29e14013188d ("spinnaker-operator-7b755b8789-2jn6d_spinnaker-operator(313ba60e-3908-44c5-bf52-29e14013188d)"), skipping: failed to "StartContainer" for "halyard" with CrashLoopBackOff: "back-off 5m0s restarting failed container=halyard pod=spinnaker-operator-7b755b8789-2jn6d_spinnaker-operator(313ba60e-3908-44c5-bf52-29e14013188d)"

Move docs to Wiki

Wiki a little easier to edit and maintain. than having to go through git workflow.

Task: Externalize Services

For AWS, configure Minnaker to use S3, Aurora, Elasticache
This should include how to set up the external services, and how to configure Spinnaker to use them

Task: Load Testing (K8s)

See how Minnaker performs when connected to 100 Kubernetes accounts, each with at least 50 managed objects.

Error running the all.sh script

Here's the output that I received when running the all.sh script:

Waiting for Halyard daemon to start
Waiting for Halyard daemon to start
+ Get current deployment
  Success
+ Edit Spinnaker version
  Success
Problems in halconfig:
- WARNING There is a newer version of Halyard available (1.6.5),
  please update when possible
? Run 'sudo apt-get update && sudo apt-get install
  spinnaker-halyard -y' to upgrade

+ Spinnaker has been configured to update/install version "2.15.0".
  Deploy this version of Spinnaker with `hal deploy apply`.
+ Get current deployment
  Success
+ Prep deployment
  Success
Problems in halconfig:
- WARNING There is a newer version of Halyard available (1.6.5),
  please update when possible
? Run 'sudo apt-get update && sudo apt-get install
  spinnaker-halyard -y' to upgrade

+ Preparation complete... deploying Spinnaker
+ Get current deployment
  Success
- Apply deployment
  Failure
- Deploy spin-redis
  Failure
- Deploy spin-clouddriver
  Failure
- Deploy spin-front50
  Failure
! Deploy spin-orca
  Interrupted
- Deploy spin-deck
  Failure
- Deploy spin-echo
  Failure
- Deploy spin-gate
  Failure
- Deploy spin-rosco
  Failure
Problems in Global:
! ERROR Failed check for Namespace/spinnaker in null
The connection to the server 127.0.1.1:6443 was refused - did you specify the
  right host or port?



- Failed to deploy Spinnaker.
24.*.*.*
admin
dneimgFsntqkSz6+TW0+5Xs6t9P7VeSEl7jwSSZskaM=
+ sudo kubectl get pods -n spinnaker --watch
NAME                       READY   STATUS    RESTARTS   AGE
svclb-spin-deck-lb-msgf2   1/1     Running   0          97s
svclb-spin-gate-lb-mlg7v   1/1     Running   0          97s

The 24.*.*.* IP is the external to my network IP, not the external to my node. I'm not sure this has an effect on anything, but I'm going to retry with the IP overridden to be the node's IP.

error with The connection to the server localhost:8080 was refused - did you specify the right host or port when installing minnaker

gabriel@gebi:~/gitspace/learn-spinnaker/local/minnaker-0.1.3$ ./scripts/install.sh
[INFO ] Using Armory Spinnaker
[INFO ] Running minnaker setup for Linux
[INFO ] Cloning repo: https://github.com/armory/spinnaker-kustomize-patches#minnaker into /home/gabriel/gitspace/learn-spinnaker/local/minnaker-0.1.3/spinsvc
[WARN ] /home/gabriel/gitspace/learn-spinnaker/local/minnaker-0.1.3/spinsvc exists already.  FOLDER CONTENTS WILL GET OVERWRITTEN!
[WARN ] PROCEEDING in 3 secs... (ctrl-C to cancel; use -B option to specify a different directory)
Cloning into '/home/gabriel/gitspace/learn-spinnaker/local/minnaker-0.1.3/spinsvc'...
remote: Enumerating objects: 1381, done.
remote: Counting objects: 100% (221/221), done.
remote: Compressing objects: 100% (169/169), done.
remote: Total 1381 (delta 106), reused 110 (delta 49), pack-reused 1160
Receiving objects: 100% (1381/1381), 422.31 KiB | 3.04 MiB/s, done.
Resolving deltas: 100% (787/787), done.
[INFO ] Installing yq
[INFO ] Installing jq
[INFO ] Trying to detect endpoint
[INFO ] No cloud metadata endpoint detected, detecting interface IP (and storing in /home/gabriel/gitspace/learn-spinnaker/local/minnaker-0.1.3/spinsvc/secrets/public_ip): <masked my public IP>
[INFO ] Generating password [/home/gabriel/gitspace/learn-spinnaker/local/minnaker-0.1.3/spinsvc/secrets/spinnaker_password]:
<masked my password>
[INFO ] Updating spinsvc templates with new endpoint: 192.168.50.176
[INFO ] Creating spin_endpoint helper function
#!/bin/bash
#echo "$(kubectl get spinsvc spinnaker -n spinnaker -ojsonpath='{.spec.spinnakerConfig.config.security.uiSecurity.overrideBaseUrl}')"
echo "$(yq e '.spec.spinnakerConfig.config.security.uiSecurity.overrideBaseUrl' BASE_DIR/expose/patch-urls.yml)"
[[ -f BASE_DIR/secrets/spinnaker_password ]] && echo "username: 'admin'"
[[ -f BASE_DIR/secrets/spinnaker_password ]] && echo "password: '$(cat BASE_DIR/secrets/spinnaker_password)'"
[INFO ] --- Installing K3s ---
[INFO]  Using v1.19.7+k3s1 as release
[INFO]  Downloading hash https://github.com/k3s-io/k3s/releases/download/v1.19.7+k3s1/sha256sum-amd64.txt
[INFO]  Downloading binary https://github.com/k3s-io/k3s/releases/download/v1.19.7+k3s1/k3s
[INFO]  Verifying binary download
[INFO]  Installing k3s to /usr/local/bin/k3s
[INFO]  Skipping /usr/local/bin/kubectl symlink to k3s, already exists
[INFO]  Creating /usr/local/bin/crictl symlink to k3s
[INFO]  Skipping /usr/local/bin/ctr symlink to k3s, command exists in PATH at /usr/bin/ctr
[INFO]  Creating killall script /usr/local/bin/k3s-killall.sh
[INFO]  Creating uninstall script /usr/local/bin/k3s-uninstall.sh
[INFO]  env: Creating environment file /etc/systemd/system/k3s.service.env
[INFO]  systemd: Creating service file /etc/systemd/system/k3s.service
[INFO]  systemd: Enabling k3s unit
Created symlink /etc/systemd/system/multi-user.target.wants/k3s.service → /etc/systemd/system/k3s.service.
[INFO]  systemd: Starting k3s
[INFO ]  --- END K3s --- 
[INFO ] Setting Kubernetes context to Spinnaker namespace
Context "default" modified.
[INFO ] Spinnaker Operator Version: 1.2.7
[INFO ] Spinnaker flavor: armory
The connection to the server localhost:8080 was refused - did you specify the right host or port?
[ERROR] Unable to list namespaces of the kubernetes cluster:
[KUBE ] kubectl apply -f https://engineering.armory.io/manifests/pacrd-1.0.1.yaml -n spinnaker
[ERROR] Error executing command:
unable to recognize "https://engineering.armory.io/manifests/pacrd-1.0.1.yaml": Get http://localhost:8080/api?timeout=32s: dial tcp 127.0.0.1:8080: connect: connection refused
unable to recognize "https://engineering.armory.io/manifests/pacrd-1.0.1.yaml": Get http://localhost:8080/api?timeout=32s: dial tcp 127.0.0.1:8080: connect: connection refused
unable to recognize "https://engineering.armory.io/manifests/pacrd-1.0.1.yaml": Get http://localhost:8080/api?timeout=32s: dial tcp 127.0.0.1:8080: connect: connection refused
unable to recognize "https://engineering.armory.io/manifests/pacrd-1.0.1.yaml": Get http://localhost:8080/api?timeout=32s: dial tcp 127.0.0.1:8080: connect: connection refused
unable to recognize "https://engineering.armory.io/manifests/pacrd-1.0.1.yaml": Get http://localhost:8080/api?timeout=32s: dial tcp 127.0.0.1:8080: connect: connection refused
unable to recognize "https://engineering.armory.io/manifests/pacrd-1.0.1.yaml": Get http://localhost:8080/api?timeout=32s: dial tcp 127.0.0.1:8080: connect: connection refused
unable to recognize "https://engineering.armory.io/manifests/pacrd-1.0.1.yaml": Get http://localhost:8080/api?timeout=32s: dial tcp 127.0.0.1:8080: connect: connection refused
unable to recognize "https://engineering.armory.io/manifests/pacrd-1.0.1.yaml": Get http://localhost:8080/api?timeout=32s: dial tcp 127.0.0.1:8080: connect: connection refused
unable to recognize "https://engineering.armory.io/manifests/pacrd-1.0.1.yaml": Get http://localhost:8080/api?timeout=32s: dial tcp 127.0.0.1:8080: connect: connection refused
unable to recognize "https://engineering.armory.io/manifests/pacrd-1.0.1.yaml": Get http://localhost:8080/api?timeout=32s: dial tcp 127.0.0.1:8080: connect: connection refused
unable to recognize "https://engineering.armory.io/manifests/pacrd-1.0.1.yaml": Get http://localhost:8080/api?timeout=32s: dial tcp 127.0.0.1:8080: connect: connection refused

ldap setup in spinnaker operator

I'm looking for the way that you would run and configure things that used to use hal to config spinnaker now that we switched to the spinnaker operator model.

spin-terraformer fails into CrashLoopBackoff

First, I have to apply the minio patches as described in #99. Did it like this: https://github.com/Nirusu/spinnaker-kustomize-patches/tree/minnaker

Still, the spin-terraformer pod appears to be broken too currently. Cannot find out exactly what's broken yet and if it works on "normal" Spinnaker, but I am getting this error message here on a almost vanilla Ubuntu 20.04.3 Server VM in VirtualBox:

minnaker-spin-transformer-error

Is this an issue by minnaker using some unpinned package and the branch being outdated, or something else?

spinnaker-operator not resolving localhost correctly

When using multipass on OSX localhost inside k3s containers returns the OSX hosts IP instead of 127.0.0.1. This is due to the multipass vm's /etc/resolve.conf being used by CoreDNS and it contains search localdomain. Running nslookup localhost inside the spinnaker-operator container returns the OSX host IP which means that communication between the operator container and the halyard container fails.

As a workaround, before I ran ./scripts/install.sh -o I copied /etc/resolv.conf inside multipass to /home/ubuntu/resolv.conf, removed search localdomain and changed nameserver to 8.8.8.8, result looks like this:

nameserver 8.8.8.8
options edns0

I then updated this line and added K3S_RESOLV_CONF="/home/ubuntu/resolv.conf":

  curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="--tls-san $(cat ${BASE_DIR}/secrets/public_ip)" INSTALL_K3S_VERSION="v1.19.7+k3s1" K3S_KUBECONFIG_MODE="644" K3S_RESOLV_CONF="/home/ubuntu/resolv.conf" sh -

After this I ran ./scripts/install.sh -o and it successfully launches Spinnaker.

Prometheus setup scripts can't exec after yq update to v4

After yq update to v4, minnaker/scripts/addons/install_prometheus.sh can't be exec normally,

71 #yq m -i ${BASE_DIR}/prometheus/custom/prometheus.yaml ${BASE_DIR}/prometheus/custom/patch.yml
72 yq eval-all -i 'select(fi == 0) * select(filename == "'${BASE_DIR}'/prometheus/custom/patch.yml")' ${BASE_DIR}/prometheus/custom/prometheus.yaml ${BASE_DIR}/prometheus/custom/patch.yml
73
74 #yq d -i ${BASE_DIR}/prometheus/custom/prometheus.yaml spec.serviceMonitorSelector
75 yq eval -i 'del(.spec.serviceMonitorSelector)' ${BASE_DIR}/prometheus/custom/prometheus.yaml

404 while downloading operator manifest

I got an error while downloading the manifest:

[INFO ] Downloading operator from https://github.com/armory/spinnaker-operator/releases/download/v/manifests.tgz

After a while I got the error, because there is only a v in the url and no version or latest string.
I checked the spinsvc/deploy.sh script and saw that it should replace that automatically. But on my Ubuntu server it did not.
When I set the SPIN_OP_VERSION=1.2.5 variable before I executed the install script it worked.

Is that a bug or just a fail in my case?
Or did I miss something in the installation docs?

Unable to install using the docs

I am trying to install spinnaker all in one setup following the instructions. However my install script fails with the below error.
When i looked further, it seems that CRDS folder doesn't exist when applying the spinnaker operator.

./scripts/install.sh -o -P $Public_IP
[INFO ] Using OSS Spinnaker
[INFO ] Using OSS Spinnaker
[INFO ] Running minnaker setup for Linux
[INFO ] Cloning repo: https://github.com/armory/spinnaker-kustomize-patches#minnaker into /home/ubuntu/spinnaker/minnaker-0.1.3/spinsvc
[WARN ] /home/ubuntu/spinnaker/minnaker-0.1.3/spinsvc exists already.  FOLDER CONTENTS WILL GET OVERWRITTEN!
[WARN ] PROCEEDING in 3 secs... (ctrl-C to cancel; use -B option to specify a different directory)
Cloning into '/home/ubuntu/spinnaker/minnaker-0.1.3/spinsvc'...
remote: Enumerating objects: 1964, done.
remote: Counting objects: 100% (650/650), done.
remote: Compressing objects: 100% (274/274), done.
remote: Total 1964 (delta 400), reused 548 (delta 356), pack-reused 1314
Receiving objects: 100% (1964/1964), 549.72 KiB | 9.82 MiB/s, done.
Resolving deltas: 100% (1116/1116), done.
[INFO ] Installing yq
[INFO ] Installing jq
[INFO ] Trying to detect endpoint
[INFO ] Using provided public IP A.B.C.D
[INFO ] Generating password [/home/ubuntu/spinnaker/minnaker-0.1.3/spinsvc/secrets/spinnaker_password]:
*****RANDOM***Paswword****
[INFO ] Updating spinsvc templates with new endpoint: A.B.C.D
[INFO ] Creating spin_endpoint helper function
#!/bin/bash
#echo "$(kubectl get spinsvc spinnaker -n spinnaker -ojsonpath='{.spec.spinnakerConfig.config.security.uiSecurity.overrideBaseUrl}')"
echo "$(yq e '.spec.spinnakerConfig.config.security.uiSecurity.overrideBaseUrl' BASE_DIR/expose/patch-urls.yml)"
[[ -f BASE_DIR/secrets/spinnaker_password ]] && echo "username: 'admin'"
[[ -f BASE_DIR/secrets/spinnaker_password ]] && echo "password: '$(cat BASE_DIR/secrets/spinnaker_password)'"
[INFO ] --- Installing K3s ---
[INFO]  Using v1.19.7+k3s1 as release
[INFO]  Downloading hash https://github.com/k3s-io/k3s/releases/download/v1.19.7+k3s1/sha256sum-amd64.txt
[INFO]  Skipping binary downloaded, installed k3s matches hash
[INFO]  Skipping installation of SELinux RPM
[INFO]  Skipping /usr/local/bin/kubectl symlink to k3s, already exists
[INFO]  Skipping /usr/local/bin/crictl symlink to k3s, already exists
[INFO]  Skipping /usr/local/bin/ctr symlink to k3s, already exists
[INFO]  Creating killall script /usr/local/bin/k3s-killall.sh
[INFO]  Creating uninstall script /usr/local/bin/k3s-uninstall.sh
[INFO]  env: Creating environment file /etc/systemd/system/k3s.service.env
[INFO]  systemd: Creating service file /etc/systemd/system/k3s.service
[INFO]  systemd: Enabling k3s unit
Created symlink /etc/systemd/system/multi-user.target.wants/k3s.service → /etc/systemd/system/k3s.service.
[INFO]  No change detected so skipping service start
[INFO ]  --- END K3s --- 
[INFO ] Setting Kubernetes context to Spinnaker namespace
Context "default" modified.
[INFO ] Spinnaker Operator Version: 
[INFO ] Spinnaker flavor: oss
[INFO ] Changing spinnaker flavor...Done
[INFO ] Resolved operator namespace: spinnaker-operator
[INFO ] Deploying oss operator...
[INFO ] Downloading operator from https://github.com/armory/spinnaker-operator/releases/download/v/manifests.tgz
[KUBE ] kubectl apply -f /home/ubuntu/spinnaker/minnaker-0.1.3/spinsvc/operator/deploy/crds/
[ERROR] Error executing command:
error: the path "/home/ubuntu/spinnaker/minnaker-0.1.3/spinsvc/operator/deploy/crds/" does not exist[KUBE ] kubectl apply -f https://engineering.armory.io/manifests/pacrd-1.0.1.yaml -n spinnaker
[ERROR] Error executing command:
Warning: apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
Error from server (NotFound): error when creating "https://engineering.armory.io/manifests/pacrd-1.0.1.yaml": namespaces "spinnaker" not found
Error from server (NotFound): error when creating "https://engineering.armory.io/manifests/pacrd-1.0.1.yaml": namespaces "spinnaker" not found
Error from server (NotFound): error when creating "https://engineering.armory.io/manifests/pacrd-1.0.1.yaml": namespaces "spinnaker" not found
Error from server (NotFound): error when creating "https://engineering.armory.io/manifests/pacrd-1.0.1.yaml": namespaces "spinnaker" not found
Error from server (NotFound): error when creating "https://engineering.armory.io/manifests/pacrd-1.0.1.yaml": namespaces "spinnaker" not found
ubuntu@ip-172-31-41-23:~/spinnaker/minnaker-0.1.3$ ls -lrth /home/ubuntu/spinnaker/minnaker-0.1.3/spinsvc/operator/deploy/crds
ls: cannot access '/home/ubuntu/spinnaker/minnaker-0.1.3/spinsvc/operator/deploy/crds': No such file or directory
ubuntu@ip-172-31-41-23:~/spinnaker/minnaker-0.1.3$ 
ubuntu@ip-172-31-41-23:~/spinnaker/minnaker-0.1.3$ cd /home/ubuntu/spinnaker/minnaker-0.1.3/spinsvc/operator
ubuntu@ip-172-31-41-23:~/spinnaker/minnaker-0.1.3/spinsvc/operator$ ls
halyard-local.yml  kustomization.yml  patch-config.yaml  patch-validations.yaml

What am i missing here? Or is this documentation too old to be ignored.

Task: Multiple pods

Document how to set up Spinnaker with multiple instances of each pod, with set resource limits and requests

'/api/v1/' missing in Swagger-ui page URLs

In the the Swagger UI page (at https://<MY_IP>/api/v1/swagger-ui.html), the URL used to test the endpoints (the one displayed in the curl command) is incorrect because it does not include /api/v1 subpath before the endpoint. Consequently, it is impossible to test the API with this Swagger page.

e.g. with the GET /applications in "application-controller" :

curl -X GET "https://<MY_IP>/applications" -H "accept: */*"

instead of

curl -X GET "https://<MY_IP>/api/v1/applications" -H "accept: */*"

RFC: Minnaker overhaul with Spinnaker Operator

Background:

Minnaker was originally written with Halyard in mind. So majority of the scripts involve modifying files used by Halyard (~/.hal/default/...) and making calls to Halyard (hal config ...)

Now, the Spinnaker Operator has become the standard method of configuring Spinnaker.

Furthermore, we have https://github.com/armory/spinnaker-kustomize-patches that provides many examples.

Lastly, Halyard is going away in the near future.

Goal:

Update this repo to utilize spinnaker-kustomize-patches as a foundation for deploying / configuring spinnaker

Discussion:

How much do we overhaul this repo and how?
How much do we keep?

Task: Load Test: AWS EC2

Configure Minnaker to talk to AWS with 100x AWS accounts (can be same account 100x times), and see what happens

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.