5.6.2.3. API およびコントローラーの作成
Operator SDK CLI を使用してカスタムリソース定義 (CRD) API およびコントローラーを作成します。
手順
以下のコマンドを実行して API を作成します。
$ operator-sdk create api \ --plugins=quarkus \1 --group=cache \2 --version=v1 \3 --kind=Memcached4
検証
treeコマンドを実行して、ファイル構造を表示します。$ tree出力例
. ├── Makefile ├── PROJECT ├── pom.xml └── src └── main ├── java │ └── com │ └── example │ ├── Memcached.java │ ├── MemcachedReconciler.java │ ├── MemcachedSpec.java │ └── MemcachedStatus.java └── resources └── application.properties 6 directories, 8 files
5.6.2.3.1. API の定義 リンクのコピーリンクがクリップボードにコピーされました!
Memcached カスタムリソース (CR) の API を定義します。
手順
create apiプロセスの一部として生成された以下のファイルを編集します。MemcachedSpec.javaファイルの以下の属性を更新して、MemcachedCR の必要な状態を定義します。public class MemcachedSpec { private Integer size; public Integer getSize() { return size; } public void setSize(Integer size) { this.size = size; } }MemcachedStatus.javaファイルの以下の属性を更新して、MemcachedCR の観察された状態を定義します。注記以下の例では、Node ステータスフィールドを示しています。実際には、通常のステータスプロパティー を使用することが推奨されます。
import java.util.ArrayList; import java.util.List; public class MemcachedStatus { // Add Status information here // Nodes are the names of the memcached pods private List<String> nodes; public List<String> getNodes() { if (nodes == null) { nodes = new ArrayList<>(); } return nodes; } public void setNodes(List<String> nodes) { this.nodes = nodes; } }Memcached.javaファイルを更新して、MemcachedSpec.javaとMemcachedStatus.javaファイルの両方に拡張する Memcached API のスキーマを定義します。@Version("v1") @Group("cache.example.com") public class Memcached extends CustomResource<MemcachedSpec, MemcachedStatus> implements Namespaced {}