【挫折】 Amazon EKS と spinnaker
基本はここを見てる
OSはUbuntu18.04を使用
初期設定
spinnakerのCloudFormationテンプレートでIAM等の初期設定をする
https://www.spinnaker.io/setup/install/providers/aws/aws-ec2/#option-1--use-aws-console-to-configure-aws ここのcloudformationをcreate-stackする
EKSの設定
https://www.spinnaker.io/setup/install/halyard/#install-on-debianubuntu-and-macos
HalyardはSpinnakerのオーケストレーションツールみたいなもの(たぶん)
$ curl -O https://raw.githubusercontent.com/spinnaker/halyard/master/install/debian/InstallHalyard.sh $ sudo bash InstallHalyard.sh $ hal -v
必要な環境変数を読み込む
先にcredentials設定を済ませます
~/.aws/credentials
にそれぞれキーとシークレットを追加
https://www.spinnaker.io/setup/install/providers/kubernetes-v2/aws-eks/#set-up-the-managing-account
--stack-name
にはCloudFormationのスタック名に置換
VPC_ID=$(aws cloudformation describe-stacks --stack-name spinnaker-managing-infrastructure-setup --query 'Stacks[0].Outputs[?OutputKey==`VpcId`].OutputValue' --output text) CONTROL_PLANE_SG=$(aws cloudformation describe-stacks --stack-name spinnaker-managing-infrastructure-setup --query 'Stacks[0].Outputs[?OutputKey==`SecurityGroups`].OutputValue' --output text) AUTH_ARN=$(aws cloudformation describe-stacks --stack-name spinnaker-managing-infrastructure-setup --query 'Stacks[0].Outputs[?OutputKey==`AuthArn`].OutputValue' --output text) SUBNETS=$(aws cloudformation describe-stacks --stack-name spinnaker-managing-infrastructure-setup --query 'Stacks[0].Outputs[?OutputKey==`SubnetIds`].OutputValue' --output text) MANAGING_ACCOUNT_ID=$(aws cloudformation describe-stacks --stack-name spinnaker-managing-infrastructure-setup --query 'Stacks[0].Outputs[?OutputKey==`ManagingAccountId`].OutputValue' --output text) EKS_CLUSTER_ENDPOINT=$(aws cloudformation describe-stacks --stack-name spinnaker-managing-infrastructure-setup --query 'Stacks[0].Outputs[?OutputKey==`EksClusterEndpoint`].OutputValue' --output text) EKS_CLUSTER_NAME=$(aws cloudformation describe-stacks --stack-name spinnaker-managing-infrastructure-setup --query 'Stacks[0].Outputs[?OutputKey==`EksClusterName`].OutputValue' --output text) EKS_CLUSTER_CA_DATA=$(aws cloudformation describe-stacks --stack-name spinnaker-managing-infrastructure-setup --query 'Stacks[0].Outputs[?OutputKey==`EksClusterCA`].OutputValue' --output text) SPINNAKER_INSTANCE_PROFILE_ARN=$(aws cloudformation describe-stacks --stack-name spinnaker-managing-infrastructure-setup --query 'Stacks[0].Outputs[?OutputKey==`SpinnakerInstanceProfileArn`].OutputValue' --output text)
シェルにするとこんなのになります
#!/bin/sh export VPC_ID=$(aws cloudformation describe-stacks --stack-name eks --query 'Stacks[0].Outputs[?OutputKey==`VpcId`].OutputValue' --output text) export CONTROL_PLANE_SG=$(aws cloudformation describe-stacks --stack-name eks --query 'Stacks[0].Outputs[?OutputKey==`SecurityGroups`].OutputValue' --output text) export AUTH_ARN=$(aws cloudformation describe-stacks --stack-name eks --query 'Stacks[0].Outputs[?OutputKey==`AuthArn`].OutputValue' --output text) export SUBNETS=$(aws cloudformation describe-stacks --stack-name eks --query 'Stacks[0].Outputs[?OutputKey==`SubnetIds`].OutputValue' --output text) export MANAGING_ACCOUNT_ID=$(aws cloudformation describe-stacks --stack-name eks --query 'Stacks[0].Outputs[?OutputKey==`ManagingAccountId`].OutputValue' --output text) export EKS_CLUSTER_ENDPOINT=$(aws cloudformation describe-stacks --stack-name eks --query 'Stacks[0].Outputs[?OutputKey==`EksClusterEndpoint`].OutputValue' --output text) export EKS_CLUSTER_NAME=$(aws cloudformation describe-stacks --stack-name eks --query 'Stacks[0].Outputs[?OutputKey==`EksClusterName`].OutputValue' --output text) export EKS_CLUSTER_CA_DATA=$(aws cloudformation describe-stacks --stack-name eks --query 'Stacks[0].Outputs[?OutputKey==`EksClusterCA`].OutputValue' --output text) export SPINNAKER_INSTANCE_PROFILE_ARN=$(aws cloudformation describe-stacks --stack-name eks --query 'Stacks[0].Outputs[?OutputKey==`SpinnakerInstanceProfileArn`].OutputValue' --output text)
EKSで使用するkubectlをインストール
https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/configure-kubectl.html
$ curl -o kubectl https://amazon-eks.s3-us-west-2.amazonaws.com/1.10.3/2018-07-26/bin/linux/amd64/kubectl $ chmod +x ./kubectl $ mkdir bin $ cp ./kubectl $HOME/bin/kubectl && export PATH=$HOME/bin:$PATH $ echo 'export PATH=$HOME/bin:$PATH' >> ~/.bashrc
EKSで使用する iam-authenticator をインストール
$ curl -O https://amazon-eks.s3-us-west-2.amazonaws.com/1.10.3/2018-07-26/bin/linux/amd64/aws-iam-authenticator $ chmod +x aws-iam-authenticator $ cp ./aws-iam-authenticator $HOME/bin/aws-iam-authenticator
EKSで使用するkubeconfigを作成
https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/create-kubeconfig.html
awscliで eks が使えなければ最新版入れましょう https://github.com/aws/aws-cli/releases
$ mkdir -p ~/.kube
kubeconfigを作る
apiVersion: v1 clusters: - cluster: server: <endpoint-url> certificate-authority-data: <base64-encoded-ca-cert> name: kubernetes contexts: - context: cluster: kubernetes user: aws name: aws current-context: aws kind: Config preferences: {} users: - name: aws user: exec: apiVersion: client.authentication.k8s.io/v1alpha1 command: aws-iam-authenticator args: - "token" - "-i" - "<cluster-name>" # - "-r" # - "<role-arn>" # env: # - name: AWS_PROFILE # value: "<aws-profile>"
<endpoint-url>
<base64-encoded-ca-cert>
<cluster-name>
をそれぞれ作成したEKSの情報に書き換える
作成したファイルを.kubeにいれる
$ mv kubeconfig ./.kube/config-<cluster-name> $ echo 'export KUBECONFIG=$KUBECONFIG:~/.kube/config-<cluster-name>' >> ~/.bashrc
デプロイ先のプロバイダを選択
https://www.spinnaker.io/setup/install/providers/
今回はECSを使う
# providerのリスト $ hal config provider $ hal config provider ecs
AWSのECSを使うアカウントを設定
https://www.spinnaker.io/setup/install/environment/
[ecs-account-name] はECSで利用するAWSのアカウントネーム [aws-account-name]は↑でなくspinnakerがAWSで使うアカウントネーム
$ hal config provider ecs account add [ecs-account-name] --aws-account [aws-account-name]
spinnakerをインストールする環境を選択
https://www.spinnaker.io/setup/install/environment/
強く推奨されている Distributed installation
を使いましょう
前項の aws-account-name を $ACCOUNT
にいれる
$ hal config deploy edit --type distributed --account-name [aws-account-name]
日記はここで途切れている
アップデートしたい