3.5.8. odo service
odo は Operator を利用して サービス をデプロイでき ます。
インストールに使用できるオペレーターとサービスのリストは、odo catalog コマンドを使用して見つけることができます。
サービスは コンポーネント のコンテキストで作成されるため、サービスをデプロイする前に odo create コマンドを実行してください。
サービスは、以下の 2 つのステップに従ってデプロイされます。
- サービスを定義し、その定義を devfile に保存します。
-
odo pushコマンドを使用して、定義されたサービスをクラスターにデプロイします。
3.5.8.1. 新しいサービスの作成 リンクのコピーリンクがクリップボードにコピーされました!
新規サービスを作成するには、以下のコマンドを実行します。
$ odo service create
たとえば、my-redis-service という名前の Redis サービスのインスタンスを作成するには、以下のコマンドを実行します。
出力例
$ odo catalog list services
Services available through Operators
NAME CRDs
redis-operator.v0.8.0 RedisCluster, Redis
$ odo service create redis-operator.v0.8.0/Redis my-redis-service
Successfully added service to the configuration; do 'odo push' to create service on the cluster
このコマンドは、サービスの定義を含む Kubernetes マニフェストを kubernetes/ ディレクトリーに作成し、このファイルは devfile.yaml ファイルから参照されます。
$ cat kubernetes/odo-service-my-redis-service.yaml
出力例
apiVersion: redis.redis.opstreelabs.in/v1beta1
kind: Redis
metadata:
name: my-redis-service
spec:
kubernetesConfig:
image: quay.io/opstree/redis:v6.2.5
imagePullPolicy: IfNotPresent
resources:
limits:
cpu: 101m
memory: 128Mi
requests:
cpu: 101m
memory: 128Mi
serviceType: ClusterIP
redisExporter:
enabled: false
image: quay.io/opstree/redis-exporter:1.0
storage:
volumeClaimTemplate:
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
コマンドの例
$ cat devfile.yaml
出力例
[...]
components:
- kubernetes:
uri: kubernetes/odo-service-my-redis-service.yaml
name: my-redis-service
[...]
作成されたインスタンスの名前はオプションです。名前を指定しない場合は、サービスの小文字の名前です。たとえば、以下のコマンドは redis という名前の Redis サービスのインスタンスを作成します。
$ odo service create redis-operator.v0.8.0/Redis
3.5.8.1.1. マニフェストのインライン化 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトで、新規マニフェストは kubernetes/ ディレクトリーに作成され、devfile.yaml ファイルから参照されます。--inlined フラグを使用して、devfile.yaml ファイル内でマニフェストをインラインにすることができます。
$ odo service create redis-operator.v0.8.0/Redis my-redis-service --inlined
Successfully added service to the configuration; do 'odo push' to create service on the cluster
コマンドの例
$ cat devfile.yaml
出力例
[...]
components:
- kubernetes:
inlined: |
apiVersion: redis.redis.opstreelabs.in/v1beta1
kind: Redis
metadata:
name: my-redis-service
spec:
kubernetesConfig:
image: quay.io/opstree/redis:v6.2.5
imagePullPolicy: IfNotPresent
resources:
limits:
cpu: 101m
memory: 128Mi
requests:
cpu: 101m
memory: 128Mi
serviceType: ClusterIP
redisExporter:
enabled: false
image: quay.io/opstree/redis-exporter:1.0
storage:
volumeClaimTemplate:
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
name: my-redis-service
[...]
3.5.8.1.2. サービスの設定 リンクのコピーリンクがクリップボードにコピーされました!
特定のカスタマイズを行わないと、サービスはデフォルト設定で作成されます。コマンドライン引数またはファイルのいずれかを使用して、独自の設定を指定できます。
3.5.8.1.2.1. コマンドライン引数の使用 リンクのコピーリンクがクリップボードにコピーされました!
--parameters (または -p) フラグを使用して、独自の設定を指定します。
以下の例では、Redis サービスを 3 つのパラメーターで設定します。
$ odo service create redis-operator.v0.8.0/Redis my-redis-service \
-p kubernetesConfig.image=quay.io/opstree/redis:v6.2.5 \
-p kubernetesConfig.serviceType=ClusterIP \
-p redisExporter.image=quay.io/opstree/redis-exporter:1.0
Successfully added service to the configuration; do 'odo push' to create service on the cluster
コマンドの例
$ cat kubernetes/odo-service-my-redis-service.yaml
出力例
apiVersion: redis.redis.opstreelabs.in/v1beta1
kind: Redis
metadata:
name: my-redis-service
spec:
kubernetesConfig:
image: quay.io/opstree/redis:v6.2.5
serviceType: ClusterIP
redisExporter:
image: quay.io/opstree/redis-exporter:1.0
odo catalog describe service コマンドを使用して、特定のサービスの使用可能なパラメーターを取得できます。
3.5.8.1.2.2. ファイルの使用 リンクのコピーリンクがクリップボードにコピーされました!
YAML マニフェストを使用して独自の仕様を設定します。以下の例では、Redis サービスは 3 つのパラメーターで設定されます。
マニフェストを作成します。
$ cat > my-redis.yaml <<EOF apiVersion: redis.redis.opstreelabs.in/v1beta1 kind: Redis metadata: name: my-redis-service spec: kubernetesConfig: image: quay.io/opstree/redis:v6.2.5 serviceType: ClusterIP redisExporter: image: quay.io/opstree/redis-exporter:1.0 EOFマニフェストからサービスを作成します。
$ odo service create --from-file my-redis.yaml Successfully added service to the configuration; do 'odo push' to create service on the cluster