
CRD(カスタムリソース定義)は、任意のデータを入力できるKubernetesの特別なリソースです。Mail.ruのKubernetesaaSチームは、それが何であるか、それを作成して使用する方法についての記事を翻訳しました。
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つの部分に分かれています。
- 共通部分。他のKubernetesリソースと同様に、メタデータにはCRD(
name: "fruit-crd")、apiVersionおよびという名前が含まれkindます。 - テーブルレベルの情報。テーブル名(
kind: "fruit")、コマンドラインの単純な小文字の名前(simpler: "fruits")、複数(plural: "fruits") - 列レベルの情報。列名(
"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形式を覚えていなくても、オペレーターがお手伝いします。オペレーターの私のオープンソースバージョンはここに掲載されています。
他に読むべきこと: