Cloud9 を EKS 向けにセットアップ

Cloud9 環境を起動した後 EKS 向けに環境を整えるメモ。

ディスクサイズを拡張する方法は以下のドキュメントを参照。

AWS CLI を最新化する。

curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install
. ~/.bashrc

AWS CLI にリージョンを設定する。

AWS_REGION="ap-northeast-1"
aws configure set default.region ${AWS_REGION}

Cloud9 の一時的なクレデンシャルを無効化する (IAM ロールがアタッチされていることが前提) 。

aws cloud9 update-environment  --environment-id $C9_PID --managed-credentials-action DISABLE
rm -vf ${HOME}/.aws/credentials

eksctl を導入する。

curl -L "https://github.com/weaveworks/eksctl/releases/latest/download/eksctl_$(uname -s)_amd64.tar.gz" | tar xz -C /tmp
sudo mv /tmp/eksctl /usr/local/bin

kubectl を導入する。

sudo curl -L -o /usr/local/bin/kubectl https://s3.us-west-2.amazonaws.com/amazon-eks/1.24.10/2023-01-30/bin/linux/amd64/kubectl
sudo chmod +x /usr/local/bin/kubectl

helm を導入する。

curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

helmfile を導入する。

HELMFILE_VERSION=$(curl -s "https://api.github.com/repos/helmfile/helmfile/releases/latest" |
  grep '"tag_name":' |
  sed -E 's/.*"v([^"]+)".*/\1/'
)
curl -L "https://github.com/helmfile/helmfile/releases/download/v${HELMFILE_VERSION}/helmfile_${HELMFILE_VERSION}_linux_amd64.tar.gz" | tar xz -C /tmp
sudo mv /tmp/helmfile /usr/local/bin

helmfile を初期化する。

helmfile init --force

jq などいくつかのツールを導入する。

sudo yum -y install jq bash-completion tree gettext moreutils

各種ツールの補完を有効にする。

sudo curl -L -o /etc/bash_completion.d/docker https://raw.githubusercontent.com/docker/cli/master/contrib/completion/bash/docker
kubectl completion bash > kubectl_completion
sudo mv kubectl_completion /etc/bash_completion.d/kubectl
eksctl completion bash > eksctl_completion
sudo mv eksctl_completion /etc/bash_completion.d/eksctl
helm completion bash > helm_completion
sudo mv helm_completion /etc/bash_completion.d/helm
helmfile completion bash > helmfile_completion
sudo mv helmfile_completion /etc/bash_completion.d/helmfile

エイリアスを設定する。

cat <<"EOT" >> ${HOME}/.bashrc

alias k="kubectl"
complete -o default -F __start_kubectl k
alias ek="eksctl"
complete -o default -F __start_eksctl ek
EOT

kube-ps1 を導入する。

git clone https://github.com/jonmosco/kube-ps1.git ~/.kube-ps1
cat <<"EOT" >> ~/.bashrc

source ~/.kube-ps1/kube-ps1.sh
function get_cluster_short() {
  echo "$1" | cut -d . -f1
}
KUBE_PS1_CLUSTER_FUNCTION=get_cluster_short
KUBE_PS1_SUFFIX=') '
PS1='$(kube_ps1)'$PS1
EOT

kubectx/kubens を導入する。

git clone https://github.com/ahmetb/kubectx.git ~/.kubectx
sudo ln -sf ~/.kubectx/completion/kubens.bash /etc/bash_completion.d/kubens
sudo ln -sf ~/.kubectx/completion/kubectx.bash /etc/bash_completion.d/kubectx
cat <<"EOT" >> ~/.bashrc

export PATH=~/.kubectx:$PATH
EOT

stern を導入する。

STERN_VERSION=$(curl -s "https://api.github.com/repos/stern/stern/releases/latest" |
  grep '"tag_name":' |
  sed -E 's/.*"v([^"]+)".*/\1/'
)
curl -L "https://github.com/stern/stern/releases/download/v${STERN_VERSION}/stern_${STERN_VERSION}_linux_amd64.tar.gz" | tar xz -C /tmp
sudo mv /tmp/stern /usr/local/bin

設定が完了したら、ターミナルを開き直すこと。