投稿が遅れました
はじめに
Codespaces
便利ですね。 超簡単に開発環境が手に入ります。
ちょっと触ってみたら。。Docker
が入ってる! それならk3d
でKubernetes
の開発環境が作れる!!
ということでやってみました。
codespace
上でDemoアプリ
を開発して、codespace
内のKubernetes
環境にデプロイしてデモを実行します。 ↓こんな感じです。
デモ環境用リポジトリ
以下をお試しされる方は↑をフォークして下さい。
注)突貫で作ったのでバグがあるのとリファクタリングできてません。。おいおいやっていきます。
GitHub Codespaces
GitHub CodespacesはGithubのリポジトリ上のソースコードを開発対象として、カスタマイズ可能なVSCodeベースの開発環境を提供するクラウドサービスです。
'github'画面の[Code]
ボタンから4-core 8GB RAMのCodespaceを作成します。
Kubernetes
環境
小さなKubernetes
ディストリビューションにはMinikube
,kind
,Microk8s
などがありますが、ここではk3d
を使います。
k3dは一つのDocker環境上でマルチノードなKubernetes環境を稼動させるツールです。軽量Kubernetes環境のk3sをコンテナ内で動かし、それを複数起動することでマルチノードを実現しています。コンテナの中でコンテナを動かす二重構造となり、外側がノード、内側がPodを構成します。
Codespaces
のカスタマイズ機能だけで各種ツールのインストールができてしまいますが(後で気付きましたw)、投稿ではMakefileを使ってやってみます。
ターミナルを開き、make create-cluster
を実行します。
bin
ディレクトリを作成し、k3d
,kubectl
,helm
をダウンロードした後、k3d
でノード3つのkubernetes
クラスタが作成されます。
@oruharo ➜ /workspaces/k8s-demo (main) $ make create-cluster
:
binにパスを通すためmake console
を実行してから状態を確認します。
@oruharo ➜ /workspaces/k8s-demo (main) $ make create-cluster
@oruharo ➜ /workspaces/k8s-demo (main) $ kubectl cluster-info
Kubernetes control plane is running at https://localhost:43000
CoreDNS is running at https://localhost:43000/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Metrics-server is running at https://localhost:43000/api/v1/namespaces/kube-system/services/https:metrics-server:https/proxy
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
@oruharo ➜ /workspaces/k8s-demo (main) $ kubectl get node
NAME STATUS ROLES AGE VERSION
k3d-my-k8s-server-0 Ready control-plane,master 1m v1.24.4+k3s1
k3d-my-k8s-agent-0 Ready <none> 1m v1.24.4+k3s1
k3d-my-k8s-agent-1 Ready <none> 1m v1.24.4+k3s1
Demoアプリ
ビルド&デプロイ
ターミナルからmake install-k8s-viewer
を実行します。
gitレポジトリ上のDemoアプリをビルドして、k3d上のimageリポジトリにpushします。
@oruharo ➜ /workspaces/k8s-demo (main) $ make install-k8s-viewer
:
Demoアプリ
ブラウザで開く
ポート画面を開き、k3d-lb(15000)のローカルアドレスをブラウザで開きます。
Demoアプリ
実行
ターミナルからmake demo
を実行します。
@oruharo ➜ /workspaces/k8s-demo (main) $ make demo
:
ターミナル上でpodのデプロイコマンド等が順次実行され、Podの状態がデモ画面に反映されます。
終わりに
時間切れで解説できてないです。。おいおい追記していきます。
実行しているコマンドの詳細はMakefileに書いてます。