Spinnaker + Kayentaのデプロイ

`hal`コマンドでcanary機能を有効にするとKayentaもデプロイされます。

## 環境
minikubeは[メモリ割り当てを20GBに設定](https://qiita.com/loftkun/items/7400d5ae0e7b1fb7d26e)しています(defaultの2GBでは動きません)

```bash
$ uname -a
Linux mina 4.13.0-45-generic #50-Ubuntu SMP Wed May 30 08:23:18 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=17.10
DISTRIB_CODENAME=artful
DISTRIB_DESCRIPTION="Ubuntu 17.10"
$ minikube version
minikube version: v0.25.2
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"9", GitVersion:"v1.9.2", GitCommit:"5fa2db2bd46ac79e5e00a4e6ed24191080aa463b", GitTreeState:"clean", BuildDate:"2018-01-18T10:09:24Z", GoVersion:"go1.9.2", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"", Minor:"", GitVersion:"v1.9.4", GitCommit:"bee2d1505c4fe820744d26d41ecd3fdd4a3d6546", GitTreeState:"clean", BuildDate:"2018-03-21T21:48:36Z", GoVersion:"go1.9.1", Compiler:"gc", Platform:"linux/amd64"}
$ hal -v
1.5.0-20180713143726
$
```

## canary機能有効化
[Set up canary support](https://www.spinnaker.io/setup/canary/)を参考に。

```bash
$ hal config canary enable
$ hal config canary edit --default-metrics-store prometheus
$ hal config canary edit --default-metrics-account my-canary-metrics-account
$ hal config canary edit --default-storage-account my-canary-storage-account
```

AWSは使用していませんがS3互換のminioをKayentaが使用できるように有効化します(これをしないとKayentaが動かない)。
minioは別途`helm install stable/minio`等でデプロイしておきます。
minioのエンドポイントやaccessKey、secretAccessKeyは直接`~/.hal/config`を編集して設定を追記しています。
参考) https://community.spinnaker.io/t/canary-and-foolproof-install/290/15

``` bash
$ hal config canary aws enable
$ # ドキュメント通りのこの引数だとbucket名が--deploymentになってしまうので後でvimで修正します
$ hal config canary aws account add my-canary-aws-account --bucket --deployment --no-validate
$ hal config canary aws edit --s3-enabled true
$ # Halyardのconfigを編集
$ # 1 bucketを適切な名前(例：my-canary-bucket)にします。
$ #   minioにも予めその名前でバケットを作成しておく必要があります。
$ #   ( 作成しておかないとminioが動かない)
$ # 2 以下行を新規追加します(halコマンドでできないの？)
$ #   endpoint : minioのエンドポイント
$ #   accessKeyId : minioのaccessKey
$ #   secretAccessKey : minioのsecret accessKey
$ vim ~/.hal/config
( 略 : )
  canary:
    enabled: true
( 略 : )
    - name: aws
      enabled: true
      accounts:
      - name: my-canary-aws-account
        bucket: my-canary-bucket
        rootFolder: kayenta
        endpoint: http://my-minio.default.svc.cluster.local:9000
        accessKeyId: AKIAIOSFODNN7EXAMPLE
        secretAccessKey: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
        supportedTypes:
        - OBJECT_STORE
        - CONFIGURATION_STORE
      s3Enabled: true
( 略 : )
$ 
```

prometheusのメトリクスを使用する場合の設定例

```bash
$ hal config canary prometheus enable
$ hal config canary prometheus account add my-canary-prometheus-account --base-url http://prometheus.istio-system.svc.cluster.local:
```

## デプロイ

```bash
$ hal deploy apply
$ kubectl get po -n spinnaker
NAME                                    READY     STATUS    RESTARTS   AGE
spin-clouddriver-bootstrap-v000-4hnr6   1/1       Running   0          48m
spin-clouddriver-v000-jqs7b             1/1       Running   0          47m
spin-deck-v000-hn25f                    1/1       Running   0          47m
spin-echo-v000-hgsmw                    1/1       Running   0          47m
spin-front50-v000-dclsk                 1/1       Running   1          47m
spin-gate-v000-2d6vx                    1/1       Running   0          47m
spin-igor-v000-dggjd                    1/1       Running   0          47m
spin-kayenta-v000-tjdqw                 1/1       Running   0          47m
spin-orca-bootstrap-v000-8nnkt          1/1       Running   0          48m
spin-orca-v000-rr8cc                    1/1       Running   0          47m
spin-redis-bootstrap-v000-q6kzs         1/1       Running   0          49m
spin-redis-v000-4qrgl                   1/1       Running   0          47m
spin-rosco-v000-xqcvk                   1/1       Running   0          47m
$
```