1
/
5

Wantedlyのインターンでkubeforkの体験をよくしてきた話

こんにちは!!

先日までDX Squad(DX: Developer eXperience)でインターンをしていた Junya です.今回は,インターンで取り組んだ課題とその成果を紹介させて頂きます.

取り組んだ課題

kubeという内製ツールの体験をより良くすることに取り組みました.kubeには,kubeforkと呼ばれる仮想的なクラスタを作成する仕組みがあるのですが,ある条件のもとでクラスタに接続できなくなってしまう問題が発生していました.

今回のインターンでは,この問題を解決することを目標にしました.

そもそもkube/kubeforkってなに??

Wantedlyではkubeと呼ばれる内製化ツールがあります.kubeとはkubectlのラッパーツールで,社内ではこれを用いてk8sクラスタのリソースを操作しています.詳しくは以下のスライドをご覧ください.

また,Wantedlyのバックエンドはいわゆる「マイクロサービスアーキテクチャ」を採用しています.マイクロサービスの開発では,ある一部分を変更しようと思っても関連するアプリケーションにまで気を遣う必要があって大変です.さらに,変更を確認するためにクラスタにデプロイを行うと,他の開発者に迷惑がかかってしまいます.これらの問題に解決するために「自分専用のk8sクラスタを持っているかのような開発環境」を作る仕組みができました.これがkubeforkです.詳しくは以下のスライドをご覧ください.

Wantedlyの開発者は,kube/kubeforkを用いて開発を行っています.

課題

kubeforkを行っている際にPCをスリープさせると,クラスタに接続できなくなってしまうという問題が起こっていました.

クラスタに接続ができなくなってしまうと,kubeforkを一度終了させる必要が出てしまいます.これは開発体験を損ねてしまうので,インターンを通してこの問題を改善することに取り組みました.

やったこと

今回のインターンでは,問題を解決するために,大きく3つのことを実施しました.

telepresenceのバージョンを更新した

kubeforkは内部的には telepresence を呼び出すことで仮想的なクラスタを作成しています.が,kubeでは 1年以上前のリリースの telepresence を使用していました.telepresenceのバージョンを更新することで,この問題が解決できそうだったのですが,更新しようとするといくつかの問題が発生することがわかっていました.

今回のインターンでは,telepresenceを更新したときに発生する問題に対処するため,さらに以下のような変更を加えました.

kubefork実行時の内部処理を変更した

kubeforkの内部処理では,公式には想定されていない(と思われる)方法でtelepresenceを呼び出すことを行っている箇所がありました.詳細は伏せますが,それに起因していると思われるバグが存在していたため,kubeforkの処理を変更することを行いました.

開発者の権限を変更した

telepresenceを更新すると,「Aさんはkubeforkができるが,Bさんはkubeforkができなくなる」という問題が発生しました.kubeforkができなくなるのは,telepresenceを使用する際に必要な権限が追加されたことに起因しているのですが,「admin権限を持っていると変わらずkubeforkできる」という極めて気が付きにくい問題が併せて発生していました.この問題はリリース後に表面化するため,telepresenceのバージョンを更新する上での大きな阻害となっていました.(つまり,telepresenceを更新するとkubeforkができなくなる声があがり,元に戻すことになる)

なので,更新した後もkubeforkができるように必要な権限を開発チーム全体に付与し,この問題を解決することができました.

まとめ

今回のインターンでは,kubeの開発体験をよくすることを目標に様々なことに取り組みました.主に

  • telepresenceのバージョンの更新
  • kubefork実行時の内部処理の変更
  • workloadの権限を変更

を行い,結果としてクラスタとの通信を切れにくくしました.惜しむらくは,インターン期間中にこの変更をmasterへ反映させきれなかったことです.

それでも実際に,「kubeforkの開発体験をよくする」ことは達成できたと思っています.

感想

Wantedlyのインターンでは,実際の開発現場で社員の方々と同じように働くことができ,非常に多くのことを学ぶことができました.特に「いくつもの解決策を出し,様々な面から判断してどの解決策を採用するのか考える」ことや「未知の難しい問題に対して筋道を立てて検証を行う」という力は大きな学びになりました.どちらもソフトウェアエンジニアリングを行う上で非常に重要なものだと思うので,今回のインターンを通して学ぶことができてよかったです.

また,社員の方々と交流する機会もたくさん用意していただき,幅広い分野のお話を聞くこともできました.オフィス周辺にはおいしいランチを食べることができる場所がたくさんあり,色々なものを食べることができました!!


インターン中においしいお寿司を食べることもできました🍣

3週間,有意義に,そしてとても楽しく過ごすことができました!!ありがとうございました!!

Invitation from Wantedly, Inc.
If this story triggered your interest, have a chat with the team?
Wantedly, Inc.'s job postings
11 Likes
11 Likes

Weekly ranking

Show other rankings
Like Junya Okabe's Story
Let Junya Okabe's company know you're interested in their content