先月こういうことをやったので
今日は、もう少しちゃんと中身を理解しようとしてみようと思ったのであった。まずはSpinnakerをデプロイするところまで。
準備
1) spinnaker-tutorial
という名前のGKE用のクラスターを us-central1-f
に作成
gcloud config set compute/zone us-central1-f gcloud container clusters create spinnaker-tutorial \ --machine-type=n1-standard-2
こうかな
2) spinnaker-storage-account
というサービスアカウントを作成してロールを紐付ける
gcloud iam service-accounts create spinnaker-storage-account \ --display-name spinnaker-storage-account export SA_EMAIL=$(gcloud iam service-accounts list \ --filter="displayName:spinnaker-storage-account" \ --format='value(email)') export PROJECT=$(gcloud info --format='value(config.project)') gcloud projects add-iam-policy-binding \ $PROJECT --role roles/storage.admin --member serviceAccount:$SA_EMAIL
雰囲気で
3) そのサービスアカウントのキーを spinnaker-sa.json
というファイル名でダウンロードしておく
gcloud iam service-accounts keys create spinnaker-sa.json --iam-account $SA_EMAIL
Helmの設定
1) Helmをインストール
wget https://storage.googleapis.com/kubernetes-helm/helm-v2.7.2-linux-amd64.tar.gz tar zxfv helm-v2.7.2-linux-amd64.tar.gz cp linux-amd64/helm .
2) 自分にk8sの cluster-admin
ロールを紐付ける
kubectl create clusterrolebinding user-admin-binding --clusterrole=cluster-admin --user=$(gcloud config get-value account)
3) k8sで kube-system
ネームスペースに tiller
というサービスアカウントを作成して cluster-admin
ロールを紐付ける
kubectl create serviceaccount tiller --namespace kube-system kubectl create clusterrolebinding tiller-admin-binding --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
4) k8sで全ネームスペースにリソースをデプロイできるようにSpinnakerに cluster-admin
ロールを紐付ける
kubectl create clusterrolebinding --clusterrole=cluster-admin --serviceaccount=default:default spinnaker-admin
ん? default:default
がSpinnaker?よく分からん。
5) TillerをクラスターにインストールするためにHelmを初期化
./helm init --service-account=tiller ./helm update ./helm version # should be v2.7.2
Helmよく分からん。
いよいよSpinnakerをデプロイするぞー!
1) Spinnakerの設定を保存するためのバケットを作成
export PROJECT=$(gcloud info \ --format='value(config.project)') export BUCKET=$PROJECT-spinnaker-config gsutil mb -c regional -l us-central1 gs://$BUCKET
2) Spinnakerの設定ファイルを作成
export SA_JSON=$(cat spinnaker-sa.json) export PROJECT=$(gcloud info --format='value(config.project)') export BUCKET=$PROJECT-spinnaker-config cat > spinnaker-config.yaml <<EOF storageBucket: $BUCKET gcs: enabled: true project: $PROJECT jsonKey: '$SA_JSON' # Disable minio the default minio: enabled: false # Configure your Docker registries here accounts: - name: gcr address: https://gcr.io username: _json_key password: '$SA_JSON' email: 1234@5678.com EOF
設定の内容分からんぁ。
3) Spinnakerをデプロイ!
./helm install -n cd stable/spinnaker -f spinnaker-config.yaml --timeout 600 \ --version 0.3.1
4) デプロイしたSpinnakerにつなげられるようにする
export DECK_POD=$(kubectl get pods --namespace default -l "component=deck" \ -o jsonpath="{.items[0].metadata.name}") kubectl port-forward --namespace default $DECK_POD 8080:9000 >> /dev/null &
で、8080につなぐと見える。
分かっとらんこと
- Spinnaker用のロール紐付けの部分
- Helmの初期化
- HelmのSpinnaker設定ファイル
- Spinnakerのdeckというコンポーネント
あぁ、だめだ。花粉のあれでつらいしもう寝よう。おやすー。