Travis-CIでEKSのデプロイフローを整備していたのですが、kubectlのセットアップが結構面倒だったので、メモとしてインストールスクリプトを残しておきます。

実行環境

  • Travis-CI(Ubuntu)
    パッケージ管理ツールを使っていないので、他のLinux環境でも動くはず…


主に作業は /tmp で実施して成果物を $HOME/bin に配置、パスを通して実行する形式です。
Kustomizeを使って環境構築を行なっていたため、ついでにKustomizeのインストールも行なっていますが、必要なければインストールの工程を削除して大丈夫です。

#!/bin/bash

set -e

EKS_CLUSTER_NAME=$1
WORK_DIR='/tmp'

# awscli install
cd $WORK_DIR
pip install --user awscli

# kubectl install
## https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/install-kubectl.htm://docs.aws.amazon.com/ja_jp/eks/latest/userguide/install-kubectl.html
cd $WORK_DIR
curl -o kubectl https://amazon-eks.s3-us-west-2.amazonaws.com/1.10.3/2018-07-26/bin/linux/amd64/kubectl
curl -o kubectl.sha256 https://amazon-eks.s3-us-west-2.amazonaws.com/1.10.3/2018-07-26/bin/linux/amd64/kubectl.sha256
diff <(sha256sum kubectl | awk '{print $1}') <(cat kubectl.sha256 | awk '{print $1}')
chmod +x ./kubectl
mkdir -p $HOME/bin && cp ./kubectl $HOME/bin/kubectl && export PATH=$HOME/bin:$PATH
echo 'export PATH=$HOME/bin:$PATH' >> ~/.bashrc

# aws-iam-authenticator install
## https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/install-aws-iam-authenticator.html
cd $WORK_DIR
curl -o aws-iam-authenticator https://amazon-eks.s3-us-west-2.amazonaws.com/1.10.3/2018-07-26/bin/linux/amd64/aws-iam-authenticator
curl -o aws-iam-authenticator.sha256 https://amazon-eks.s3-us-west-2.amazonaws.com/1.10.3/2018-07-26/bin/linux/amd64/aws-iam-authenticator.sha256
diff <(sha256sum aws-iam-authenticator | awk '{print $1}') <(cat aws-iam-authenticator.sha256 | awk '{print $1}')
chmod +x ./aws-iam-authenticator
cp ./aws-iam-authenticator $HOME/bin/aws-iam-authenticator

# kustomize install
## https://github.com/kubernetes-sigs/kustomize/blob/master/docs/INSTALL.md
cd $WORK_DIR
opsys=linux # or darwin, or windows
curl -s https://api.github.com/repos/kubernetes-sigs/kustomize/releases/latest |\
  grep browser_download |\
  grep $opsys |\
  cut -d '"' -f 4 |\
  xargs curl -O -L
mv kustomize_*_${opsys}_amd64 kustomize
chmod +x kustomize
cp ./kustomize $HOME/bin/kustomize

source $HOME/.bashrc
kubectl version --short --client
aws-iam-authenticator help
kustomize version

# kubectl setting
aws eks update-kubeconfig --no-verify --name $EKS_CLUSTER_NAME

awscliを使うにはもちろん認証情報が必要なため、あらかじめ環境変数でCredentialやProfileを渡して実行します。スクリプトの第一引数にはクラスター名を受け取るようにしています。