Home / Keptn v1 Docs / Release 0.8.7 / Manage Keptn Project/Service / Service
After creating a project, Keptn allows creating a service or onboarding a service into Keptn. The difference between creating and onboarding is as follows:
Create a service: This creates a new and empty service in the specified project. This option is used when not deploying a service with Keptn.
Onboard a service: This creates a new service and uploads the configuration to deploy the service. The configuration has to be a Helm Chart.
${PROJECT}-${STAGE}-${SERVICE}-generated
must be less than 53 characters (Note: this limitation comes from Kubernetes/Helm)${SERVICE}-generated
to allow longer service names)--project
flag/):keptn create service SERVICENAME --project=PROJECTNAME
For describing the deployable Kubernetes resources of a service that gets onboarded, Helm charts are used with the following requirements:
The Helm chart has to contain exactly one deployment. In this deployment, the properties spec.selector.matchLabels.app
and spec.template.metadata.labels.app
have to be set.
The Helm chart has to contain exactly one service. In this service, the property spec.selector.app
has to be set.
The Helm chart has to contain a values.yaml
file with at least the image
and replicaCount
parameter for the deployment. These image
and replicaCount
parameters have to be used in the deployment. An example is shown below:
image: docker.io/keptnexamples/carts:0.11.1
replicaCount: 1
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: your_deployment
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app: your_service
template:
metadata:
labels:
app: your_service
spec:
containers:
- name: your_service
image: "{{ .Values.image }}"
Note: If you are using custom configurations and you would like to have the environment variables KEPTN_PROJECT
, KEPTN_STAGE
, and KEPTN_SERVICE
within your service, add the following environment variables to your deployment configuration.
env:
...
- name: KEPTN_PROJECT
value: "{{ .Chart.Name }}"
- name: KEPTN_STAGE
valueFrom:
fieldRef:
fieldPath: "metadata.namespace"
- name: KEPTN_SERVICE
value: "{{ .Values.SERVICE_PLACEHOLDER_C.service.name }}"
Onboard a service:
--project
flag), and the root directory of a Helm chart (--chart
flag/):keptn onboard service SERVICENAME --project=PROJECTNAME --chart=FILEPATH
.tgz
can be referenced. In this case, the Helm chart will be stored unpacked.keptn onboard service SERVICENAME --project=PROJECTNAME --chart=HELM_CHART.tgz
keptn create service SERVICENAME --project=PROJECTNAME
keptn add-resource --project=PROJECTNAME --service=SERVICENAME --all-stages --resource=HELM_CHART.tgz --resourceUri=helm/SERVICENAME.tgz