This generates a service manifest as described here https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service
Generating a service is very simple and normally you just need to enable the service plugin. The service plugin depends on the deployment plugin and thus, every property of the service is automatically derived from the deployment definition.
Consider the nginx deployment from previous, we can fully derive the service:
import kubeyml.deployment._ import kubeyml.service._ import kubeyml.deployment.api._ import scala.concurrent.duration._ val deployment = deploy.namespace("yournamespace") .service("nginx-deployment") .withImage("nginx:1.7.9") .withProbes( livenessProbe = HttpProbe(HttpGet("/", port = 80, httpHeaders = List.empty), period = 10 seconds), readinessProbe = HttpProbe(HttpGet("/", port = 80, httpHeaders = List.empty), failureThreshold = 10) ).replicas(3) .pullDockerImage(IfNotPresent) .addPorts(List(Port(None, 80)) ) val service = Service.fromDeployment(deployment)
Which would generate the following service.yml file
kind: Service apiVersion: v1 metadata: name: nginx-deployment namespace: yournamespace spec: type: NodePort selector: app: nginx-deployment ports: - name: pn80 protocol: TCP port: 80 targetPort: 80
At the moment there’s little room for customisation. If you have a use-case you can open an issue or even better a pull request.
These are the available properties that you can customise from the sbt layer.
|portMappings||Port mappings against the deployment (service to pod)||Derived from deployment|
|service||Key configuration for modifying the service properties||Derived from deployment|
You can also create your own instance of the service case class and see how far customisation can get you.
There’s no DSL for this yet.
Go to the service recipe for a full deployment example.