3.5.8. odo service

odo 可使用 Operator 帮助部署服务

可使用 odo catalog 命令找到可用的 Operator 和服务列表。

服务在 组件 上下文中创建,因此在部署服务前运行 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. 显示清单

默认情况下,在 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 清单来配置您自己的规格。在以下示例中,Red Hat 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