6
2

More than 1 year has passed since last update.

GitHub Codespacesを使ったKubernetes開発環境

Last updated at Posted at 2022-12-13

投稿が遅れました:bow_tone1:

はじめに

Codespaces便利ですね。 超簡単に開発環境が手に入ります。
ちょっと触ってみたら。。Dockerが入ってる! それならk3dKubernetesの開発環境が作れる!!
ということでやってみました。

codespace上でDemoアプリを開発して、codespace内のKubernetes環境にデプロイしてデモを実行します。 ↓こんな感じです。
image.png

デモ環境用リポジトリ

以下をお試しされる方は↑をフォークして下さい。
注)突貫で作ったのでバグがあるのとリファクタリングできてません。。おいおいやっていきます。

GitHub Codespaces

GitHub CodespacesはGithubのリポジトリ上のソースコードを開発対象として、カスタマイズ可能なVSCodeベースの開発環境を提供するクラウドサービスです。

'github'画面の[Code]ボタンから4-core 8GB RAMのCodespaceを作成します。

image.png

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)のローカルアドレスをブラウザで開きます。
image.png

Demoアプリ 実行

ターミナルからmake demoを実行します。

@oruharo ➜ /workspaces/k8s-demo (main) $ make demo
     :

ターミナル上でpodのデプロイコマンド等が順次実行され、Podの状態がデモ画面に反映されます。

image.png

終わりに

時間切れで解説できてないです。。おいおい追記していきます。
実行しているコマンドの詳細はMakefileに書いてます。

6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2