😺

Ubuntu24.04(WSL2)で開発環境を構築するための作業メモ②

2024/01/03に公開

WSL2のUbuntu22.04に開発環境を構築したときの作業メモ②

  • docker
  • kubectl
  • kind
  • minikube
  • istioctl

Docker Engineのインストール

Docker Engineをインストールする

公式サイトの通りに進めていく。

https://docs.docker.com/engine/install/ubuntu/

  1. パッケージ一覧をアップデート
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg lsb-release


  1. 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


  1. リポジトリを更新する
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


  1. 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をインストールする

公式サイトの通りに進めていく。

https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/

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


.kube/configの参照を設定する

echo 'export KUBECONFIG="/mnt/c/Users/<username>/.kube/config"' >> ~/.bashrc
source ~/.bashrc


(オプション)azureを使用している場合

sudo snap install kubelogin
kubelogin convert-kubeconfig -l azurecli


kubectlの入力補完設定

kubectlの入力補完を設定する

https://kubernetes.io/ja/docs/reference/kubectl/cheatsheet/#bash

source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc


helmのインストール

helmをインストールする

https://helm.sh/ja/docs/intro/install/

curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3

chmod 700 get_helm.sh

./get_helm.sh

Kindのインストール

Kindをインストールする

Kindをインストールする。

https://kind.sigs.k8s.io/docs/user/quick-start/

# For AMD64 / x86_64
[ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.24.0/kind-linux-amd64

chmod +x ./kind
sudo mv ./kind /usr/local/bin/kind

kind --version


KindでKubernetes Clusterを作成・削除

  1. K8Sクラスターの作成
# --nameを省略した場合は、既定の名前で作成される
kind create cluster --name <cluster name>

# 作成したK8S Clusterの一覧
kind get clusters


  1. K8Sクラスターの削除
# --nameを省略した場合は、既定の名前のClusterが削除される
kind delete cluster --name <cluster name>


MetalLBのインストール

LocalでLoad Balancerを使用したいのでMetalLBをインストールする。

https://metallb.universe.tf/installation/
https://metallb.universe.tf/configuration/
https://kind.sigs.k8s.io/docs/user/loadbalancer/

  1. MetalLBをインストール
kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.14.8/config/manifests/metallb-native.yaml


  1. ロードバランサが使用するアドレスプールを取得する

DockerのネットワークIPを確認する

docker network inspect kind --format '{{json (index .IPAM.Config 0).Subnet}}'


  1. 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のインストール

公式サイトの通りに進める。
https://minikube.sigs.k8s.io/docs/start/

  1. minikubeのインストール
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube


  1. minikubeでk8sクラスターを起動する

たぶん、defaultのドライバー(docker)で問題はでないはず。

minikube start

minikubeは、tunnelコマンドでLoadBalancerが使えるからMetalLBは使わなくても当面問題なさそう。


  1. minikubeを停止・削除する
# 停止
minikube stop

# 削除
minikube delete


istioctlのインストール

istioctlをダウンロードする

基本的に公式サイトの通りに進めていけばよい。
https://istio.io/latest/docs/setup/getting-started/#download

curl -L https://istio.io/downloadIstio | sh -

パスを通しておく。

echo 'export PATH=$PATH:$HOME/istio-1.23.2/bin' >> $HOME/.profile

source $HOME/.profile


以上、ここまで。

Discussion