Service
A Service represents a long-running service component in OpenChoreo. It defines the deployment configuration for service-type components by referencing a Workload and optionally a ServiceClass for platform-defined policies. Services can expose APIs with different access levels and integrate with OpenChoreo's API management capabilities.
API Version
openchoreo.dev/v1alpha1
Resource Definition
Metadata
Services are namespace-scoped resources that must be created within an Organization's namespace and belong to a Component through the owner field.
apiVersion: openchoreo.dev/v1alpha1
kind: Service
metadata:
name: <service-name>
namespace: <org-namespace> # Organization namespace
Spec Fields
Field | Type | Required | Default | Description |
---|---|---|---|---|
owner | ServiceOwner | Yes | - | Ownership information linking the service to a project and component |
workloadName | string | Yes | - | Name of the workload that this service references |
className | string | No | "default" | Name of the ServiceClass that provides deployment configuration |
apis | map[string]ServiceAPI | No | API configuration for endpoints. Keys must match endpoint keys in the workload |
ServiceOwner
Field | Type | Required | Default | Description |
---|---|---|---|---|
projectName | string | Yes | - | Name of the project that owns this service (min: 1) |
componentName | string | Yes | - | Name of the component that owns this service (min: 1) |
ServiceAPI
Field | Type | Required | Default | Description |
---|---|---|---|---|
className | string | No | "default" | API class name for management policies |
type | EndpointType | Yes | - | Type of the API endpoint |
rest | RESTEndpoint | No | - | REST-specific endpoint configuration |
EndpointType
Value | Description |
---|---|
HTTP | Standard HTTP endpoint |
REST | RESTful API endpoint |
gRPC | gRPC service endpoint |
GraphQL | GraphQL API endpoint |
Websocket | WebSocket endpoint |
TCP | Raw TCP endpoint |
UDP | UDP endpoint |
RESTEndpoint
Field | Type | Required | Default | Description |
---|---|---|---|---|
backend | HTTPBackend | No | - | Backend configuration for the REST endpoint |
exposeLevels | [RESTOperationExposeLevel] | No | [] | Access levels for the REST API |
HTTPBackend
Field | Type | Required | Default | Description |
---|---|---|---|---|
port | int32 | Yes | - | Port number where the backend service is listening |
basePath | string | No | "" | Base path for the API (e.g., "/api/v1") |
RESTOperationExposeLevel
Value | Description |
---|---|
Project | API accessible only within the same project |
Organization | API accessible within the organization |
Public | API publicly accessible (subject to authentication/authorization) |
Examples
Basic Service
apiVersion: openchoreo.dev/v1alpha1
kind: Service
metadata:
name: customer-service
namespace: default
spec:
owner:
projectName: my-project
componentName: customer-service
workloadName: customer-service-workload
className: default
Service with API Configuration
apiVersion: openchoreo.dev/v1alpha1
kind: Service
metadata:
name: order-service
namespace: default
spec:
owner:
projectName: my-project
componentName: order-service
workloadName: order-service-workload # References workload with endpoint "order-api"
className: production-service
apis:
order-api: # Must match endpoint key "order-api" in the workload
className: default
type: REST
rest:
backend:
port: 8080
basePath: /api/v1
exposeLevels:
- Organization
- Public
Annotations
Services support the following annotations:
Annotation | Description |
---|---|
openchoreo.dev/display-name | Human-readable name for UI display |
openchoreo.dev/description | Detailed description of the service |
Related Resources
- Component - Components that own services
- Workload - Workloads referenced by services
- ServiceClass - Platform-defined service templates
- ServiceBinding - Environment-specific service instances