【第378回】フリーダムITもくもく会【夜活】に参加してみた!

イベント

扇風機にあーって言う季節がやってきました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をインストール。

役割は次のイメージ

比較項目eksctlkubectl
役割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-1kubectl get podskubectl 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つの部屋

コンテナ = その部屋の中にいる人(アプリケーションプロセス)

はい。

結果は時間内に構築完了せずでした。

別の機会に技術系の記事で👍

コメント

error: 選択できません。
タイトルとURLをコピーしました