Create a New Service
Prerequisites
Make sure you have the following ready:
- A GCP account & project or an AWS account.
- At least one Kubernetes cluster - see guidance here
- Cloud provider credentials to be saved in a GitHub Actions secret (instructions)
Add Service Page
In the dashboard side-menu, under “Services” click on “Add.”
Basic Details
Fill out the following fields:
- Import or Create New Service? Choose whether to create a new service repo from scratch or import an existing service from a repo.
- Service Repo Type KoalaOps supports both single-service-per-repo and monorepo configurations.
- Select Repo For creating a new service, a repository will be created with the service name. For importing an existing repo, select the appropriate repository.
- Deployment Files Location Choose whether to keep deployment files in the service repo or specify a deployment folder path. See the following blog post (Managing Kubernetes Configurations) for more info.
- Service Name: The name of the service (a repo will be created for the service with that name if new).
- Description: A brief description of the service, displayed in the UI.
- Container Registry Provider & Registry: Specify where the container images will be stored.
- Template: Choose from a list of predefeind templates or select “No template” for a blank setup. You may also use your own custom templates. Contact KoalaOps support for more info on custom templates.
Network Configuration
Configure how your service is exposed to the network.
Service
- Port Name (Optional): Define a label for the exposed port.
- Container Port: The port the application listens on inside the container.
- Service Port: The external port through which the service is exposed.
- Protocol: The network protocol used (default: TCP).
Ingress
-
Enable Ingress: Toggle to make the service accessible externally.
-
Enable TLS (HTTPS): Toggle to enable secure HTTPS connections.
-
Domain: Define the top-level domain for ingress. The default format is: [env].[service-name].[cluster-name].[domain] Example: If your company domain is
koalaops.com
and you have a clusternon-prod-cluster
, the service “hello-world” in “dev” env would be: dev.hello-world.non-prod-cluster.koalaops.com -
Ingress Class Name: Specify the ingress controller (default: nginx).
-
Ingress Port: Define the ingress port (default: 80).
-
Path & Path Type: Define how the service is accessed via URLs.
-
Annotations: Add custom Kubernetes annotations if needed.
Environments
It’s common to have multiple environments such as dev, qa, staging, and production. Not all services will necessarily use the same environments.
By default, two environments are pre-populated: dev and prod. Specify the cluster for each environment.
Editable Fields
- Namespace: Define the Kubernetes namespace for the service.
- Cluster: Select the cluster for deployment.
- Auto Deploy: Toggle to enable auto-deployment for the environment.
- Ingress: Enable or disable ingress for the environment.
- Ingress Host: Customize the ingress hostname for this environment.
Hit ‘Create’!
KoalaOps will now create the service and re-direct you to the new service page.
You will get all of the following out of the box:
- A new repo on your Git provider (e.g. GitHub)
- A service template (unless you chose an empty template)
- CI/CD pipeline with workflows for build, test, create a release, and deploy
- Kustomize setup for multiple environments
- Ingress with SSL (if enabled for each environment)
- Preset configurations for managing Env Vars and Secrets
- Full Observability stack (Logging, Monitoring, Tracing)