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