🐶

KillerCodaで無料Kubernetesを遊び尽くす!

2024/05/31に公開

KillerCodaというサイトがあるのですが、こちらは無料でKubernetesを使えそうだったので色々試してみます!
https://killercoda.com/

なんとCKAやCKADの練習にもなる!というのが魅力的に感じました✨

KillerCodaの概要

ユーザーが既存のシナリオから学び、クリエイターとしてはあらゆるツールや技術を教えるためのシナリオを提供できることが特徴のサイトです。単に無料で遊べるというよりは、シナリオを作る・シェアする・学ぶというところがメインのようです。
それは無料/有料ユーザーの違いにも表れています。Nodeのスペックではなく、シナリオに関連する要素が課金対象となるようです。

Free User

  • シナリオ使用数は無限
  • パブリックシナリオは3つまで作成可能

PLUS Member(有料メンバー)

  • シナリオを4時間まで使用可能
  • 同時に3シナリオを開くことができる
  • Exam Remote Desktopを利用してCKA, CKS, CKADのシナリオを解くことができる
  • Captcha bot challengesをなしにすることができる
  • ロード時間が早くなり、キューをスキップすることができる
  • KillerCodaがやっていることを好きだと伝える
  • 優先サポート

私もシナリオを作ってみたので、後で紹介します。

まずは簡単に触ってみる

top画面です。四角い箱で一つ一つ並べられているのは、それぞれの環境で遊べることを示しています。

そう、このサイトはKubernetesに限らず色々な環境を使えるのです!Kubernetesの試験用の環境もありそうなのでいいですね。

例えばPlaygroundsをクリックしてみましょう

色々な環境で遊べそうですね。今回はKubernetes1.30という最新バージョンを試してみましょう。

ログインをしないと遊べないようです。アカウント作ってないのにログイン?と思われるかもしれませんが、アカウントがなくても全てログインからアカウント作成も行うようです。

好きな方法でアカウントを作成してください。

ログインしたら遊べるようになります!!しばらくすると以下のようなポップアップが出てきます。無料な代わりに1時間の時間制限がついています。

このクラスタのスペックは「2GBのNode2つ」と書かれています。「1Node 4GB」という環境もあるようなので、合計4GBの環境が使えるようですね。

kubectlがデフォルトで使えるのはもちろん、aliasでkがkubectlになっているようです!😂

以下のPodが立っているクラスタ環境のようです。

とりあえずUbuntu Podでも立ててみましょう。
以下のコマンドでUbuntuイメージを利用したPodを作成し、さらにコンテナ内のシェルを実行します。

kubectl run -i --tty --rm debug --image=ubuntu --restart=Never -- bash

うまくいきましたね。

シナリオを試してみる

ではシナリオを試してみましょう!今回はCKAD(Certified Kubernetes Application Developer)のシナリオを試してみましょう。この資格はKubernetesのアプリケーション開発者にとって良い資格だと思うので、興味ある方は受けてみてください。

まずはトップ画面に戻り、CKADと書かれたタイルをクリックします。

色々ありますが、少し下にスクロールして「Pod With Resources」というタイルをクリックしましょう。

「Solve in the Remote Desktop environment used in the real Linux Foundation exam」と書かれています。Exam Desktopタブをクリックすると以下の通り、有料プランに案内されます。試験環境と同じような環境を用意したい場合PLUSメンバーになってねということのようです。今回はFree Userなので、Tab1で問題を解いていきましょう。

Startボタンを押すと左側に問題がでてきます。ここに書かれている内容の通りに動かし、完了したらCheckボタンで正否判定をしてもらうようです。

Kubernetesが少しわかる方はぜひ問題を解いてみて欲しいのですが、ちょっとまだわからないという方は一旦以下のコマンドをコピペしてください。

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Namespace
metadata:
  name: limit
---
apiVersion: v1
kind: Pod
metadata:
  name: resource-checker
  namespace: limit
spec:
  containers:
  - name: my-container
    image: httpd:alpine
    resources:
      requests:
        memory: "30Mi"
        cpu: "30m"
      limits:
        memory: "30Mi"
        cpu: "300m"
EOF

すると以下の実行結果になります

controlplane $ cat <<EOF | kubectl apply -f -
> apiVersion: v1
> kind: Namespace
> metadata:
>   name: limit
> ---
> apiVersion: v1
> kind: Pod
> metadata:
>   name: resource-checker
>   namespace: limit
> spec:
>   containers:
>   - name: my-container
>     image: httpd:alpine
>     resources:
>       requests:
>         memory: "30Mi"
>         cpu: "30m"
>       limits:
>         memory: "30Mi"
>         cpu: "300m"
> EOF
namespace/limit created
pod/resource-checker created
controlplane $

この状態でCheckボタンを押すと右上に「Validation Successful」と出ます!おめでとうございます🥳🥳🥳

シナリオを作成してみよう

公式ドキュメントにかなり丁寧に書かれていますが、せっかくなのでここでも説明したいと思います!

流れはこんな感じです

  • GitHubリポジトリをKillercodaプロファイルに設定します
  • 特定のリポジトリ/ブランチにpushするたびにシナリオが更新されます
  • ユーザー入力の検証のために、例としてJSON、Markdown、およびBashを書くことができます

リポジトリを準備しよう

sampleリポジトリをそのまま使えるらしいですが、せっかくなので自分のリポジトリに必要なシナリオだけコピーしてきましょう。

どのシナリオをコピーしてきても動くのだと思いますが、今回はkubernetes-2node-multi-step-verificationを使ってみます。

自分用のリポジトリとしてkillercoda-scenarioというリポジトリを作りました。

リポジトリを登録しよう

  1. Creator Repositoryに先ほど作ったリポジトリを登録しましょう。

私の場合以下のようになります

  1. 続いて同じ画面のStep 2に書かれているDeploy keyをGitHubリポジトリのSettings>Deploy keys>Add deploy keyに貼り付けてkeyを足しましょう。

  2. 最後にpushするごとにシナリオを更新するためにWebhookを登録します。

Creator RepositoryのStep 3にかかれているPayload UrlとSecretを使います。

リポジトリのSettings>Webhooks>Add webhookをクリックし、先ほどのCreator Repositoryに書かれているPayload UrlとSecretをそれぞれ貼り付けます。

Content typeをapplication/jsonにするのを忘れずに設定しましょう。

シナリオが作成できていることを確認しましょう

My Scenariosにシナリオが追加されていることを確認しましょう!

追加されています!

シナリオをクリックするとちゃんと環境が起動します。

今回作成したシナリオはAoi Beerというユーザー名を検索すると出てくると思います。探してみてくださいね!

以上、KillerCodaの紹介でした!

今度「つくって、壊して」できるようなシナリオを作ってみたいと思います😆

Discussion