import ayatokura as hack

「IT × 開発者支援」を通じて"エンジニアの幸福度"を高めるために人生をハックしながら学んだことをお届けします

【参加レポート】OpenShift.Run 2019 に参加して学んだこと 〜Operator 101〜

皆さん、こんにちは。職業「戸倉彩」です。

2019年12月20日(金)、東京・恵比寿のEBiS303にてOpenShiftにフォーカスしたOpenShift Community Japan主催の「OpenShift.Run 2019」イベントが開催されました。

今回は参加レポートと合わせて、ワタシの中でとても印象に残ったKubernetesの自動化の決め手となる「Operator 101」セッション内容について紹介していきたいと思います。

OpenShift Japan Communityとは

OpenShift Community Japanは、Red Hat社の有志メンバーとOpenShiftを実際に利用しているユーザーによって成り立っているテック系のコミュニティグループです。これまでにOpenShiftを軸に、関連するテクノロジーについても学べるOpenShift Meetupイベント(サテライト含む)を東京、大阪、名古屋、福岡で開催しています。常に運営メンバーも募集しているようなので、もし興味がある人は問い合わせしてみてください。

  • OpenShift Japan Community- connpass
    2019年12月22日現在、メンバー登録数: 861名。過去に開催されたOpenShift Meetupで発表された資料も公開されているので誰でも閲覧することができます。
  • OpenShift Japan Community - Twitter
    定期的にOpenShiftに関する情報発信やイベント開催時には現地からの実況中継が行われています。

OpenShift.Run 2019 とは

OpenShift Community Japanが主催し、企業スポンサーやメディアスポンサーによる協力によって開催されたコミュニティイベントです。「Red Hat OpenShift(以下、OpenShift)」について、最近知ったという人から本番環境でフル活用しているユーザー、パートナー、顧客、コントリビューターが集まって学びやネットワーキングする場が提供されました。過去に開催されたOpenShift Meetupと比べると400名規模という比較的大きなイベントであり、イベント特設サイトも設置されました。
https://www.openshift.run

イベントに参加した理由

近年、コンテナプラットフォームに関心を持ち始めたことをきっかけに、コミュニティベースでの学習活動を進めてみたいと考え、実は以前から何度もOpenShift Community Japanが主催するイベントへの参加を試みていたのですが、日程的になかなかタイミングが合わず、やっと今回は時間を確保して参加することができました。 また現在、所属している企業がRed Hat社の買収が2019年7月に完了したことで、IBM Cloudで提供されているテクノロジーを拡めるお仕事を担うデベロッパーアドボケイトとして、Kubernetesに加えてOpenShfitについても担当することになりました。すでに「IBM Developer Dojo」 を通じてエンジニアの方々に「OpenShift(Minishift)入門コース」や「OpenShift on IBM Cloud + AI入門コース」という座学形式(前半)とワークショップ形式(後半)を組み合わせてOpenShiftを実際に体験していただけるイベントの企画から当日の講師までを務めていますが、OpenShiftを活用するために押さえておきたいテクノロジー範囲は広いだけでなく、Kubernetesにおいてはリリース頻度が高いため、自分自身も効率的かつスピーディーに学習しなければいけないと感じています。

当日のイベント全体の流れ

一部、セッションの順番の入れ替えはありましたが、基本的にはサイトに公開されていたEvent Timetableに沿ってイベントは進められました。

13:00-13:30 Registration

初めて訪れたEBiS303は、JR恵比寿駅から徒歩3分の好立地にあり、建物に入って正面のエスカレータで登るだけでスムーズに3Fイベントホールに辿りつくことができました。時間通りにイベント受付が始まり、GUESTバッチを受け取って会場内に入るとあっという間に席が埋まっていきました。
おそらく、イベント告知のタイミングで「来場者先着プレゼント Red Hat OpenShift 4 入門 小冊子」が用意されていることを知った多くの参加者は早めに会場入りしたと思われます。席はすべて3人掛けのテーブルでしたが、真ん中席でも落ち着いてパソコンやノートでメモを取りやすいスペースが確保されていました。

13:50-13:50 Welcome to OpenShift.Run

オープニングの動画が流れ、Shingo Katayama氏によってOpenShift Japan Communityの紹介が行われました。コミュニティメンバー800名突破!とのことでお祝いムードに包まれましたが、先ほどconnpassを確認したところ861名になっており、メンバーが増加傾向にあることが伺えます。
OpenShift Japan Communityは、グローバルで展開されているOpenShift Commonsとは別に、国内で独立したかたちでコミュニティ活動を実施しているとのことです。

OpenShiftのオンライン学習コンテンツ

OpenShiftの学習環境として、OpenShift環境の構築をしなくてもブラウザからすぐにOpenShiftを体感できる「OpenShift: Interactive Learning Portal」サイトを案内していました。コンテンツはすべて英語のみとなりますが、登録不要で、手軽にOpenShfitを無料で試したり学ぶことができるサービスです。サイトにアクセスすると今日現在は下記の6つのメニューが表示され、「START COURSE」ボタンをクリックするとそれぞれのシナリオ別にお好みでどれからでも始められます。学習段階に合わせて無理なくスキルアップできるコンテンツなので、ワタシも少しづつ制覇していきたいと思います。 各コンテンツが開始されると、左側に操作手順書、右上にKatakodaエディタ、右下にターミナル(bash)の構成で画面が表示されます。画面を閉じると操作した内容はすべて消えてしまう仕様になっていますので、検証などで行いたい場合には注意が必要ですが、バージョンごとに色々試せそうな「OpenShift Playground」は重宝しそうです。

  • Foundations of OpenShift
    • Getting Started with OpenShift for Developers
    • Logging in to an OpenShift Cluster
    • Developing with odo
    • Deploying Applications From Images
    • Deploying Applications From Source
    • Using the CLI to Manage Resource Objects
    • Connecting to a Database Using Port Forwarding
    • Transferring Files in and out of Containers
    • Exploring and using metrics and HPAs
    • Introduction to Federated Clusters with Kubefed
    • Introduction to GitOps with OpenShift
    • Multi-cluster GitOps with OpenShift
  • Foundations of OpenShift
    • Developing with Quarkus
    • Eclipse Vert.x deployment
    • Spring and Spring Boot development
    • Java EE 8 Development
    • Application Messaging with OpenShift
    • Thorntail development
    • Red Hat Data Grid development
    • Node.js development
    • JBoss BRMS Loan Application demo
    • Red Hat Decision Manager Loan Application demo
    • Red Hat Decision Manager DMN Introduction
    • Java EE Batch Processing with OpenShift, WildFly & JBeret
    • Debezium deployment
    • Hello! Fuse - Getting Started
  • Subsystems, Components, and Internals
    • Linux Container Internals 2.0 - Lab 1: Introduction to Containers
    • Linux Container Internals 2.0 - Lab 2: Container Images
    • Linux Container Internals 2.0 - Lab 3: Container Registries
    • Linux Container Internals 2.0 - Lab 4: Container Hosts
    • Linux Container Internals 2.0 - Lab 5: Container Orchestration
    • Linux Container Internals 2.0 - Lab 6: Container Standards
    • Linux Container Internals 2.0 - Lab 6: Container Tools Ecosystem
  • OpenShift Playgrounds
    • OpenShift 3.6 Playground
    • OpenShift 3.11 Playground
    • OpenShift 4.2 Playground
  • Service Mesh Workshop with Istio
    • Istio 1.0.x workshop: Istio Introduction
    • Istio 1.0.x workshop: Deploy microservices
    • Istio 1.0.x workshop: Monitoring and Tracing
    • Istio 1.0.x workshop: Simple Routing
    • Istio 1.0.x workshop: Advanced RouteRules
    • Istio 1.0.x workshop: Fault Injection
    • Istio 1.0.x workshop: Circuit Breaker
    • Istio 1.0.x workshop: Egress
    • Istio 1.0.x Advanced: Observing with Kiali
    • Istio 1.0.x Advanced: Mutual TLS
  • Building Operators on OpenShift
    • Kubernetes API Fundamentals
    • Etcd Operator
    • Operator SDK with Go
    • Operator Lifecycle Manager
    • Ansible Refresher
    • Ansible Kubernetes Modules
    • Ansible Operator Overview
    • Mcrouter Operator powered by Ansible Operator
    • Operator SDK with Helm

13:50-14:30 Operatorに手足をつっこんでみようか。レッツエンジョイ

★公開セッション資料はこちら
最初のセッションは、「転職してKubernetesの国にきました」と語るKazufumi Saito氏によるOperatorの開発・実行・管理について役立てるオープンソースのOperator Frameworkに関する「Operator 101」セッションでした。詳しい内容について、後ほど紹介いたします。

14:30-15:10 Machine Config Operatorのちょっとイイかもしれない話

★公開セッション資料はこちら
セッション発表の裏でリアルにOpenShift 4.2を構築してみます!と勝負に出たToshihiro Araki氏。OpenShift環境において、CoreOSに対しKubernetesネイティブな構成(宣言型)を提供する「Machine Config Operator(MCO)」について、yamlファイルの記述例やコマンドを交えて解説していました。 OpenShift 4は、Operatorフォーカスのプラットフォームであり、MCOはそれをオペレーションシステム自体にまで拡張し、カーネルとkubelet間のすべてに対する更新や構成変更を管理することが可能になりました。 MCOには下記のようなコンポーネントが存在し、それらに基づいてOpenShift環境下のCoreOSノードに対する管理操作を自動的に行えるので、人の手を介さないPOD管理と同じように自動化の美しい世界が広がります。 ・ machine-config-operator: ノード設定に関する機能とCRDを提供するOperator ・ machine-config-server: OCPクラスタへのノード追加時にignitionを提供 ・ machine-config-controller: 宣言型のアップグレードメカニズムの調整機能を提供 ・ machine-config-daemon: マシン設定アップデートとその検証を提供 一方で、現状は完全に人手によるシステム管理に置き換わるものではないため、OpenShiftをオートスケールなどの恩恵が受けられるクラウド(IaaS)上に構築し、MCOの仕組みを組み合わせることでエンジニアが苦労するシステム運用負荷が高まった際などの無理ゲーに即効性のある一つの解決策として一歩前進しますねという話でした。
最後に、AWS上にOpenShiftが33分で正常にインストールされたことを確認して、こちらのセッションは無事に終了しました。

15:30-16:10 マイクロサービスの開発に疲れる前にdaprを使おう!

★公開セッション資料はこちら
OpenShift.Run 2019の前半戦はインフラ寄りの話が中心でしたが、ここからはアプリ側の話をするセッションが投入されました。 初期の頃からOpenShiftを触っている経験豊富なKei Omizu氏による最近発表されたMicrosoftのマイクロサービスアプリケーションの開発を容易にする「dapr(Distributed Application Runtime)/読み方:ダパー」に関するセッションは、限られた時間でテンポよくVisual Studio Codeを使ったデモも交えて行われました。daprをKubernetes上で利用する場合、dapr自身がコンテナとして実行され、HTTP/gRPC API経由で呼び出して利用できるとのことです。daprはistioに似て非なるもので、ステート管理ができることがエンジニアさんから評価されるポイントの一つに。セッション最後に電卓の足し算(Go)、掛け算(Python)、割り算(Node Express)、引き算(.Net Core)の各ボタンが異なる言語/フレームワークで書かれた別モジュールで構成されている電卓アプリケーションを使った分散トレーシングについて紹介していたのが面白かったです。

daprの公式サイトはこちら

最後にデモしていたKubernetes分散電卓のソースコードこちら

16:10-16:50 「詰める」と「散らす」の動力学: 原理・原則から理解するコンテナ配置戦略

★公開セッションはこちら ネコ耳スタイルで登場したチェシャ猫がイベントのムードをさらに盛りあげていました。 Kubernetesをデプロイした際に配置されるNodeが「よしなに」決まる件について、よしなにの中身を詳しく解説していくセッションで、Kubernetesの働きについて勉強になりました。

Operator 101セッションで学んだこと

ここからは最初のセッションの話に戻り、もう少し詳しい内容についてお伝えしていきます。 「Are you happy with Kubernetes?」「Kubernetesが好きな人いますか?」 Kubernetesが登場してから、学習コストが高く、実際の運用管理には専門的なナレッジやノウハウが無いと厳しいと感じている方が多いのではないでしょうか。ワタシ自身もそのように感じていますが、クラウドネイティブを加速させる上で、直面しているインフラや開発現場の多くの問題はコンテナ技術によって解決されており、「今」こそ注力して取り扱うテクノロジーであると信じています。セッション始めの問いに会場にいた参加者は興味深く聞き入っていました。

Red Hat社員も語るKubernetesの保守の難しさ

セッションの中で、2018年6月に海外で公開された「Why running your own Kubernetes deployment could be a terrible idea」記事に掲載されたRed Hat社のAshesh Badani氏による「Kubernetesは偉大な基礎技術ですが、ストレージ、ネットワーキング、セキュリティ、アプリケーションフレームワークなどを統合し、それを四半期ごとに更新し続けることは大きな負担です」というコメントが紹介されました。Kubernetesを取り扱う現場のエンジニアたちが感じていることと共通の認識であることが伺えました。

Kubernetesのキホン

Kubernetesは、「マニフェスト(あるべき姿)の宣言」によってクラスタ内の多数のコンテナのデプロイやスケーリング、ルーティングなどの運用管理を担うことでサービス維持を実現します。 これを支えているのが「Control Loop (Reconciliation Loop)」です。「Analyze(あるべき状態と現在の状態を比較)」→「Act(あるべき状態になるように処理)」→「Observe(現在の状態を観測)」を繰り返すことによって維持し続けるのが動作の基本になります。

保守を担当するコンテナ「Operator」のススメ

そこで、Kubernetes拡張機能であるOperator(読み方:オペレーター)がキーになります。etcdの保守を例に、もしOperatorがなく、人がオペレーションを実行する場合を見ていきましょう。
Operatorがある場合は、どうでしょうか。

明らかに自動化により操作する人にとってメリットが大きいことを直感でお分かりいただけましたでしょうか。では、Operatorを利用するためにはどうしたら良いのでしょうか?答えは2つあります。1つは、「創る」です。その創るために、再び英語ドキュメント読んだり調べ物が増えて大変そうと思われるかもしれませんが、すでにコミュニティの方々によって日本語の参考になるコンテンツは用意されているようなので活用しましょう!

「Operator開発の大まかな流れ」としては、次の5つのステップになります。 1. Operator SDKで雛形生成 2. 新規CRD追加 3. 新規Controller追加 4. Operator Podをビルド・デプロイ 5. CRを追加・適用

もう一つの答えは「活用する」です。特にミドルウェアについては必ずしも創る必要はありません。現在、Operatorを介して新たなISVの世界が広がっていることも知っておくと良いでしょう。

OperatorHub.ioサイトにアクセスすると、Kubernetesコミュニティで開発されている豊富なOperator対応製品が登録または取得が可能です。先ほど実際にアクセスしてみたところ、Red HatMicrosoftGoogleIBMも!などの企業やコミュニティによる95アイテムが登録されてました。

他にもセッションでは、Operatorライフサイクルなど追加情報について紹介されていましたが今回は割愛させていただきます。106ページの公開されたセッションスライドはOperatorをはじめたい人必見です!!! ※改めてリンク貼っておきます。
Operator 101 〜Operatorに手足をつっこんでみようか。レッツエンジョイ〜 - Kazufumi Saito )

Operator 101のまとめ

Operatorを押さえておき、創る/使うことによって、Kubernetesの能力であらゆるもの(インフラ、k8sミドルウェア+アプリケーション)を自動化できます!みんなで手足をつっこんで使っていきましょう!! セッションの中でもエンジニアの味方になってくれるテクノロジーであることを強調するかたちで何度も表示されたスライドでした。

来年もOpenShift Japan Communityによるイベントが開催されるようです。最新情報はconnpassまたはTwitterでご確認ください。これからも新しいニーズに対応しながら進化し続けるOpenShiftについて一緒に学び、語り合いましょう!

Have a nice Geek Life♪

Twitterで最新情報配信中 @ayatokura