Skip to main content

Cortex Entities

The core of Cortex is an entity catalog. Every entity in your Cortex catalog is described by a YAML file called the Cortex Catalog Descriptor, also referred to as an entity's Cortex YAML (naturally stemming from cortex.yaml, which is filename that powers the GitOps approach!).

Catalog entities are broken into two distinct types:

  1. Services - the default type and the core of your catalog, used for entities such as microservices, libraries, components, etc – essentially any codebase-like module.
  2. Resources - any entity that is not a service, such as infrastructure assets, kafka topics, custom types, etc.

When you log in you'll see this distinction immediately in the top navigation.

top-nav

By default, your account is set up to use GitOps. However, if you want to work without GitOps you can change the setting in Settings | App Preferences | Enable UI Editor.

UI Editing

We recommend starting off using the UI editor (which includes a built-in YAML editor) and switching over to GitOps when ready for a wider rollout.

Catalog Descriptor

Regardless of whether you're using GitOps or UI Editing, your catalog entities are backed by YAML files. Each file is a fully compliant OpenAPI 3 spec file, with our own Cortex-specific extensions that we've added.

You can still use Cortex if you don't use OpenAPI/Swagger!

We use the OpenAPI spec as a base for service metadata, since it's an open spec with official support for extensions. That lets us extend it to be a catalog descriptor spec with optional usage of actual OpenAPI fields.

Service Entities

A barebones spec file has the OpenAPI version, along with an info section that contains some basic details.

openapi: 3.0.0
info:
title: My Service
description: This is my cool service.
x-cortex-tag: my-service

The only required fields under info are the title and the x-cortex-tag.

Resource Entities

However, if your entity is not a service, you must also specify x-cortex-type and x-cortex-definition. The x-cortex-definition field is validated against the Resource Definition.

openapi: 3.0.0
info:
title: My Database
description: This is my cool MySQL database.
x-cortex-tag: my-database
x-cortex-type: mysql
x-cortex-definition:
version: 8.0.29
distribution: percona

Entity Tag

You'll see us refer to the "Entity Tag" throughout the docs. The Entity Tag is a unique identifier that's used through Cortex, for example to declare dependencies on other services or to look up information using the Slackbot.

tip

Any time you see a mention of a Entity Tag, we're referring the value of x-cortex-tag.

Adding more information

Any additional metadata you want to add to your descriptor belongs in the info section. Throughout the docs, you'll see snippets that start with x-cortex-* – make sure to add this to the info section!