KubernetesのCRDとその使用方法の簡単な説明

スペースバイマリヤニオン



CRD(カスタムリソース定義)は、任意のデータを入力できるKubernetesの特別なリソースです。Mail.ruKubernetesaaSチームは、それが何であるか、それを作成して使用する方法についての記事を翻訳しました。



CRDとは



CRDは、データベース内の単なるテーブルです。テーブル「Fruits」を作成したとしましょう。その中には、「apple」、「banana」、「orange」などの多くのレコードがあります。各レコードには、甘さ、風味、重さなどのフルーツの特徴を備えた列があります。



したがって、CRDは「フルーツ」テーブルに似ています。







CR(カスタムリソース)-テーブル内の個別のレコード(「apple」や「banana」など)。CRD(テーブル)を作成した後、CR(レコード)を追加または削除できます。







ますます多くのユーザーがKubernetesにデータを提供したいので、CRDが必要です。データ形式は異なる場合があり、CRDはKubernetesですぐに定義されていません。その結果、データベースのように、列の名前とタイプを設定して、独自のテーブルを作成する必要があります。



たとえば、IT管理者は、CRDを使用して、ユーザーのリスト、部門のリスト、作業スケジュールなどを整理したいと考えています。



CRDを作成する方法



前述のように、CRDはテーブルです。テーブルを作成するときは、その形式(列名とタイプ)を設定する必要があります。CRDでは、これらの要素はYAMLまたはJSON形式で記述されます。CRは、YAMLまたはJSON形式で書き込まれる各値についても説明します。 CRDが







内部からどのように見えるかを見てみましょう







。CRDは、一般的な部分、テーブルレベルの情報、および列レベルの情報の3つの部分に分かれています。



  1. 共通部分。他のKubernetesリソースと同様に、メタデータにはCRD(name: "fruit-crd")、apiVersionおよびという名前が含まれkindます。
  2. テーブルレベルの情報。テーブル名(kind: "fruit")、コマンドラインの単純な小文字の名前(simpler: "fruits")、複数(plural: "fruits"
  3. 列レベルの情報。列名("sweetness")、列タイプ("boolean", "string", "integer", "object")、ネストされたオブジェクト(: < >)。これらは、OpenAPISpecificationバージョン3形式に準拠しています。


CRDの詳細については、公式マニュアルを参照してください



CRDチェック



CRDは本当に単なるテーブルですか?確認しよう。



CRD形式を覚えたくないので、もっと簡単に作成する方法が必要です。したがって、私はテーブル定義のみを記述しており、ステートメント(自動CRD生成ツール)があります。



説明は非常に簡単です。列名とタイプのペアをリストする必要があります。







このYMLを適用した後、Kubernetesのオペレーターは対応するCRDを自動的に生成します。独自の演算子を作成することもできますが、自分で試してみたい場合は、次のコマンドを実行してください。



kubectl apply -f
https://raw.githubusercontent.com/onelittlenightmusic/k8sasdb/master/install.yaml


オペレーターを正常にインストールした後、ポッドが開始されていることを確認します。



kubectl get pod -n k8sasdb-system
NAME                                         READY   STATUS    RESTARTS   AGE
k8sasdb-controller-manager-9dbf54b4f-hzrt9   2/2     Running   0          8s


ここから サンプルテーブルとCRレコードをダウンロードできます



生成されたCRDは次のようになります。左:一般情報とテーブルレベル、右:列レベルの情報。







次に、次のCR(1つのフルーツのYAML)を追加しました。





CR "Fruit"の例次



に、テーブルの結果とレコードの操作を確認しましょう。



テーブルの作成



kubectl create -f fruit.yaml






成功:CRDがインストールされました=テーブルが作成されました。







これはSQLコマンドと同等ですCREATE TABLE fruits;



レコードを作成する



kubectl create -f apple.yaml






成功:CRセット=レコードが作成されました。これはSQLコマンドと同等ですINSERT INTO fruits values('apple', ...);



レコードのリストを取得する



kubectl get fruits






成功:2つのCRとそれらのすべての列を表示します。SQLコマンドと同等SELECT * FROM fruits;です。



記録を受け取る



kubectl get fruit apple






成功しました。もちろん、「バナナ」などの他の名前を使用することもできます。このコマンドは、SQLクエリと同等SELECT * FROM fruits WHERE name = 'apple';です。



記入を消す



kubectl delete fruit apple






削除した後、果物のリスト全体をチェックするコマンドは、結果「apple」を表示しません。







成功しました。SQLのアナログ:DELETE FROM fruits WHERE name = 'banana';



結論



CRDはKubernetesの単なるテーブルです。CRDを使用して新しいテーブルを作成し、CRを使用してレコードを追加できます。また、CRDでは、列の名前とタイプを定義することにより、テーブルスキーマを定義できます。CRD、CR、およびkubectlコマンドをマスターしたら、任意のデータをKubernetesにアップロードできます。



恐れる必要はありません。CRD形式を覚えていなくても、オペレーターがお手伝いします。オペレーターの私のオープンソースバージョンはここに掲載されています



他に読むべきこと:



  1. kubectlをより効率的に使用する方法:包括的なガイド
  2. Kubernetes: .
  3. Kubernetes .



All Articles