Menu Close

3.5.8. odo service

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 service라는 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 서비스를 구성합니다.

$ 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