:_content-type: REFERENCE [id="odo-catalog_{context}"] = odo catalog `odo` uses different _catalogs_ to deploy _components_ and _services_. == Components `odo` uses the portable _devfile_ format to describe the components. It can connect to various devfile registries to download devfiles for different languages and frameworks. See `odo registry` for more information. === Listing components To list all the _devfiles_ available on the different registries, run the command: [source,terminal] ---- $ odo catalog list components ---- .Example output [source,terminal] ---- 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 [...] ---- === Getting information about a component To get more information about a specific component, run the command: [source,terminal] ---- $ odo catalog describe component ---- For example, run the command: [source,terminal] ---- $ odo catalog describe component nodejs ---- .Example output [source,terminal] ---- * 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_ is the registry from which the devfile is retrieved. <2> _Starter projects_ are sample projects in the same language and framework of the devfile, that can help you start a new project. See `odo create` for more information on creating a project from a starter project. == Services `odo` can deploy _services_ with the help of _Operators_. Only Operators deployed with the help of the https://olm.operatorframework.io/[_Operator Lifecycle Manager_] are supported by odo. //// See link:/docs/getting-started/cluster-setup/kubernetes#installing-the-operator-lifecycle-manager-olm[Installing the Operator Lifecycle Manager (OLM)] for more information. //// === Listing services To list the available Operators and their associated services, run the command: [source,terminal] ---- $ odo catalog list services ---- .Example output [source,terminal] ---- Services available through Operators NAME CRDs postgresql-operator.v0.1.1 Backup, Database redis-operator.v0.8.0 RedisCluster, Redis ---- In this example, two Operators are installed in the cluster. The `postgresql-operator.v0.1.1` Operator deploys services related to PostgreSQL: `Backup` and `Database`. The `redis-operator.v0.8.0` Operator deploys services related to Redis: `RedisCluster` and `Redis`. [NOTE] ==== To get a list of all the available Operators, `odo` fetches the ClusterServiceVersion (CSV) resources of the current namespace that are in a _Succeeded_ phase. For Operators that support cluster-wide access, when a new namespace is created, these resources are automatically added to it. However, it may take some time before they are in the _Succeeded_ phase, and `odo` may return an empty list until the resources are ready. ==== === Searching services To search for a specific service by a keyword, run the command: [source,terminal] ---- $ odo catalog search service ---- For example, to retrieve the PostgreSQL services, run the command: [source,terminal] ---- $ odo catalog search service postgres ---- .Example output [source,terminal] ---- Services available through Operators NAME CRDs postgresql-operator.v0.1.1 Backup, Database ---- You will see a list of Operators that contain the searched keyword in their name. === Getting information about a service To get more information about a specific service, run the command: [source,terminal] ---- $ odo catalog describe service ---- For example: [source,terminal] ---- $ odo catalog describe service postgresql-operator.v0.1.1/Database ---- .Example output [source,terminal] ---- KIND: Database VERSION: v1alpha1 DESCRIPTION: Database is the Schema for the 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. [...] ---- A service is represented in the cluster by a CustomResourceDefinition (CRD) resource. The previous command displays the details about the CRD such as `kind`, `version`, and the list of fields available to define an instance of this custom resource. The list of fields is extracted from the _OpenAPI schema_ included in the CRD. This information is optional in a CRD, and if it is not present, it is extracted from the ClusterServiceVersion (CSV) resource representing the service instead. It is also possible to request the description of an Operator-backed service, without providing CRD type information. To describe the Redis Operator on a cluster, without CRD, run the following command: [source,terminal] ---- $ odo catalog describe service redis-operator.v0.8.0 ---- .Example output [source,terminal] ---- 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 ----