13.3.7. Categories
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
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.
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.
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.
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.
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.
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.