EKS CI/CD環境のためのkubectlの設定方法
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を渡して実行します。スクリプトの第一引数にはクラスター名を受け取るようにしています。