Creating Services
Services allow communication between your applications in your cluster.
You are browsing the latest version for the release v0.0.3.
In Kubernetes, a Service is an abstraction which defines a logical set of Pods and a policy by which to access them. A service allows communication between pods in your cluster.
The example below creates a MySQL deployment along with a service to access it.
Deployment::create('mysql')
->setContainerPort(3306)
->setContainerImage('mysql')
->setEnvironmentVariable(new EnvironmentVariable('MYSQL_ROOT_PASSWORD', fromEnvironmentVariableName: 'DB_PASSWORD'))
->setEnvironmentVariable(new EnvironmentVariable('MYSQL_DATABASE', fromEnvironmentVariableName: 'DB_DATABASE'))
->setEnvironmentVariable(new EnvironmentVariable('MYSQL_USER', fromEnvironmentVariableName: 'DB_USERNAME'))
->setEnvironmentVariable(new EnvironmentVariable('MYSQL_PASSWORD', fromEnvironmentVariableName: 'DB_PASSWORD'));
Service::create('mysql')
->setTargetPort(3306)
->setServicePort(3306);
Networking
Set Target Port
The target port is for forwarding traffic, traffic will be forwarded onto the container specified in your Deployment.
Service::create('mysql')->setTargetPort(3306);
Set Service Port
The service port is for receiving traffic, an example would be from your Laravel application.
Service::create('mysql')->setServicePort(3306);
Load Balancer
You can create a service to act as a load balancer, calling this method will create a load balancer on the Cloud provider you use or update it if needed.
Load Balancers can take a while to provision so you may want to check the status by logging into your provider.
Service::create('laravel')->loadBalancer();
Environment
Set Namespace
You may want to explicitly set the namespace for your service in Kubernetes, you can achieve this with the following method.
Service::create('mysql')->setNamespace('production');
Last updated