3.5. odo CLI リファレンス

3.5.1. odo build-images

odo は Dockerfile に基づいてコンテナーイメージをビルドし、それらのイメージをレジストリーにプッシュできます。

odo build-images コマンドを実行すると、odoimage タイプで devfile.yaml 内のすべてのコンポーネントを検索します。以下に例を示します。

components:
- image:
    imageName: quay.io/myusername/myimage
    dockerfile:
      uri: ./Dockerfile 1
      buildContext: ${PROJECTS_ROOT} 2
  name: component-built-from-dockerfile
1
uri フィールドは、devfile.yaml を含むディレクトリーとの関連で使用する Dockerfile の相対パスを示します。devfile 仕様は uri が HTTP URL である可能性があることを示しますが、この場合は odo ではまだサポートされていません。
2
buildContext は、ビルドコンテキストとして使用されるディレクトリーを示します。デフォルト値は ${PROJECTS_ROOT} です。

各イメージコンポーネントについて、odo は podman または docker (この順序で最初に見つかったもの) を実行し、指定された Dockerfile、ビルドコンテキスト、および引数でイメージをビルドします。

--push フラグがコマンドに渡されると、イメージはビルド後にレジストリーにプッシュされます。

3.5.2. odo catalog

odo は異なる カタログ を使用して コンポーネント および サービス をデプロイします。

3.5.2.1. コンポーネント

odo は移植可能な devfile 形式を使用してコンポーネントを記述します。さまざまな devfile レジストリーに接続して、さまざまな言語およびフレームワークの devfile をダウンロードできます。詳細は、odo registry を参照してください。

3.5.2.1.1. コンポーネントの一覧表示

異なるレジストリーで利用可能な devfile の一覧を表示するには、以下のコマンドを実行します。

$ odo catalog list components

出力例

 NAME             DESCRIPTION                          REGISTRY
 go               Stack with the latest Go version     DefaultDevfileRegistry
 java-maven       Upstream Maven and OpenJDK 11        DefaultDevfileRegistry
 nodejs           Stack with Node.js 14                DefaultDevfileRegistry
 php-laravel      Stack with Laravel 8                 DefaultDevfileRegistry
 python           Python Stack with Python 3.7         DefaultDevfileRegistry
 [...]

3.5.2.1.2. コンポーネントに関する情報の取得

特定のコンポーネントに関する詳細情報を取得するには、以下のコマンドを実行します。

$ odo catalog describe component

たとえば、以下のコマンドを実行します。

$ odo catalog describe component nodejs

出力例

* Registry: DefaultDevfileRegistry 1

Starter Projects: 2
---
name: nodejs-starter
attributes: {}
description: ""
subdir: ""
projectsource:
  sourcetype: ""
  git:
    gitlikeprojectsource:
      commonprojectsource: {}
      checkoutfrom: null
      remotes:
        origin: https://github.com/odo-devfiles/nodejs-ex.git
  zip: null
  custom: null

1
Registry は、devfile の取得元のレジストリーです。
2
Starter projects は、devfile の同じ言語およびフレームワークにあるサンプルプロジェクトです。これは、新規プロジェクトの起動に役立ちます。

スタータープロジェクトからプロジェクトを作成する方法については、odo create を参照してください。

3.5.2.2. サービス

odoOperator を利用して サービス をデプロイでき ます。

odo では、Operator Lifecycle Manager を利用してデプロイされた Operator のみがサポートされます。

3.5.2.2.1. サービスの一覧表示

利用可能な Operator およびそれらの関連サービスを一覧表示するには、以下のコマンドを実行します。

$ odo catalog list services

出力例

 Services available through Operators
 NAME                                 CRDs
 postgresql-operator.v0.1.1           Backup, Database
 redis-operator.v0.8.0                RedisCluster, Redis

この例では、2 つの Operator がクラスターにインストールされます。postgresql-operator.v0.1.1 Operator は、PostgreSQL に関連するサービス: BackupDatabase をデプロイします。redis-operator.v0.8.0 Operator は、RedisCluster および Redis に関連するサービスをデプロイします。

注記

利用可能な Operator の一覧を取得するには、odoSucceeded フェーズにある現在の namespace の ClusterServiceVersion (CSV) リソースを取得します。クラスター全体のアクセスをサポートする Operator の場合、新規 namespace が作成されると、これらのリソースがこれに自動的に追加されます。ただし、Succeeded フェーズに入るまでに時間がかかる場合がありますが、odo はリソースが準備状態になるまで空の一覧を返す可能性があります。

3.5.2.2.2. サービスの検索

キーワードで特定のサービスを検索するには、以下のコマンドを実行します。

$ odo catalog search service

たとえば、PostgreSQL サービスを取得するには、以下のコマンドを実行します。

$ odo catalog search service postgres

出力例

 Services available through Operators
 NAME                           CRDs
 postgresql-operator.v0.1.1     Backup, Database

検索されたキーワードを名前に含む Operator の一覧が表示されます。

3.5.2.2.3. サービスに関する情報の取得

特定のサービスに関する詳細情報を取得するには、以下のコマンドを実行します。

$ odo catalog describe service

以下に例を示します。

$ odo catalog describe service postgresql-operator.v0.1.1/Database

出力例

KIND:    Database
VERSION: v1alpha1

DESCRIPTION:
     Database is the Schema for the the Database Database API

FIELDS:
   awsAccessKeyId (string)
     AWS S3 accessKey/token ID

     Key ID of AWS S3 storage. Default Value: nil Required to create the Secret
     with the data to allow send the backup files to AWS S3 storage.
[...]

サービスは、CustomResourceDefinition (CRD) リソースによってクラスターに表示されます。前のコマンドは、kindversion、このカスタムリソースのインスタンスを定義するために使用できるフィールドのリストなど、CRD に関する詳細を表示します。

フィールドの一覧は、CRD に含まれる OpenAPI スキーマ から抽出されます。この情報は CRD でオプションであり、存在しない場合は、サービスを表す ClusterServiceVersion (CSV) リソースから抽出されます。

CRD タイプの情報を指定せずに、Operator がサポートするサービスの説明を要求することもできます。CRD のないクラスターで Redis Operator を記述するには、以下のコマンドを実行します。

$ odo catalog describe service redis-operator.v0.8.0

出力例

NAME:	redis-operator.v0.8.0
DESCRIPTION:

	A Golang based redis operator that will make/oversee Redis
	standalone/cluster mode setup on top of the Kubernetes. It can create a
	redis cluster setup with best practices on Cloud as well as the Bare metal
	environment. Also, it provides an in-built monitoring capability using

... (cut short for beverity)

	Logging Operator is licensed under [Apache License, Version
	2.0](https://github.com/OT-CONTAINER-KIT/redis-operator/blob/master/LICENSE)


CRDs:
	NAME           DESCRIPTION
	RedisCluster   Redis Cluster
	Redis          Redis

3.5.3. odo create

ododevfile を使用してコンポーネントの設定を保存し、ストレージやサービスなどのコンポーネントのリソースを記述します。odo create コマンドはこのファイルを生成します。

3.5.3.1. コンポーネントの作成

既存のプロジェクトの devfile を 作成 するには、コンポーネントの名前とタイプ (たとえば、nodejs または go) を指定して odo create コマンドを実行します。

odo create nodejs mynodejs

この例では、nodejs はコンポーネントのタイプで、mynodejsodo が作成するコンポーネントの名前です。

注記

サポートされるすべてのコンポーネントタイプの一覧については、コマンド odo catalog list components を実行します。

ソースコードが現在のディレクトリーに存在する場合は、--context フラグを使用してパスを指定できます。たとえば、nodejs コンポーネントのソースが現在の作業ディレクトリーと相対的に node-backend というフォルダーにある場合は、以下のコマンドを実行します。

odo create nodejs mynodejs --context ./node-backend

--context フラグは、相対パスおよび絶対パスをサポートします。

コンポーネントがデプロイされるプロジェクトまたはアプリケーションを指定するには、--project フラグおよび --app フラグを使用します。たとえば、backend プロジェクト内の myapp アプリの一部であるコンポーネントを作成するには、次のコマンドを実行します。

odo create nodejs --app myapp --project backend
注記

これらのフラグが指定されていない場合、デフォルトはアクティブなアプリケーションおよびプロジェクトに設定されます。

3.5.3.2. スタータープロジェクト

既存のソースコードがなく、devfile およびコンポーネントを迅速に稼働させる必要がある場合は、スタータープロジェクトを使用します。スタータープロジェクトを使用するには、--starter フラグを odo create コマンドに追加します。

コンポーネントタイプの利用可能なスタータープロジェクトの一覧を表示するには、odo catalog describe component コマンドを実行します。たとえば、nodejs コンポーネントタイプの利用可能なスタータープロジェクトをすべて取得するには、以下のコマンドを実行します。

odo catalog describe component nodejs

次に、odo create コマンドで --starter フラグを使用して必要なプロジェクトを指定します。

odo create nodejs --starter nodejs-starter

これにより、選択したコンポーネントタイプ (この例では nodejs) に対応するサンプルテンプレートがダウンロードされます。テンプレートは、現在のディレクトリーまたは --context フラグで指定された場所にダウンロードされます。スタータープロジェクトに独自の devfile がある場合、この devfile は保持されます。

3.5.3.3. 既存の devfile の使用

既存の devfile から新規コンポーネントを作成する場合は、--devfile フラグを使用して devfile へのパスを指定して実行できます。たとえば、GitHub の devfile に基づいて mynodejs というコンポーネントを作成するには、以下のコマンドを使用します。

odo create mynodejs --devfile https://raw.githubusercontent.com/odo-devfiles/registry/master/devfiles/nodejs/devfile.yaml

3.5.3.4. インタラクティブな作成

odo create コマンドを対話的に実行して、コンポーネントの作成に必要な手順をガイドすることもできます。

$ odo create

? Which devfile component type do you wish to create go
? What do you wish to name the new devfile component go-api
? What project do you want the devfile component to be created in default
Devfile Object Validation
 ✓  Checking devfile existence [164258ns]
 ✓  Creating a devfile component from registry: DefaultDevfileRegistry [246051ns]
Validation
 ✓  Validating if devfile name is correct [92255ns]
? Do you want to download a starter project Yes

Starter Project
 ✓  Downloading starter project go-starter from https://github.com/devfile-samples/devfile-stack-go.git [429ms]

Please use odo push command to create the component with source deployed

コンポーネントのコンポーネントタイプ、名前、およびプロジェクトを選択します。スタータープロジェクトをダウンロードするかどうかを選択することもできます。完了したら、新しい devfile.yaml ファイルが作業ディレクトリーに作成されます。

これらのリソースをクラスターにデプロイするには、odo push コマンドを実行します。

3.5.4. odo delete

odo delete コマンドは、odo によって管理されるリソースを削除するのに役立ちます。

3.5.4.1. コンポーネントの削除

devfile コンポーネントを削除するには、odo delete コマンドを実行します。

$ odo delete

コンポーネントがクラスターにプッシュされている場合、コンポーネントは依存するストレージ、URL、シークレット、他のリソースと共にクラスターから削除されます。コンポーネントがプッシュされていない場合、コマンドはクラスターのリソースが検出できなかったことを示すエラーを出して終了します。

確認質問を回避するには、-f フラグまたは --force フラグを使用します。

3.5.4.2. devfile Kubernetes コンポーネントのアンデプロイ

odo deploy でデプロイされた devfile Kubernetes コンポーネントをアンデプロイするには、--deploy フラグを指定して odo delete コマンドを実行します。

$ odo delete --deploy

確認質問を回避するには、-f フラグまたは --force フラグを使用します。

3.5.4.3. すべて削除

以下の項目を含むすべてのアーティファクトを削除するには、--all フラグを指定して odo delete コマンドを実行します。

  • devfile コンポーネント
  • odo deploy コマンドを使用してデプロイされた devfile Kubernetes コンポーネント
  • devfile
  • ローカル設定
$ odo delete --all

3.5.4.4. 利用可能なフラグ

-f, --force
このフラグを使用して確認質問を回避します。
-w, --wait
このフラグを使用して、コンポーネントおよび依存関係が削除されるのを待機します。このフラグは、アンデプロイ時には機能しません。

Common Flags フラグに関するドキュメントでは、コマンドで利用可能なフラグの詳細情報が提供されています。

3.5.5. odo deploy

odo を使用すると、CI/CD システムを使用してコンポーネントをデプロイする方法と同様に、コンポーネントをデプロイできます。まず、odo はコンテナーイメージをビルドしてから、コンポーネントのデプロイに必要な Kubernetes リソースをデプロイします。

コマンド odo deploy を実行すると、odo は devfile で kind deploy のデフォルトコマンドを検索し、以下のコマンドを実行します。このタイプの deploy は、バージョン 2.2.0 以降の devfile 形式でサポートされます。

deploy コマンドは通常、いくつかの 適用 コマンドで設定される 複合 コマンドです。

  • 適用されると、デプロイするコンテナーのイメージを構築し、それをレジストリーにプッシュする image コンポーネントを参照するコマンド。
  • Kubernetes コンポーネント を参照するコマンドは、適用されるとクラスターに Kubernetes リソースを作成します。

以下の devfile.yaml ファイルのサンプルでは、コンテナーイメージはディレクトリーにある Dockerfile を使用してビルドされます。イメージはレジストリーにプッシュされ、この新規にビルドされたイメージを使用して Kubernetes Deployment リソースがクラスターに作成されます。

schemaVersion: 2.2.0
[...]
variables:
  CONTAINER_IMAGE: quay.io/phmartin/myimage
commands:
  - id: build-image
    apply:
      component: outerloop-build
  - id: deployk8s
    apply:
      component: outerloop-deploy
  - id: deploy
    composite:
      commands:
        - build-image
        - deployk8s
      group:
        kind: deploy
        isDefault: true
components:
  - name: outerloop-build
    image:
      imageName: "{{CONTAINER_IMAGE}}"
      dockerfile:
        uri: ./Dockerfile
        buildContext: ${PROJECTS_ROOT}
  - name: outerloop-deploy
    kubernetes:
      inlined: |
        kind: Deployment
        apiVersion: apps/v1
        metadata:
          name: my-component
        spec:
          replicas: 1
          selector:
            matchLabels:
              app: node-app
          template:
            metadata:
              labels:
                app: node-app
            spec:
              containers:
                - name: main
                  image: {{CONTAINER_IMAGE}}

3.5.7. odo registry

odo は移植可能な devfile 形式を使用してコンポーネントを記述します。odo は各種の devfile レジストリーに接続して、さまざまな言語およびフレームワークの devfile をダウンロードできます。

公開されている利用可能な devfile レジストリーに接続するか、または独自の Secure Registry をインストールできます。

odo registry コマンドを使用して、odo によって使用されるレジストリーを管理し、devfile 情報を取得できます。

3.5.7.1. レジストリーの一覧表示

odo で現在接続しているレジストリーを一覧表示するには、以下のコマンドを実行します。

$ odo registry list

出力例:

NAME                       URL                             SECURE
DefaultDevfileRegistry     https://registry.devfile.io     No

DefaultDevfileRegistry は odo によって使用されるデフォルトレジストリーです。これは devfile.io プロジェクトによって提供されます。

3.5.7.2. レジストリーの追加

レジストリーを追加するには、以下のコマンドを実行します。

$ odo registry add

出力例:

$ odo registry add StageRegistry https://registry.stage.devfile.io
New registry successfully added

独自の Secure Registry をデプロイしている場合、--token フラグを使用してセキュアなレジストリーに対して認証するためにパーソナルアクセストークンを指定できます。

$ odo registry add MyRegistry https://myregistry.example.com --token <access_token>
New registry successfully added

3.5.7.3. レジストリーの削除

レジストリーを削除するには、以下のコマンドを実行します。

$ odo registry delete

出力例:

$ odo registry delete StageRegistry
? Are you sure you want to delete registry "StageRegistry" Yes
Successfully deleted registry

--force (または -f) フラグを使用して、確認なしでレジストリーを強制的に削除します。

3.5.7.4. レジストリーの更新

すでに登録されているレジストリーの URL またはパーソナルアクセストークンを更新するには、以下のコマンドを実行します。

$ odo registry update

出力例:

 $ odo registry update MyRegistry https://otherregistry.example.com --token <other_access_token>
 ? Are you sure you want to update registry "MyRegistry" Yes
 Successfully updated registry

--force (または -f) フラグを使用して、確認なしでレジストリーの更新を強制します。

3.5.8. odo service

odoOperator を利用して サービス をデプロイでき ます。

インストールに使用できるオペレーターとサービスのリストは、odo catalog コマンドを使用して見つけることができます。

サービスは コンポーネント のコンテキストで作成されるため、サービスをデプロイする前に odo create コマンドを実行してください。

サービスは、以下の 2 つのステップに従ってデプロイされます。

  1. サービスを定義し、その定義を devfile に保存します。
  2. 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 つのパラメーターで設定されます。

  1. マニフェストを作成します。

    $ 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
  2. マニフェストからサービスを作成します。

    $ odo service create --from-file my-redis.yaml
    Successfully added service to the configuration; do 'odo push' to create service on the cluster

3.5.8.2. サービスの削除

サービスを削除するには、以下のコマンドを実行します。

$ odo service delete

出力例

$ odo service list
NAME                       MANAGED BY ODO     STATE               AGE
Redis/my-redis-service     Yes (api)          Deleted locally     5m39s

$ odo service delete Redis/my-redis-service
? Are you sure you want to delete Redis/my-redis-service Yes
Service "Redis/my-redis-service" has been successfully deleted; do 'odo push' to delete service from the cluster

--force (または -f) フラグを使用して、確認なしでサービスを強制的に削除します。

3.5.8.3. サービスの一覧表示

コンポーネント用に作成されたサービスを一覧表示するには、以下のコマンドを実行します。

$ odo service list

出力例

$ odo service list
NAME                       MANAGED BY ODO     STATE             AGE
Redis/my-redis-service-1   Yes (api)          Not pushed
Redis/my-redis-service-2   Yes (api)          Pushed            52s
Redis/my-redis-service-3   Yes (api)          Deleted locally   1m22s

サービスごとに、STATE は、サービスが odo push コマンドを使用してクラスターにプッシュされているか、またはサービスがクラスターで実行中であるが、odo service delete コマンドを使用してローカルで devfile から削除されるかどうかを示します。

3.5.8.4. サービスに関する情報の取得

設定したパラメーターの種類、バージョン、名前、および一覧などのサービスの詳細を取得するには、以下のコマンドを実行します。

$ odo service describe

出力例

$ odo service describe Redis/my-redis-service
Version: redis.redis.opstreelabs.in/v1beta1
Kind: Redis
Name: my-redis-service
Parameters:
NAME                           VALUE
kubernetesConfig.image         quay.io/opstree/redis:v6.2.5
kubernetesConfig.serviceType   ClusterIP
redisExporter.image            quay.io/opstree/redis-exporter:1.0

3.5.9. odo ストレージ

odo を使用すると、ユーザーはコンポーネントに割り当てられるストレージボリュームを管理できます。ストレージボリュームは、emptyDir Kubernetes ボリュームを使用するエフェメラルボリューム、または 永続ボリュームクレーム (PVC) のいずれかです。PVC を使用すると、ユーザーは特定のクラウド環境の詳細を理解していなくても、永続ボリューム (GCE PersistentDisk や iSCSI ボリュームなど) を要求できます。永続ストレージボリュームは、再起動時にデータを永続化し、コンポーネントの再ビルドに使用できます。

3.5.9.1. ストレージボリュームの追加

ストレージボリュームをクラスターに追加するには、以下のコマンドを実行します。

$ odo storage create

出力例:

$ odo storage create store --path /data --size 1Gi
✓  Added storage store to nodejs-project-ufyy

$ odo storage create tempdir --path /tmp --size 2Gi --ephemeral
✓  Added storage tempdir to nodejs-project-ufyy

Please use `odo push` command to make the storage accessible to the component

上記の例では、最初のストレージボリュームが /data パスにマウントされており、サイズは 1Gi で、2 番目のボリュームが /tmp にマウントされ、一時的です。

3.5.9.2. ストレージボリュームの一覧表示

コンポーネントで現在使用されているストレージボリュームを確認するには、以下のコマンドを実行します。

$ odo storage list

出力例:

$ odo storage list
The component 'nodejs-project-ufyy' has the following storage attached:
NAME      SIZE     PATH      STATE
store     1Gi      /data     Not Pushed
tempdir   2Gi      /tmp      Not Pushed

3.5.9.3. ストレージボリュームの削除

ストレージボリュームを削除するには、以下のコマンドを実行します。

$ odo storage delete

出力例:

$ odo storage delete store -f
Deleted storage store from nodejs-project-ufyy

Please use `odo push` command to delete the storage from the cluster

上記の例では、-f フラグを使用すると、ユーザーパーミッションを要求せずにストレージを強制的に削除します。

3.5.9.4. 特定のコンテナーへのストレージの追加

devfile に複数のコンテナーがある場合、odo storage create コマンドで --container フラグを使用して、ストレージを割り当てるコンテナーを指定できます。

以下の例は、複数のコンテナーを持つ devfile の抜粋です。

components:
  - name: nodejs1
    container:
      image: registry.access.redhat.com/ubi8/nodejs-12:1-36
      memoryLimit: 1024Mi
      endpoints:
        - name: "3000-tcp"
          targetPort: 3000
      mountSources: true
  - name: nodejs2
    container:
      image: registry.access.redhat.com/ubi8/nodejs-12:1-36
      memoryLimit: 1024Mi

この例では、nodejs1nodejs2 の 2 つのコンテナーがあります。ストレージを nodejs2 コンテナーに割り当てるには、以下のコマンドを使用します。

$ odo storage create --container

出力例:

$ odo storage create store --path /data --size 1Gi --container nodejs2
✓  Added storage store to nodejs-testing-xnfg

Please use `odo push` command to make the storage accessible to the component

odo storage list コマンドを使用して、ストレージリソースを一覧表示できます。

$ odo storage list

出力例:

The component 'nodejs-testing-xnfg' has the following storage attached:
NAME      SIZE     PATH      CONTAINER     STATE
store     1Gi      /data     nodejs2       Not Pushed

3.5.10. 共通フラグ

以下のフラグは、ほとんどの odo コマンドで利用できます。

表3.1 odo フラグ

コマンド説明

--context

コンポーネントを定義するコンテキストディレクトリーを設定します。

--project

コンポーネントのプロジェクトを設定します。デフォルトは、ローカル設定で定義されたプロジェクトです。利用できる場合は、クラスターの現在のプロジェクトです。

--app

コンポーネントのアプリケーションを設定します。デフォルトは、ローカル設定で定義されたアプリケーションです。存在しない場合は、app にします。

--kubeconfig

デフォルト設定を使用していない場合は、パスを kubeconfig 値に設定します。

--show-log

このフラグを使用してログを表示します。

-f, --force

このフラグを使用して、コマンドに対して確認を求めるプロンプトを出さないように指示します。

-v, --v

詳細レベルを設定します。詳細は、odo でのロギング について参照してください。

-h, --help

コマンドのヘルプを出力します。

注記

一部のコマンドでフラグを使用できない場合があります。--help フラグを指定してコマンドを実行して、利用可能なすべてのフラグの一覧を取得します。

3.5.11. JSON 出力

コンテンツを出力する odo コマンドは、通常、-o json フラグを受け入れて、このコンテンツを JSON 形式で出力します。これは、他のプログラムがこの出力をより簡単に解析するのに適しています。

出力構造は Kubernetes リソースに似ており、kindapiVersionmetadataspec、および status フィールドがあります。

リスト コマンドは、リストのアイテムを一覧表示する items (または同様の) フィールドを含む List リソースを返します。各アイテムも Kubernetes リソースに類似しています。

delete コマンドは Status リソースを返します。ステータス Kubernetes リソース を参照してください。

他のコマンドは、ApplicationStorageURL などのコマンドに関連付けられたリソースを返します。

現在 -o json フラグを許可するコマンドの全一覧は以下のとおりです。

コマンド種類 (バージョン)リストアイテムの種類 (バージョン)完全なコンテンツかどうか

odo application describe

Application (odo.dev/v1alpha1)

該当なし

いいえ

odo application list

List (odo.dev/v1alpha1)

Application (odo.dev/v1alpha1)

?

odo catalog list components

List (odo.dev/v1alpha1)

missing

はい

odo catalog list services

List (odo.dev/v1alpha1)

ClusterServiceVersion (operators.coreos.com/v1alpha1)

?

odo catalog describe component

missing

該当なし

はい

odo catalog describe service

CRDDescription (odo.dev/v1alpha1)

該当なし

はい

odo component create

Component (odo.dev/v1alpha1)

該当なし

はい

odo component describe

Component (odo.dev/v1alpha1)

該当なし

はい

odo component list

List (odo.dev/v1alpha1)

Component (odo.dev/v1alpha1)

はい

odo config view

DevfileConfiguration (odo.dev/v1alpha1)

該当なし

はい

odo debug info

OdoDebugInfo (odo.dev/v1alpha1)

該当なし

はい

odo env view

EnvInfo (odo.dev/v1alpha1)

該当なし

はい

odo preference view

PreferenceList (odo.dev/v1alpha1)

該当なし

はい

odo project create

Project (odo.dev/v1alpha1)

該当なし

はい

odo project delete

Status (v1)

該当なし

はい

odo project get

Project (odo.dev/v1alpha1)

該当なし

はい

odo project list

List (odo.dev/v1alpha1)

Project (odo.dev/v1alpha1)

はい

odo registry list

List (odo.dev/v1alpha1)

missing

はい

odo service create

サービス

該当なし

はい

odo service describe

サービス

該当なし

はい

odo service list

List (odo.dev/v1alpha1)

サービス

はい

odo storage create

Storage (odo.dev/v1alpha1)

該当なし

はい

odo storage delete

Status (v1)

該当なし

はい

odo storage list

List (odo.dev/v1alpha1)

Storage (odo.dev/v1alpha1)

はい

odo url list

List (odo.dev/v1alpha1)

URL (odo.dev/v1alpha1)

はい