😺
Ubuntu22.04(WSL2)で開発環境を構築するための作業メモ②
WSL2のUbuntu22.04に開発環境を構築したときの作業メモ②
- docker
- kubectl
- kind
- minikube
- istioctl
Docker Engineのインストール
Docker Engineをインストールする
公式サイトの通りに進めていく。
- パッケージ一覧をアップデート
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release
- Docker の公式 GPG キーを取得する
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
- リポジトリを更新する
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
- Docker Engine のインストール
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
docker version
dockerの権限設定
sudo 無しでdockerを実行させるため、Docker Group にユーザーを所属させる。
getent group | grep docker
sudo usermod -aG docker $USER
# 一旦 exit でログアウトする。
exit
再度ログインすると sudo 無しで docker を操作できるようになっている(はず)。
kubectlのインストール
kubectlをインストールする
公式サイトの通りに進めていく。
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"
echo "$(cat kubectl.sha256) kubectl" | sha256sum --check
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
kubectl version --client
kubectlの入力補完設定
kubectlの入力補完を設定する
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc
Kindのインストール
Kindをインストールする
Kindをインストールする。
公式サイトの通りなのだが、2023/12時点で、最新バージョンだとうまく起動できなかったので、v0.20.0
➨ v0.19.0
にダウングレードしてインストーする。
# For AMD64 / x86_64
# [ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.20.0/kind-linux-amd64
[ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.19.0/kind-linux-amd64
chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind
kind --version
KindでKubernetes Clusterを作成・削除
- K8Sクラスターの作成
# --nameを省略した場合は、既定の名前で作成される
kind create cluster --name <cluster name>
# 作成したK8S Clusterの一覧
kind get clusters
- K8Sクラスターの削除
# --nameを省略した場合は、既定の名前のClusterが削除される
kind delete cluster --name <cluster name>
MetalLBのインストール
LocalでLoad Balancerを使用したいのでMetalLBをインストールする。
- MetalLBをインストール
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.12/config/manifests/metallb-native.yaml
- ロードバランサが使用するアドレスプールを取得する
DockerのネットワークIPを確認する
docker network inspect kind --format '{{json (index .IPAM.Config 0).Subnet}}'
- deploy用のyamlを作成して、適用する
- metallb-docker-ips.yamlを作成
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: ip-pool
namespace: metallb-system
spec:
addresses:
- 172.18.0.0/16 # DockerのネットワークIP
autoAssign: true
---
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
name: lb-2-ad
namespace: metallb-system
spec:
ipAddressPools:
- ip-pool
- デプロイする
kubectl apply -f metallb-docker-ips.yaml
minikubeのインストール
公式サイトの通りに進める。
- minikubeのインストール
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
- minikubeでk8sクラスターを起動する
たぶん、defaultのドライバー(docker)で問題はでないはず。
minikube start
minikubeは、tunnel
コマンドでLoadBalancerが使えるからMetalLBは使わなくても当面問題なさそう。
- minikubeを停止・削除する
# 停止
minikube stop
# 削除
minikube delete
istioctlのインストール
istioctlをダウンロードする
基本的に公式サイトの通りに進めていけばよい。
curl -L https://istio.io/downloadIstio | sh -
パスを通しておく。
echo 'export PATH=$PATH:$HOME/istio-1.20.1/bin' >> $HOME/.profile
source $HOME/.profile
以上、ここまで。
Discussion