レビュー

DOOMで敵を倒してKubernetesのPodを強制終了させまくれる「Kube DOOM」レビュー


コンテナオーケストレーションツールのKubernetesは、複数サーバーのリソースをまとめて利用可能にするインフラ技術です。Kubernetesはコンテナを「Pod」と呼ばれる単位で管理しており、Pod内のコンテナはストレージやIPアドレスを共有しています。そんなPodを世界的に人気のあるファーストパーソン・シューティングゲームDOOM」の敵を倒すことで強制終了し、システムの脆弱性を発見できるカオスエンジニアリングツールが「Kube DOOM」です。

GitHub - storax/kubedoom: Kill Kubernetes pods by playing Id's DOOM!
https://github.com/storax/kubedoom

DOOM内の敵キャラクター「デーモン」を倒し、KubernetesのPodを強制終了させているムービーが以下。

「Kube DOOM」で敵を倒してKubernetesのPodを強制終了させまくってみた - YouTube


Kube DOOMを手軽に体験するため、ローカル環境でKubernetesクラスターを構築できる「Kind」のセットアップを行います。Kindの利用にはDockerとkubectlが必要なので、以下のコマンドを実行して必要なソフトウェアをインストール。なお、今回はUbuntu 20.04をOSとして利用しています。

# Dockerのインストール
curl -fsSL https://get.docker.com -o get-docker.sh
sudo bash get-docker.sh

# kubectlのインストール
curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl"
sudo chmod +x kubectl
sudo mv kubectl /usr/local/bin


続いてKindのバイナリをダウンロードし、コマンドを実行できる場所に配置します。

curl -LO ./kind https://kind.sigs.k8s.io/dl/v0.9.0/kind-linux-amd64
sudo chmod +x kind
sudo mv kind /usr/local/bin


GitHubからKube DOOMをクローンし、用意されたKindの設定ファイルとKubernetesのマニフェストファイルを適用。

git clone https://github.com/storax/kubedoom.git
mv kubedoom
sudo kind create cluster --config kind-config.yaml
sudo kubectl apply -f manifest/


あとはVNCを利用して「localhost:5900」に接続ればOK。今回はVNCクライアントとしてRemminaを使用しています。


接続に必要なパスワードはDOOMのチートコードのひとつである「idbehold」となっています。


VNCサーバーに接続すると、DOOMの画面が表示されました。


キーボードによる操作は「CTRL」キーで射撃、十字キーで移動。


オープニング時の向かって左側に敵がいるので……


ひとまず倒します。


ダメージを軽減してくれるアーマーや、武器となるショットガンを入手。このように、ゲーム自体は1993年にリリースされた通常のDOOMと同じです。


しかし、ステージ右側に移動すると……


デーモンにPodの名称が割り当てられている異様な光景が現れます。


このデーモンはKubernetes上のPodに対応しており、デーモンを倒せばPodも強制終了させられるというわけです。なお、上部のPod情報は「watch -n 1 kubectl get pod -A」で表示しています。


というわけで、さっそくデーモンを倒していきます。


しばらく銃を乱射していると、ひとつのPodが終了しました。どうやらデーモンを1体倒せたようです。


しかし、Podはすぐさま同じものが再度作成されるので、デーモンも復活してしまいます。


「kubedoom」Podにあたるデーモンを倒してしまうと、VNC接続が中断されゲームが強制終了してしまいます。このようにして、Kube DOOMを使ってクラスターに脆弱な部分がないか確認できます。


ゲーム自体は通常のDOOMとまったく同じなので、チートコード「idspispopd」を入力し、「NO CLIPPING MODE」をオンにして……


壁などのオブジェクトをすり抜けデーモンと直接対決し、Podを強制終了させることも可能。


また、チートコード「idkfa」→「5」を入力すれば……


ロケットランチャーでデーモンを粉砕し、Podを強制終了させまくることもできます。

この記事のタイトルとURLをコピーする

・関連記事
GitLabがKubernetesをさまざまな課題に直面しながら1年間運用して学んだこと - GIGAZINE

ゲーム史に残る傑作FPS「DOOM」生みの親が語る「最近のFPSの問題点」とは? - GIGAZINE

Googleが生んだ「Kubernetes」がポケGOやメルカリを支えるほどの成功を収めた理由とは? - GIGAZINE

ゲーム史に革命を起こした名作「DOOM」の生みの親が25周年を記念してこれまでを振り返る - GIGAZINE

たった60秒でKubernetes環境を構築できる「MicroK8s」にHAクラスター機能が追加 - GIGAZINE

in レビュー,   ソフトウェア,   動画,   ゲーム, Posted by darkhorse_log

You can read the machine translated English article here.