ICTSC2025 本戦 問題解説: [3106] くばねてすでティータイム

問題文

概要

あなたは、Giteaを使ってGitサーバーを構築することにしました。
せっかくなのでKubernetesを使うことにしたあなたは、K3sをインストールしました。

あなたはデータを保存するため、K3sとは別ノードにNFSサーバーを構築し、
K3sクラスタにはnfs-subdir-external-provisionerをデプロイしました。

最後にGiteaをデプロイしましたが、思ったように動いていないようです。

制約

  • Giteaのデータ永続化には、必ず192.168.6.3のNFSサーバーとnfs-subdir-external-provisionerを利用すること。例として以下のようなものは禁止だが、これらに限らない。
    • PersistentVolume手動作成
    • hostPath、emptyDirや、NFS以外のプロビジョナー(local-path等)の利用

初期状態

  • GiteaのPodがRunning状態ではなく、アクセスできない

終了状態

  • GiteaのPodがRunning状態であり、アクセスできる
  • 初期セットアップ画面にて、画面下部のInstall Giteaボタンを押し、正常にセットアップが完了している
  • ノードを再起動してもGiteaのデータが失われず、再起動後に接続すると初期セットアップ画面ではなくGiteaのホーム画面が表示される

解説

この問題では、以下のようなトラブルが発生していました。

  • k8s ノードにnfs-commonが入っていない
    • sudo apt install nfs-common
  • gitea-data PVCをtypoしている
    • gitea-date から gitea-data に修正する
  • gitea-data PVCのstorageClassNameを間違えている
    • nfs-subdir から nfs-client に修正する
  • NFSサーバーの/etc/exports/exports/k8sno_root_squashが書かれていないが、exportされたディレクトリがroot:root755になっており、permission deniedになる
    • 以下のような解決方法がある
      • no_root_squashの追加
      • /exports/k8sのownerをnobody:nogroupに変更
      • /exports/k8sのpermissionを777に変更

採点基準

  • 終了条件を満たしている(60%)
  • 報告書に書かれた手順で、問題を解決できる(40%)

講評

出るエラーを順番に解決すればいいので、解きやすい問題だったのではないでしょうか。
NFS Exportの部分に制約をつけるともう少し面白かったかな、と思います。