扇風機にあーって言う季節がやってきましたw
システムエンジニアの知見を広げるためにイベントに参加します。そしてインフラ周りの知見を深めるために初参加でEKS関連のサービスをこの黙々会中に構築・勉強していこうじゃないかと。システムエンジニア特に私の場合、社内SEなので簡単に言うと何でも屋なわけです。インフラもフロントも物理もクラウドも触るのです。
数時間しかないこの緊張感の中構築できるかな?コンテナはECSの基礎程度の知識なので不安もありつつ楽しみます😂なんせ初参加なので緊張気味ですが人間皆一緒です。楽しむのです。
詳しい技術要素は別記事で👍
イベントの概要をお伝えできればと。
参考にした記事は次のリンクです。
https://catalog.us-east-1.prod.workshops.aws/workshops/f5abb693-2d87-43b5-a439-77454f28e2e7/ja-JP/010-create-cloud9
少し古い記事だけれど応用すればよいのです。ちょちょいのちょいで😒
参加者は今回多いのか少ないのか4人。
Discordから参加して
数名のメンバーからの宣言が流れ、さっそくAWS EKSにサンプルアプリデプロイをかまします。
既にClou9が存在しないことは無視するんです。

適当にコンテナ作成用として小さいAlmaLinux9を立てて
EC2にAdministratorロールをあたっち
クラスター作成のためEKSの画面へ
初体験😍

まずまず、今接続中のクラスター管理用サーバにeksctlをインストール
kubectl
をインストール。
役割は次のイメージ
比較項目 | eksctl | kubectl |
---|---|---|
役割 | EKS クラスターの作成・削除・構成管理 | Kubernetes クラスタ上のリソース操作・監視・制御 |
主な用途 | – EKSクラスタの新規作成- NodeGroup管理など | – Pod / Deployment / Service などの作成・操作 |
操作対象 | AWS リソース(EKS, EC2, IAMなど) | Kubernetes API(クラスタ内部のオブジェクト) |
実体 | AWS公式ではないが公式に推奨されているツール | Kubernetes 公式 CLI ツール |
AWS依存 | はい(EKS 専用) | いいえ(すべての Kubernetes クラスタに使える) |
実行タイミング | クラスタ構築時、ノード管理、クラスター設定変更時 | クラスタ構築後、日常的なアプリ管理や監視で使う |
例コマンド | eksctl create cluster --name dev --region ap-northeast-1 | kubectl get pods kubectl apply -f app.yaml |
ここまでをまとめますと、
「クラスターは、コンテナを動かす“工場”」
「eksctl
は工場を建てる建設業者、kubectl
は工場のリモコン」こげな感じ
20分くらいクラスター作成に時間を要すので各種便利ツールをインストール。
jq、bash-completion、docker compose、kubectl
のコマンド補完、eksctl
のコマンド補完、docker
コマンドの補完。
# EPEL リポジトリを有効化
dnf install -y epel-release
# moreutils をインストール
dnf install -y moreutils
# 最新の Docker Compose バージョンを取得
COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest \
| grep '"tag_name":' \
| sed -E 's/.*"v([^"]+)".*/\1/')
# Docker CLI プラグイン用のディレクトリを作成
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p "$DOCKER_CONFIG/cli-plugins"
# docker-compose バイナリをダウンロードして配置
curl -SL "https://github.com/docker/compose/releases/download/v${COMPOSE_VERSION}/docker-compose-linux-x86_64" \
-o "$DOCKER_CONFIG/cli-plugins/docker-compose"
# 実行権限を付与
chmod +x "$DOCKER_CONFIG/cli-plugins/docker-compose"
kubectl completion bash > kubectl_completion
mv kubectl_completion /etc/bash_completion.d/kubectl
eksctl completion bash > eksctl_completion
mv eksctl_completion /etc/bash_completion.d/eksctl
curl -L -o /etc/bash_completion.d/docker https://raw.githubusercontent.com/docker/cli/master/contrib/completion/bash/docker
つづけまっせ。
k=kubectl
のエイリアス設定
# ~/.bashrc に kubectl の短縮コマンド alias を追加
echo 'alias k="kubectl"' >> ~/.bashrc
# 補完機能を有効にする設定を追加(kコマンドにkubectlの補完を適用)
echo 'complete -o default -F __start_kubectl k' >> ~/.bashrc
# 設定をすぐに反映させる
source ~/.bashrc
kube-ps1,kubectl のコンテキストや Namespace をプロンプトに表示してくれる便利なツール
プロンプトをよくするやつ
# kube-ps1 プロンプトツールをクローン
dnf install -y git
git clone https://github.com/jonmosco/kube-ps1.git ~/.kube-ps1
# .bashrc に設定を追記して、kube-ps1 を有効化
echo 'source ~/.kube-ps1/kube-ps1.sh' >> ~/.bashrc
# クラスター名を簡略表示する関数を定義
echo 'function get_cluster_short() {' >> ~/.bashrc
echo ' echo "$1" | cut -d . -f1' >> ~/.bashrc
echo '}' >> ~/.bashrc
# kube-ps1 の表示設定
echo 'KUBE_PS1_CLUSTER_FUNCTION=get_cluster_short' >> ~/.bashrc
echo 'KUBE_PS1_SUFFIX=") "' >> ~/.bashrc
echo 'PS1="$(kube_ps1)$PS1"' >> ~/.bashrc
# 変更を即反映
source ~/.bashrc
kubectl のコンテキストや Namespace の切替を容易にしてくれる便利なツールkubectx
# kubectx & kubens をクローン(クラスタ/namespace切り替えツール)
git clone https://github.com/ahmetb/kubectx.git ~/.kubectx
# 補完スクリプトを bash の補完ディレクトリに配置(シンボリックリンク)
ln -sf ~/.kubectx/completion/kubens.bash /etc/bash_completion.d/kubens
ln -sf ~/.kubectx/completion/kubectx.bash /etc/bash_completion.d/kubectx
# ~/.bashrc に PATH を追加してコマンドを使えるようにする
echo 'export PATH=$HOME/.kubectx:$PATH' >> ~/.bashrc
# 変更を即反映
source ~/.bashrc
コンテナのログを確認するのに便利なツール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
mv /tmp/stern /usr/local/bin
~/.bashrc
に追記した設定などを有効化
. ~/.bashrc
. /etc/profile.d/bash_completion.sh
. /etc/bash_completion.d/kubectl
. /etc/bash_completion.d/eksctl
. /etc/bash_completion.d/docker
コンテナを触る上で知っておこう!
Namespace
Pod = 1つの部屋
コンテナ = その部屋の中にいる人(アプリケーションプロセス)
はい。

結果は時間内に構築完了せずでした。
別の機会に技術系の記事で👍
コメント