Kubernetes で Spinnaker を使う ~インストール編~

blog.hatappi.me

前回の記事でクラスタのPodがたくさん作れるようになったので今回は気になっていた Spinnaker をインストールして使ってみることにしました。

動機としては会社で Spinnaker を使っているのが理由です。
会社だとメンテナンスされた Spinnaker の上で自分はパイプラインを作るだけです。これ自体はとても良いのですが、個人的に自分が使うツールは自分でゼロからいれてみて試行錯誤したいので、今回はプライベートでメンテナンスしている Kubernetes にいれてみることにしました。

後はきっかけとしては下記のブログを読んだのもあります。

https://blog.spinnaker.io/announcing-the-spinnaker-kubernetes-operator-spinnaker-management-made-simple-8ea69fc3cf64

ただドキュメントにも書かれているように Operator は評価のために使うものみたいなので本番は Halyard を使ってインストールするのが良いみたいです。

spinnaker.io

インストール自体はドキュメント通りに Halyard (hal) をインストールして進めていくだけでした。

spinnaker.io

ただひとつハマったこととしては、Spinnaker の設定などを S3 にいれていたのですが、うまく権限が設定されておらず Pod の一部で Service: Amazon S3; Status Code: 403 が出ていました。
S3をStorageとして指定する時はドキュメントにもあるように s3:* の権限をもったユーザーの認証情報が必要です。

terraform だと下記のように指定して作成します。

resource "aws_iam_user" "spinnaker" {
  name = "spinnaker"
}

resource "aws_iam_user_policy" "spinnaker" {
  name = "spinnaker"
  user = aws_iam_user.spinnaker.name

  policy = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "s3:*"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}
EOF
}

後は hal コマンドで設定します。

$ hal config storage s3 edit \
    --bucket spinnaker-bucket-name \
    --access-key-id xxxx \
    --secret-access-key \
    --region ap-northeast-1

無事すべての Pod が起動した後は hal deploy connect するとフォワーディングされてブラウザで アクセスできるようになります。