Create a service¶
A service is a reusable definition of software or behavior that can be added to a stack. Creating a service makes it available to your organization or project, but it does not deploy anything by itself. To deploy it, add the service to a stack, publish the stack, and create or upgrade an app instance from that stack.
For the stack step, see Create a stack.
Choose a creation method¶
Use the method that matches how you want to own and update the service:
| Method | Use when |
|---|---|
| Dashboard Git import | You maintain service.yml in a Git repository and want Wodby to track that repository. |
| CLI Git import | You want the same Git-backed service import from automation or scripts. |
| CLI manifest creation | You have a local service.yml and want to create a non-Git-backed service. |
| Helm chart scaffold | You want to generate a starting service.yml from an existing Helm chart. |
Import a Git-backed service¶
Use Git when you want the service manifest to remain the source of truth.
The repository must contain a service.yml, or an index.yml that lists multiple service directories:
services:
- php
- nginx
Each listed directory must contain its own service.yml. See the service template reference.
Dashboard¶
- Connect a Git provider integration if the repository is not already available. See Git provider.
- Open
Services. - Start an import from Git.
- Select the organization or project, Git integration, repository, ref type, and ref.
- Import the service.
Git-backed services can later be updated from the same repository manually or automatically. See Service updates.
CLI¶
Use wodby service import for a Git-backed service:
wodby service import \
--org 123 \
--integration github-main \
--remote-git-repo acme/custom-services \
--git-ref main \
--git-ref-type branch \
--wait
To create the service in a project scope, include --project:
wodby service import \
--org 123 \
--project 456 \
--integration github-main \
--remote-git-repo acme/custom-services \
--git-ref v1.0.0 \
--git-ref-type tag \
--wait
See wodby service import for all flags.
Create from a local manifest¶
Use manifest creation when you have a service.yml file and do not need Wodby to track a Git repository.
Validate the manifest first:
wodby service validate-manifest service.yml --org 123
Create the service:
wodby service create-from-manifest service.yml --org 123 --version 1.0.0
Create it in a project scope:
wodby service create-from-manifest service.yml --org 123 --project 456 --version 1.0.0
Use --include for referenced files such as configs or Dockerfiles when the manifest points to local files:
wodby service create-from-manifest service.yml \
--org 123 \
--version 1.0.0 \
--include configs/app.conf \
--include Dockerfile
See:
Create from a Helm chart¶
Use the Helm scaffold workflow when an existing Helm chart mostly describes one logical service, such as Memcached,
Redis, a web server, or a single application workload. The Wodby CLI renders the chart, detects workloads and Kubernetes
Services, and generates a service.yml that you review before creating the service.
If the chart installs several independent application components, CRDs, operators, or cluster-scoped infrastructure,
review whether it should become a stack or an infrastructure service
instead.
Start by inspecting the chart:
wodby helm inspect oci://registry-1.docker.io/bitnamicharts/memcached
You can also use repository/chart URL shorthand:
wodby helm inspect https://charts.bitnami.com/bitnami/redis
That shorthand is equivalent to:
wodby helm inspect --source https://charts.bitnami.com/bitnami --chart redis
Use --version when you want a specific chart version:
wodby helm inspect oci://registry-1.docker.io/bitnamicharts/memcached --version 8.6.9
Review warnings carefully. Warnings about multiple workloads, CRDs, hooks, persistent volume claims, or cluster-scoped resources usually mean the generated manifest needs manual changes before it is safe to create as a Wodby service.
Generate a service manifest and write it to a file:
wodby helm scaffold-service \
oci://registry-1.docker.io/bitnamicharts/memcached \
--version 8.6.9 \
--out service.yml
You can override generated service metadata:
wodby helm scaffold-service \
https://charts.bitnami.com/bitnami/redis \
--version 22.0.7 \
--service-name redis \
--service-title Redis \
--out service.yml
If the chart needs non-default values to render the right workload shape, pass them during scaffolding:
wodby helm scaffold-service \
oci://registry-1.docker.io/bitnamicharts/memcached \
--values-yaml values.yml \
--out service.yml
A simple chart usually generates a manifest like this:
name: memcached
title: Memcached
type: service
scalable: true
options:
- version: 8.6.9
tag: latest
default: true
helm:
name: memcached
source: oci://registry-1.docker.io/bitnamicharts/memcached
chart: oci://registry-1.docker.io/bitnamicharts/memcached
version: 8.6.9
workloads:
- name: memcached
kind: deployment
primary: true
selector:
matchLabels:
app.kubernetes.io/instance: "{{helm.release}}"
app.kubernetes.io/name: memcached
containers:
- name: memcached
image: registry-1.docker.io/bitnami/memcached
endpoints:
- name: memcached
main: true
ports:
- name: memcache
number: 11211
main: true
protocol: tcp
Check the generated fields before creating the service:
name: stable machine name for the Wodby service.type: service type. Change it when the chart is a datastore, database, storage, or infrastructure service.options[].version: Wodby service option shown to users.options[].tag: container image tag appended toworkloads[].containers[].image.helm.source,helm.chart,helm.version: chart reference Wodby uses for validation and deployment.workloads[].selector.matchLabels: must match exactly one rendered Kubernetes workload.endpoints[]: ports Wodby exposes for stack and app-service configuration.
After reviewing the generated service.yml, validate and create it with the same manifest workflow used for any custom
service:
wodby service validate-manifest service.yml --org 123
wodby service create-from-manifest service.yml --org 123 --version 1.0.0
Expect to edit the scaffolded manifest when:
- the chart has more than one workload
- the chart renders CRDs, jobs, hooks, or cluster-scoped resources
- the chart needs persistent storage
- endpoint ports are not enough to describe how users should connect to the service
- users need configurable values exposed as Wodby settings
- the chart uses multiple container images with different tag policies
- the service needs links, tokens, volumes, backups, imports, configs, or actions
The scaffold is intentionally conservative. It gives you a valid baseline when the chart shape is simple, but a good public service still needs a deliberate Wodby service model. For full manifest details, see the service template reference.
See:
After creating the service¶
A service must be referenced by a stack before it can be deployed by an app.
- Create or update a stack that includes the service. See Create a stack.
- Configure stack-service defaults such as options, env vars, volumes, links, settings, and Helm values.
- Publish the stack revision when needed.
- Create an app or app instance from the stack.
For ongoing service revisions and stack behavior, see Service updates and Stack updates.