富士通クラウドテクノロジーズのサマーインターンに参加してきた
donkoです。
8月末から9月頭にかけての3週間、富士通クラウドテクノロジーズ(以下FJCT)の長期サマーインターンに行ってきました。
就活を意識してはいなかったのですが、 一つぐらいインターンに行きたかったのと、 単位を取らないといけなかったので応募してみたところ通りました。
応募〜当日
きっかけ
元々、アルバイトでクラウドを触ることが多かったので、インターンもクラウド開発系にしようと思っていました。
せっかく夏休みを削って行くので、個人であまりできないようなことがしたい、と思いFJCTに応募しました。
応募は魔法のスプレッドシートのリンクから行いました。
選考
Googleフォームに色々書いた気がするのですが、何を書いたのか忘れました。
確かVMやインフラ運用などの選択肢からどれをやりたいか、という質問でクラウドプラットフォーム開発を選んで、 Github, QiitaのURLを貼った気がします1 。
状況開始
ニフクラ触ったことがなかった2ので、まずはニフクラに慣れることからはじめようと思いました。
しかし、インターンの準備にトラブルがあったようでアカウントの配給が遅れるということだったので、 先に社員さんから今回のインターンでやることの概要の説明を受けました。
やること
ニフクラのサービスの一つにhatobaというものがあります。
今回のインターンではこれに関連して、Kubernetesサービスの開発を行うことになり、 Cluster APIのプロバイダーとしてニフクラ版を実装するという課題を扱うことになりました。 具体的にはCluster APIでクラウド上にk8sクラスタを作ろう、という目標でした。
Kubernetestは触ったことしかなかったので、その内部構造についてはほとんど知りませんでした。 また、Cluster APIについても初めて聞いたので、まずは調査することから始めました。
さらに、CRDやcotroller-runtimeなど他のプロジェクトなどについても適宜キャッチアップを進めました。
Cluster API
Cluster APIはkubernetes-sigsのプロジェクトの一つで、宣言的なAPIを使ってKubernetesのクラスタを管理することができるプロジェクトです。
アーキテクチャは以下のようになっています。
CLIツールからBootstrapというクラスタが作成され、そこにCustom ResourceとCustom Controllerがデプロイされます。 クラウド上で新しく作成したクラスタにこれらのリソースとコントローラーをデプロイすることで、クラウドにk8sクラスタが作成されます。
いざ実装
環境構築も終わらせて、インターン2週目はひたすら実装をしていました。
開発を進めていくと、sigs.k8s.ioの開発速度の凄まじさを肌で感じることができました。 関連ツールが昨晩のうちにメジャーアップデートしていたり、Cluster APIにいつの間にかコミットが追加されていたりと、 k8s開発がたった今行われていることを実感できました。
実装に関しては、他のプロバイダーの実装を参考にしました。 だいたいどこも、Kubernetesの動作の処理(Reconciliation Loopなど)を外部パッケージに任せているため、 必要なインターフェースを実装していく形だったので、見通しはよかったです。
ニフクラのAPIを叩くだけかと思いきや、なかなかに実装が重たかったです3。 特にMachine Controller周りは処理が多く、デバッグ中に抜けている処理があることに気づくことが多々ありました。
最終週に動作確認とデバッグを行い、実際にクラウド上にkubectl apply
したリソースが作成された時はちょっと感動しました。
会社の雰囲気とか
インターン生の業務時間は10:00〜17:45でした。つくば住みに10:00は辛い。。。
お昼休みは12:00〜13:00で、12:00と17:45になるとチャイムが鳴ります。 初めは、きっちりしすぎでは?と思っていましたが、 作業に区切りがつくので、詰まった時に役立ちましたw
メンターさんはとても優しく、質問や相談にいつでも快く応じてくれました。 社員の皆さんも一緒にお昼ご飯に行ったり、気さくに話しかけてくださったりと終始楽しい雰囲気でした(語彙力)。
また、最終日には同じ開発部門の皆さんから拍手で見送られました。あったかい。
最後に
少し辛い時もありましたが、目標はなんとか(?)達成できたので、成果を残せてよかったかなとホッとしています。 また、k8s開発に興味を持つことができましたし、その最先端を垣間見ることができたのはいい経験だったと感じています。
3週間ありがとうございました!!
こぼれ話
Cluster APIにはBookが提供されていて、プロバイダーの作成に関する説明が書かれていました。 しかし、インターンの最終日前日にコミットが追加されていてBookが真っ白に... 1週間前にやられていたらと思うと...寒気が。
あと関連パッケージの開発もどんどん進んでいるので、バージョン管理がはちゃめちゃになって大変でした。
Go Modulesでreplace
で指定できなくもないのですが、数が多いので初めの方はこのあたりの問題解決でわちゃわちゃしていましたw
写真
ご飯
銀座の相場は1000円ぐらいでした。 昼ごはんにしてはちょっと高いですが、 築地に近いためか海鮮系のご飯も揃っていたり、 料亭のランチをいただけたりと、クオリティーも高かった印象です。
部活
メンターさんがとてもアクティブで、いくつかの部活に参加させていただきました。