minikube環境構築

## 1. はじめに

minikube環境の構築手順を記載したもの

## 2. 手順詳細

### 2.1. サーバー準備

minikubeが必要となるスペックを満たす環境を準備する。
今回は、VirtualBox上にVM(4core, 8GB Memory, 100GB)を構築した。

> #### What you’ll need
> 
> - 2 CPUs or more
> - 2GB of free memory
> - 20GB of free disk space
> - Internet connection
> - Container or virtual machine manager, such as: Docker, QEMU, Hyperkit, Hyper-V, KVM, Parallels, Podman, VirtualBox, or VMware Fusion/Workstation

:::note info
コンテナ・VM mgrについてはDockerを使用した。
後述の手順でインストールするため、それ以外の項目を満たす環境を準備する。
:::

### 2.2. Ubuntu 24.04

[公式サイト](https://ubuntu.com/download/server)から、Ubuntu 24.04 Server ISOを取得し、インストールする。

### 2.3. openssh-server

OSインストール時にSSHサーバーがインストールされてない場合はインストールしておく。

```bash
$ sudo apt update
$ sudo apt install openssh-server
$ sudo systemctl enable ssh
$ sudo systemctl restart ssh
```

### 2.4. Docker 26.1.0

[公式ドキュメント](https://docs.docker.com/engine/install/ubuntu/)を参考にインストールする。

#### 2.4.1. Dockerインストール

```bash
$ sudo apt-get update
$ sudo apt-get install ca-certificates curl
$ sudo install -m 0755 -d /etc/apt/keyrings
$ sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
$ sudo chmod a+r /etc/apt/keyrings/docker.asc

$ echo \
 "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] 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
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```

#### 2.4.2. Docker Groupへの追加

[こちらを参考に](https://docs.docker.com/engine/install/linux-postinstall/)アカウントをdockerグループに追加する。
docker groupへの追加後、一度ログアウトして、再度ログインしておく。

```bash
$ sudo groupadd docker
$ sudo usermod -aG docker $USER
```

:::note warn
minikube起動時にdockerの操作権限が必要なようで、この設定をしないと[#7903](https://github.com/kubernetes/minikube/issues/7903)や[#8257](https://github.com/kubernetes/minikube/issues/8257)が発生した。
:::

### 2.5. minikube v1.33.0

[公式ドキュメント](https://minikube.sigs.k8s.io/docs/start/)を参考にインストールする。

#### 2.5.1. minikubeインストール

```bash
$ curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_amd64.deb
$ sudo dpkg -i minikube_latest_amd64.deb
```

#### 2.5.2. minikube起動

```bash
$ minikube start --cpus=4 --memory='4g'
$ minikube addons list
$ minikube addons enable ingress
```

:::note info
minikube startのオプションについては、defaultで2core, 2.2GBの割り当てとなっていたため変更した。
```bash
🔥  Creating docker container (CPUs=2, Memory=2200MB) ...
```
:::

### 2.6. kubectl v1.30.0

`minikute kubectl`コマンドを実行すると、kubectlコマンドがインストールされる。

```bash
$ minikube kubectl -- get pods -A
$ alias kubectl="minikube kubectl --"
```

### 2.7. Helm v3.14.2

[公式ドキュメント](https://helm.sh/docs/intro/install/)を参考にインストールする。

```bash
$ curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
$ sudo apt-get install apt-transport-https --yes
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
$ sudo apt-get update
$ sudo apt-get install helm
```

ここまででminikube環境構築は完了。

### 2.8. Cleanup

起動しているminikubeクラスタを削除する。
必要な際に、再度、`minikube start`コマンドで起動する。

```bash
$ minikube delete
```

## 3. 関連リンク

- https://ubuntu.com/download/server
- https://docs.docker.com/engine/install/ubuntu/
- https://minikube.sigs.k8s.io/docs/start/
- https://helm.sh/docs/intro/install/