---
# System prepended metadata

title: Spinnaker

---

# Spinnaker

### Pre-Requirements

- kubernates context configuration file to a valid cluster
- aws user with s3 bucket read and write access
- aws s3 bucket


### Install Halyard

Run Halyard via docker container:
```shell
docker run --name halyard --rm \
    -p 8084:8084 -p 9000:9000 \
    -v ~/.hal:/home/spinnaker/.hal -it \
    --net host \
    gcr.io/spinnaker-marketplace/halyard:stable
```

Log into container:
```shell
docker exec -it halyard bash
```

Run initial commands in the container:
```shell
source <(hal --print-bash-completion)
cd
mkdir .kube
```

### Choose Cloud Providers

Copy `kube.config` to the container:
```shell
docker cp kube.config halyard:/home/spinnaker/.kube/config
```

Enable kubernates provider:
```shell
hal config provider kubernetes enable

CONTEXT=$(kubectl config current-context)

hal config provider kubernetes account add my-k8s-v2-account \
    --provider-version v2 \
    --context $CONTEXT

hal config features edit --artifacts true
```

### Choose your Environment

This selects the kubernetes cluster to deploy spinnaker, skip if will want to deploy local:

```shell
hal config deploy edit --type distributed --account-name $ACCOUNT
```

### Configure Storage Service

#### Run minio


```shell
docker run -p 9000:9000 -v /mnt/data:/data minio/minio server /data
MINIO_SECRET_KEY=`echo $(sudo docker exec minio cat /data/.minio.sys/config/config.json) | jq -r '.credential.secretKey'`
MINIO_ACCESS_KEY=`echo $(sudo docker exec minio cat /data/.minio.sys/config/config.json) | jq -r '.credential.accessKey'`
```

#### Setup storage service

Configure s3 storage, dont type the access-key, the command will prompt for it:
```shell
echo $MINIO_SECRET_KEY | hal config storage s3 edit \
    --access-key-id $MINIO_SECRET_KEY \
    --region us-east-1 \
    --secret-access-key

hal config storage edit --type s3
```

### Configure Authentication

```shell
hal config security authn ldap edit \
    --url ldap://ldap.uolcorp.intranet:389
    --manager-dn "${MANAGER_DN}"
    --user-search-filter "${SEARCH_FILTER}"
    --user-search-base "${SEARCH_BASE}"
    --manager-password

hal config security authn ldap enable
```

### Configure URLs
```shell
hal config security api edit \
  --override-base-url http://${API_URL}:8084

hal config security ui edit \
  --override-base-url http://${UI_URL}:9000
```

### Deploy

Select version and deploy Spinnaker:
```shell
hal version list
hal config version edit --version $VERSION
hal deploy apply
echo "host: 0.0.0.0" | tee \
    ~/.hal/default/service-settings/gate.yml \
    ~/.hal/default/service-settings/deck.yml
hal deploy apply
hal deploy connect
```

Access in the browser: http://localhost:9000