3.5. odo CLI 참조

3.5.1. odo build-images

odo 는 Dockerfile을 기반으로 컨테이너 이미지를 빌드하고 이러한 이미지를 레지스트리에 푸시할 수 있습니다.

odo build-images 명령을 실행할 때 odo이미지 유형을 사용하여 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 는 빌드 컨텍스트로 사용되는 디렉터리를 나타냅니다. 기본값은 ${ rshS_ROOT} 입니다.

각 이미지 구성 요소에 대해 odo는 podman 또는 docker (이 순서대로 발견된 첫 번째)를 실행하여 지정된 Dockerfile, 빌드 컨텍스트 및 인수를 사용하여 이미지를 빌드합니다.

--push 플래그가 명령에 전달되면 이미지가 빌드 후 해당 레지스트리로 푸시됩니다.

3.5.2. odo catalog

odo 는 다양한 카탈로그 를 사용하여 구성 요소서비스를 배포합니다.

3.5.2.1. components

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
시작 프로젝트는 새 프로젝트를 시작하는 데 도움이 될 수 있는 devfile의 동일한 언어 및 프레임 워크에 있는 샘플 프로젝트입니다.

starter 프로젝트에서 프로젝트를 생성하는 방법에 대한 자세한 내용은 odo create 를 참조하십시오.

3.5.2.2. 서비스

odoOperator 의 도움을 받아 서비스를 배포할 수 있습니다.

Operator Lifecycle Manager 를 사용하여 배포된 Operator만 odo에서 지원됩니다.

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

이 예에서는 클러스터에 두 개의 Operator가 설치되어 있습니다. postgresql-operator.v0.1.1 Operator는 PostgreSQL과 관련된 서비스를 배포합니다. 백업데이터베이스. redis-operator.v0.8.0 Operator는 Redis와 관련된 서비스를 배포합니다. RedisClusterRedis.

참고

사용 가능한 모든 Operator 목록을 가져오기 위해 odoSucceeded 단계에 있는 현재 네임스페이스의 CSV(ClusterServiceVersion) 리소스를 가져옵니다. 클러스터 전체 액세스를 지원하는 Operator의 경우 새 네임스페이스가 생성되면 해당 리소스가 자동으로 추가됩니다. 그러나 성공 단계에 있을 때까지 다소 시간이 걸릴 수 있으며 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

해당 이름에 searched 키워드가 포함된 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.
[...]

서비스는 CRD(CustomResourceDefinition) 리소스로 클러스터로 표시됩니다. 이전 명령은 이 사용자 정의 리소스의 인스턴스를 정의하는 데 사용할 수 있는 종류,버전, 필드 목록과 같은 CRD에 대한 세부 정보를 표시합니다.

필드 목록은 CRD에 포함된 OpenAPI 스키마 에서 추출됩니다. 이 정보는 CRD에서 선택 사항이며, 없는 경우 서비스를 나타내는 CSV(ClusterServiceVersion) 리소스에서 추출됩니다.

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 을 생성하려면 구성 요소의 이름 및 유형으로 odo create 명령을 실행합니다(예: nodejs 또는 go).

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

구성 요소 유형, 이름 및 구성 요소에 대한 프로젝트를 선택하라는 메시지가 표시됩니다. starter 프로젝트를 다운로드할지 여부를 선택할 수도 있습니다. 완료되면 작업 디렉터리에 새 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에서 deploy 의 기본 명령을 검색하고 이 명령을 실행합니다. kind deploy 는 버전 2.2.0부터 devfile 형식에서 지원됩니다.

deploy 명령은 일반적으로 몇 가지 apply 명령으로 구성된 복합 명령입니다.

  • 이미지 구성 요소를 참조하는 명령은 배포할 컨테이너 이미지를 빌드한 다음 해당 레지스트리로 내보냅니다.
  • Kubernetes 구성 요소를 참조하는 명령은 클러스터에 Kubernetes 리소스를 생성합니다.

다음 예제 devfile.yaml 파일을 사용하면 디렉터리에 있는 Dockerfile 을 사용하여 컨테이너 이미지가 빌드됩니다. 이미지는 레지스트리로 푸시된 다음 이 새로 빌드된 이미지를 사용하여 클러스터에 Kubernetes 배포 리소스가 생성됩니다.

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 레지스트리

odo 는 이식 가능한 devfile 형식을 사용하여 구성 요소를 설명합니다. odo 는 다양한 devfile 레지스트리에 연결하여 다양한 언어 및 프레임워크에 대한 devfile을 다운로드할 수 있습니다.

공개적으로 사용 가능한 devfile 레지스트리에 연결하거나 자체 보안 레지스트리를 설치할 수 있습니다.

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

자체 보안 레지스트리를 배포하는 경우 개인 액세스 토큰을 지정하여 --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 서비스

odoOperator 의 도움을 받아 서비스를 배포할 수 있습니다.

설치에 사용 가능한 Operator 및 서비스 목록은 odo catalog 명령을 사용하여 확인할 수 있습니다.

서비스는 구성 요소 의 컨텍스트에서 생성되므로 서비스를 배포하기 전에 odo create 명령을 실행합니다.

서비스는 다음 두 단계를 사용하여 배포됩니다.

  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. 매니페스트 간소화

기본적으로 devfile.yaml 파일에서 참조하는 kubernetes/ 디렉터리에 새 매니페스트가 생성됩니다. --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 서비스를 구성합니다.

$ 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 서비스는 세 개의 매개 변수로 구성됩니다.

  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

각 서비스에 대해 STATEodo 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 로 설정되어 두 번째 볼륨이 /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 라는 두 개의 컨테이너가 있습니다. 스토리지를 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 플래그

명령Description

--context

구성 요소가 정의된 컨텍스트 디렉터리를 설정합니다.

--project

구성 요소의 프로젝트를 설정합니다. 기본값은 로컬 구성에 정의된 프로젝트입니다. 사용할 수 없는 경우 클러스터의 현재 프로젝트입니다.

--app

구성 요소의 애플리케이션을 설정합니다. 기본값은 로컬 구성에 정의된 애플리케이션입니다. 사용할 수 없는 경우 .

--kubeconfig

기본 구성을 사용하지 않는 경우 kubeconfig 값으로 경로를 설정합니다.

--show-log

이 플래그를 사용하여 로그를 확인합니다.

-f, --force

이 플래그를 사용하여 사용자에게 확인 메시지를 표시하지 않도록 명령에 알립니다.

-v, --v

상세 수준을 설정합니다. 자세한 내용은 odo에서 로깅 을 참조하십시오.

-h, --help

명령에 대한 도움말을 출력합니다.

참고

일부 명령에는 일부 플래그를 사용할 수 없습니다. --help 플래그와 함께 명령을 실행하여 사용 가능한 모든 플래그 목록을 가져옵니다.

3.5.11. JSON 출력

콘텐츠를 출력하는 odo 명령은 일반적으로 -o json 플래그를 수락하여 이 콘텐츠를 JSON 형식으로 출력하는 경우 다른 프로그램이 이 출력을 더 쉽게 구문 분석하는 데 적합합니다.

출력 구조는 kind,apiVersion,metadata,spec, status 필드와 함께 Kubernetes 리소스와 유사합니다.

나열 명령은 목록의 항목을 나열하는 항목 (또는 유사한) 필드를 포함하는 List 리소스를 반환하며 각 항목은 Kubernetes 리소스와 유사합니다.

삭제 명령은 상태 리소스를 반환합니다. Status Kubernetes 리소스 를 참조하십시오.

다른 명령은 명령과 관련된 리소스를 반환합니다(예: 애플리케이션 , 스토리지,URL 등).

현재 -o json 플래그를 수락하는 명령의 전체 목록은 다음과 같습니다.

명령종류(버전)목록 항목의 종류(버전)완전한 콘텐츠입니까?

odo application describe

애플리케이션(odo.dev/v1alpha1)

해당 없음

제공되지 않음

odo 애플리케이션 목록

목록 (odo.dev/v1alpha1)

애플리케이션(odo.dev/v1alpha1)

?

odo catalog list components

목록 (odo.dev/v1alpha1)

누락됨

제공됨

odo catalog list services

목록 (odo.dev/v1alpha1)

ClusterServiceVersion (operators.coreos.com/v1alpha1)

?

odo catalog describe 구성 요소

누락됨

해당 없음

제공됨

odo catalog describe service

CRDDescription(odo.dev/v1alpha1)

해당 없음

제공됨

odo 구성 요소 생성

구성 요소(odo.dev/v1alpha1)

해당 없음

제공됨

odo component describe

구성 요소(odo.dev/v1alpha1)

해당 없음

제공됨

odo 구성 요소 목록

목록 (odo.dev/v1alpha1)

구성 요소(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

프로젝트(odo.dev/v1alpha1)

해당 없음

제공됨

odo project delete

상태(v1)

해당 없음

제공됨

odo project get

프로젝트(odo.dev/v1alpha1)

해당 없음

제공됨

odo 프로젝트 목록

목록 (odo.dev/v1alpha1)

프로젝트(odo.dev/v1alpha1)

제공됨

odo 레지스트리 목록

목록 (odo.dev/v1alpha1)

누락됨

제공됨

odo service create

Service

해당 없음

제공됨

odo service describe

Service

해당 없음

제공됨

odo 서비스 목록

목록 (odo.dev/v1alpha1)

Service

제공됨

odo storage create

스토리지(odo.dev/v1alpha1)

해당 없음

제공됨

odo storage delete

상태(v1)

해당 없음

제공됨

odo 스토리지 목록

목록 (odo.dev/v1alpha1)

스토리지(odo.dev/v1alpha1)

제공됨

odo url 목록

목록 (odo.dev/v1alpha1)

URL (odo.dev/v1alpha1)

제공됨