VMware Fusion 13 playerでUbuntuを立ててminikube環境を構築したい

こんにちは、neo63です。
初めて記事を書くのに挑戦します。
メモをしつつ、記事の書き方を学ぼうと思います。

# 概要
VMやコンテナ、Docker、Kubernetesなどの理解を深めるために、
PCにそれぞれインストールして触ってみようと思いました。
せっかくなので、環境構築の手順をまとめておきます。


# 動作環境、使用バージョン
Macbook Air (m1) Ventura 13.4.1
VMware Fusion 13 player
Ubuntu Server for ARM 22.04.3 LTS
Docker 24.0.6
kubectl v1.28.3
minikube v1.32.0


# VMware Fusion 13 playerのダウンロード
VMwareにログインできない人は登録しておく→[登録画面](https://customerconnect.vmware.com/account-registration?source=dwnp&p=fusion-player-personal-13&loggedin=false)

[VMware Fusion 13](https://www.vmware.com/jp/products/fusion/fusion-evaluation.html)
1. 上記サイトの右下にある「個人利用ライセンスの登録」をクリック
1. 「I Have an Account」からログイン
1. 「Manually Download」を押下しダウンロード

# Ubuntuのダウンロード
~~[Ubuntu Downloadページ](https://jp.ubuntu.com/download)からUbuntu Desktop 22.04.3 LTSをダウンロードする~~
Ubuntu Desktopはx86アーキテクチャのため開けなかった。
したがって、ARM版があるUbuntu Serverをダウンロードする。
[Ubuntu Server for ARMダウンロードページ](https://ubuntu.com/download/server/arm?_ga=2.53452845.468859071.1697221848-2142253895.1697221848)からダウンロード

# VMware Fusion 13 playerのインストール
1. ダウンロードしたdmgファイルを開く
1. 「VWMare Fusion.app」をダブルクリックしてインストールする
1. 「同意する」を選択
1. 「無償のライセンスキーを取得」を選択
1. Webサイトに遷移する
1. License InformationのLICENSE KEYSの下にある文字列をコピー
1. ライセンスキーを入力する場所にペーストし、「続ける」を選択
1. 「完了」を押下
1. 「インストール方法を選択」画面が出るので、「ディスクまたはイメージからインストール」の場所にUbuntuのisoファイルをドラッグアンドドロップ
1. 「新しい仮想マシンを作成」画面に遷移する。
1. Ubuntuのisoファイルが選択された状態で「続ける」を押下
1. 「終了」画面に遷移する。
1. 「終了」を押下

その後は、以下2つのサイトを参考にUbuntu Serverのセットアップを完了する

https://www.server-memo.net/ubuntu/ubuntu-server-2004_install.html

https://zenn.dev/mesgory/articles/ffe5cc73fe5650

準備中...

# Ubuntu ServerをUbuntu Desktopにする（任意）
以下、サイトを参考にしてCUI仕様からGUI仕様に変える

https://4thsight.xyz/40719

# Ubuntu環境にssh接続する
準備中…

# Ubuntu上にDockerをインストールと動作確認
Kubernetesを触る前にDockerに触れておきたかったため、先にDockerをインストールする

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

上記サイトを参考にしてDockerをインストール

1. 古いバージョンがあると競合してしまうのでアンインストール

    ```bash
    for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done
    ```

1. Dockerの```apt```リポジトリを設定する

    ```bash
    # Add Docker's official GPG key:
    sudo apt-get update
    sudo apt-get install ca-certificates curl gnupg
    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

    # Add the repository to Apt sources:
    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の最新パッケージをインストール

    ```bash
    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    ```

1. イメージを実行してDockerのインストールが成功したことを確認

    ```bash
    sudo docker run hello-world
    ```
    下の画像のような「Hello from Docker!」から始まる文章が表示されれば成功
    ![Hello_from_Docker.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3575383/6c2fa4bf-4239-339d-dad7-30734cae4f55.png)

### Dockerコマンドをsudo権限なしで実行したい場合の手順

1. Dockerグループが存在しているか確認する。以下を実行してdockerという文字があったらOK

    ```bash
    less /etc/group
    ```

1. 無かったらグループを追加する。あったら以下は実行せず次の手順へ

    ```bash
    sudo groupadd docker
    ```

1. Dockerグループにユーザーを追加する

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

1. ```exit```コマンドで一度抜けて再起動。以下コマンドでsudo権限なしで実行できることを確認

    ```bash
    docker -v
    ```
    ```bash
    docker run hello-world
    ```

# Ubuntu上にminikube環境を構築していく
### kubectlのインストール
https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/

上記サイトを参考にして、kubectlをインストールする

1. ```curl```で最新リリースをダウンロードする。
下記コマンドを実行する
    ```bash
    curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/arm64/kubectl"
    ```

1. チェックサムファイルで正しくダウンロードできたか確認する（任意）
下記コマンドを実行してチェックサムファイルをダウンロード
    ```bash
    curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/arm64/kubectl.sha256"
    ```
    チェックサムファイルで1でダウンロードしたkubectlファイルを検証する
    ```bash
    echo "$(cat kubectl.sha256)  kubectl" | sha256sum --check
    ```
    下記のように出力されたらOK
    ```
    kubectl: OK
    ```
    チェックが失敗した場合は下記のように出力される
    ```
    kubectl: FAILED
    sha256sum: WARNING: 1 computed checksum did NOT match
    ```

1. kubectlをインストールする
下記コマンドを実行してインストールを完了する
    ```bash
    sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
    ```

1. インストール成功の確認

    ```bash
    kubectl version --client
    ```
    上記コマンドを実行して、下記のような出力がされればkubectlのインストール完了
    ```
    Client Version: v1.28.3
    Kustomize Version: v5.0.4-0.20230601165947-6ce0bf390ce3
    ```

### minikubeのインストール
https://minikube.sigs.k8s.io/docs/start/

上記サイトを参考にしてminikubeをインストールする
1. ```curl```で最新リリースをダウンロードする。
下記コマンドを実行する
    ```bash
    curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-arm64
    ```

1. minikubeをインストールする
下記コマンドを実行してインストールを完了する
    ```bash
    sudo install minikube-linux-arm64 /usr/local/bin/minikube
    ```

1. インストール成功の確認

    ```bash
    minikube version
    ```
    上記コマンドを実行して、下記のような出力がされればkubectlのインストール完了
    ```
    minikube version: v1.32.0
    commit: 8220a6eb95f0a4d75f7f2d7b14cef975f050512d
    ```

# あとは楽しむだけ！ 
以上で、minikube環境が構築できたと思います。
あとはコマンドを叩きまくって、いじりたおしてください。
一緒に楽しみましょ〜

# 参考サイト一覧
https://www.maclab.tokyo/document/vmware-fusion13-windows11/5634/

https://ubuntu.com/download/server/arm

https://www.server-memo.net/ubuntu/ubuntu-server-2004_install.html

https://zenn.dev/mesgory/articles/ffe5cc73fe5650

https://4thsight.xyz/40719

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

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

https://minikube.sigs.k8s.io/docs/start/