
今回は「Kubernetes Operator入門」をご受講いただきありがとうございます。まずは、このレクチャーでは挨拶と講師紹介を簡単にしたいと思います。
これから一緒に勉強していきましょう!
今回は、コースの目的を紹介します。
Kubernetes Operatorの基本を理解する
Kubernetes Operatorの作成方法を知る
実際に簡単なKubernetes Operatorを作成する
今後の自分でKubernetes Operatorを開発していく道筋がわかる
という4つを掲げています。これからKubernetes Operatorの世界へ飛び込む後押しができればいいなと思っています。
今回は、
コースに必要な前提知識
コースの対象者
コースの対象外の方
について説明したいと思います。
自分の目的にあっているコースなのか今一度お確かめください。
今回は、コースのコンテンツとコースで使うものに関して紹介したいと思います。
コースは、大きく分けて
基礎
Hands-on
Operator開発の更なる一歩
の三段階になっています。
コースで使うものは、
Macのパソコン
Docker
VSCode(好きなEditorがあればなんでもよい)
kind (ローカルKubernetesクラスタ用)
の4点です。
今回のレクチャーでは、セクションの概要を説明します。
このレクチャーのコンテンツは以下のようになっています。
Kubernetes Operatorの説明
制御ループに関して
Controllerの復習 Built-in Controller
Controllerの復習 API ResourceとController
拡張機能にかんして
Custom Resource
Custom Controller
Kubernetes Operatorの背景
Kubernetes Operatorの例
Kubernetes Operatorのまとめ
用語
Kubernetes Operatorの説明をKubernetesの公式ドキュメントの説明文からスタートして、キーワードの「制御ループ」と「拡張機能」について深堀りしていきます。
仕組みを理解してから、なぜKubernetes Operatorが必要なのかを背景とともに勉強します。最後にKubernetes Operatorの例を一つ紹介して、まとめに入ります。
最後に、混乱しやすい用語などを短く解説します。
このレクチャーでは、Kubernetes OperatorとはなにかをKubernetesの公式ドキュメントにかかれている文章を使って説明します。
これ以後の章で、見ていく大事なキーワードが出てきます。
このレクチャーでは、最初の大事なキーワードである「制御ループ」について勉強していきます。
Controllerの復習も含めて制御ループに関しての理解を深めていきます。
今回のレクチャーでは、Controllerの復習の1つ目として、Built-in Controllerという言葉を説明します。
普段から使っているデフォルトのKubernetesのリソースは、Built-in Resourceと呼ばれ、それらを管理しているControllerは、Built-in Controllerと呼ばれます。
今回のレクチャーでは、API ResourceとControllerの関係について復習していきます。普段Kubernetesを使っているときには意識していないかもしれませんが、Kubernetes Operatorを理解するのにはとても重要な部分です。
Kubernetes OperatorもControllerと全く同じ仕組みを使っているので、しっかり理解していきましょう。
このレクチャーでは、2つ目のキーワード「拡張機能」の一面を見ていきましょう。なぜKubernetes Operatorが拡張機能と言えるのか、自分の言葉ではっきりと答えられるように勉強していきましょう。
前のレクチャーでは、デフォルトのKubernetesにはBuilt-in ControllerとBuilt-in Resourceがあることを学びました。拡張機能は、このBuilt-inのリソースを自分で定義したCustom ResourceとCustom Controllerを使って拡張するということです。
今までのレクチャーでは、Kubernetes Operatorの仕組みについて学んで来ました。
今回のレクチャーでは、Kubernetes Operatorがなぜ必要なのかに関して学んでいきましょう。別の角度からKubernetes Operatorを見ることで、理解が深まっていくでしょう。
Kubernetes Operatorの例としてPrometheus Operatorを紹介します。Prometheusの簡単な説明のあとに、Prometheus Operatorがどのような働きをしているのかを解説します。
Kubernetes Operatorの説明のまとめを行います。
このレクチャーでは、いくつかの用語の補足をします。
Kubernetes Operator vs. Kubernetes Controller
Custom Resource Definition vs. Custom Resource
Reconciliation loop
「理想状態」と「現実状態」
コースの中で使用するツールのインストールを行います。
このレクチャーでは、セクションの目的について説明します。
このレクチャーでは、Kubernetes Operatorの例をいくつか紹介します。
zalando/postgres-operator: PostgreSQLクラスタ管理
CrunchyData/postgres-operator: PostgreSQLクラスタ管理
mysql/mysql-operator: MySQLクラスタ管理
vitessio/vitess: MySQLクラスタ管理
argoproj/argo-cd: CDツール
strimzi/strimzi-kafka-operator: Kafkaクラスタ管理
prometheus-operator/prometheus-operator: Prometheus管理
kubeflow/training-operator: MLジョブの管理
このレクチャーでは、Kubernetes Operatorの一般的な使用手順を紹介します。
Operatorのインストール
Custom Resourceの作成
このレクチャーでは、postgres-operatorを例として、実際に動かしてみたいと思います。
実際に一つ動かしてみることで、他のOperatorも自分で触ってみることができるようになると思います。
このレクチャーでは、既存のOperatorから学ぶことのポイントや前回のレクチャーで動かしたpostgres-operatorを例にどうやってより一層学びを深めていけるかを考えていきます。
セクション概要を説明します。
Go言語を使ってHello Worldと簡単な関数の練習をします。
Go言語のPackageとModuleの説明をします。
Go言語のInterfaceとStructの練習をします。
Goroutineの説明と練習をします。
Channelの説明と練習をします。Kubernetes Operatorで使われている部分の例も簡単に紹介します。
Contextの説明と練習をします。
セクション概要を説明します。
簡単なCRDを作成します。
Goのコードを買いて、Podを取得してみます。
Goのコードを用いて、Custom ResourceのFooを取得します。
赤ちゃんOperator (Operatorもどき) を作成して実行します。
前回作成した赤ちゃんOperatorの課題を考えてみます。
Operator作成の方法を大きくわけて3つ紹介します。
Operator SDK
Kubebuilder
Kubernetes Way
このコースでは、Kubernetes Operatorを以下のような講義とハンズオンの両方を使って、ゼロからOperator開発を自分で進めていける基礎力を身につけていきます。
Kubernetes Operatorの基本: KubernetesのControllerの復習やAPI Resourceから、Kubernetes Operatorの例を含めて学んでいきます。
Kubernetes Operatorを使ってみよう: 実際にKubernetes Operatorを動かしてみて、どうやって使うのかを体験を通して学習していきます。
Go言語の基本: Go言語をあまり使ったことがない人向けにいくつかの機能を紹介します。これをきっかけにGo言語を学んでいただければと思います。
Operatorの作成方法: Operatorもどきを作成してみることで、Operator作成時に考慮しなければならない点を理解した上で、いくつかあるOperatorの作成方法を紹介します。
Operatorの作成: Kubebuilder, Operator SDK, Kubernetes wayという三種類の方法でKubernetes Operatorを作成します。3つのOperatorを違った方法で作成することで、理解を深めていきます。何回か復習することでOperatorの開発方法に対する理解が一層深まると思います。
Kubernetes OperatorのComponent: Operatorの作成を通してツールやライブラリに対してある程度の理解ができたと思いますが、使われているGoのライブラリの主要なComponentをいくつか見ていきます。これをきっかけにバリバリGoのライブラリを直接勉強していける基礎力を身に着けます。
前提知識として、Kubernetesの基本は理解していることとしてコース作成していますので、Kubernetesの基本を知らない方は、「Kubernetes入門」コースなど基本のコースを勉強してからご受講することをお薦めしています。
それでは、一緒にKubernetes Operatorを勉強していきましょう!