13.3.7. Categories

The Categories element is a list of classifications for a particular cartridge, and contains two distinct groups:
  • system categories are special to the platform and influence the system behavior.
  • descriptive categories are arbitrary classifications that improve the searching of cartridges in the Management Console and the client tools.

13.3.7.1. System Categories

system categories contain the following subcategories:
  • web_framework
  • web_proxy
  • service
  • plugin
  • embedded
  • domain_scope
Web Framework Category

The web_framework category describes cartridges that accept inbound HTTP, HTTPS, and WebSocket requests. SSL termination occurs at the platform layer before cartridge interaction. The original inbound protocol is passed to the cartridge using the X-Forwarded-Proto header. An application can have one cartridge from the web_framework category.

Web Proxy Category

The web_proxy category describes cartridges that route web traffic to the application's gears. When a scalable application is created with a cartridge from the web_framework category, a web_proxy cartridge is automatically added to enable the auto scaling feature. Therefore, when a web_framework cartridge has to scale beyond a single gear, the web_proxy cartridge automatically routes to the endpoint defined by the Public-Port-Name with the PROXY_PORT value. The web_proxy cartridge is automatically updated over HTTP with routing rules of the new gears as they are added. An application can have one cartridge from the web_proxy category.

Service Category

The service category describes add-on cartridges that are not based on HTTP, such as MySQL. The service category cartridges can scale independently, but may not be addressable outside of the platform. Therefore, OpenShift Enterprise applications must have at least one web_framework category cartridge so that the application's DNS registration contains at least one addressable HTTP endpoint. However, most applications consist of a web_framework category cartridge and other cartridges from the service category. Therefore, using the service category to classify a cartridge, such as MySQL, installs the cartridge on a separate gear from that of the web_framework cartridge. This allows both cartridges to scale independently.

Embedded Category

The embedded category describes cartridges that are always collocated or installed with any other primary cartridge in non-scalable applications. For example, the Jenkins client cartridge can be combined with any web application cartridge to offload the builds to a Jenkins service.

Plugin Category

The plugin category is similar to the embedded category, but for scalable applications. It describes cartridges that can be collocated with other cartridges in scalable applications. The plugin category uses defined Group-Overrides to determine the collocation between cartridges. For example, the Group-Overrides can specify that a Cron cartridge must be collocated with the web_framework category cartridge.

Domain Scope Category

The domain_scope category describes cartridges that can only have a single instance within a domain. For example, the Jenkins server cartridge contains the domain_scope category to ensure that there is only one Jenkins server application within an entire domain. The Jenkins client cartridge is embedded in all other applications to enable builds that are handled by the Jenkins server.