GKEService
A service hosted on a GKE Kubernetes Cluster.
Like all Services, this class configures itself across multiple Environments.
For more information see the official documentation.
Example Usage
Basic Usage
1import launchflow as lf
2
3cluster = lf.gcp.GKECluster("my-cluster")
4service = lf.gcp.GKEService("my-service", cluster=cluster)
Custom Dockerfile Path
1import launchflow as lf
2
3cluster = lf.gcp.GKECluster("my-cluster")
4service = lf.gcp.GKEService(
5 "my-service",
6 cluster=cluster,
7 dockerfile="docker/Dockerfile"m
8 build_directory="path/to/service_dir",
9)
Use a Custom Node Pool
1import launchflow as lf
2
3cluster = lf.gcp.GKECluster("my-cluster")
4node_pool = lf.gcp.NodePool("my-node-pool", cluster=cluster, machine_type="e2-micro")
5
6service = lf.gcp.GKEService("my-service", cluster=cluster, node_pool=node_pool)
Deploy to GPU Enabled Node Pool
1import launchflow as lf
2
3cluster = lf.gcp.GKECluster("my-cluster", delete_protection=False)
4node_pool = lf.gcp.NodePool(
5 name="node-pool",
6 cluster=cluster,
7 machine_type="n1-standard-2",
8 guest_accelerators=[lf.gcp.gke.GuestAccelerator(type="nvidia-tesla-t4", count=1)],
9)
Service with a Startup Probe
1import launchflow as lf
2
3cluster = lf.gcp.GKECluster("my-cluster")
4service = lf.gcp.GKEService(
5 "my-service",
6 cluster=cluster,
7 startup_probe=lf.kubernetes.StartupProbe(
8 path="/healthz",
9 initial_delay_seconds=5,
10 period_seconds=10,
11 ),
12)
13service = lf.gcp.GKEService(
14 name="service",
15 cluster=cluster,
16 node_pool=node_pool,
17 tolerations=[lf.kubernetes.service.Toleration(key="nvidia.com/gpu", value="present", operator="Equal")],
18)
Service with a Horizontal Pod Autoscaler
1import launchflow as lf
2
3cluster = lf.gcp.GKECluster("my-cluster")
4service = lf.gcp.GKEService(
5 "my-service",
6 cluster=cluster,
7 container_resources=lf.kubernetes.service.ContainerResources(
8 requests=lf.kubernetes.service.ResourceQuantity(cpu="0.2"),
9 ),
10)
11hpa = lf.kubernetes.HorizontalPodAutoscaler(
12 "hpa",
13 cluster=cluster,
14 target_name=service.name
15)
Service with a Custom Domain Mapping
1import launchflow as lf
2
3cluster = lf.gcp.GKECluster("my-cluster")
4service = lf.gcp.GKEService(
5 "my-service",
6 cluster=cluster,
7 domain="example.com"
8 service_type="NodePort",
9)
initialization
Create a new GKE Service.
Args:
name (str)
: The name of the service.cluster (GKECluster)
: The GKE cluster to deploy the service to.build_directory (str)
: The directory to build the service from. This should be a relative path from the project root where yourlaunchflow.yaml
is defined.build_ignore (List[str])
: A list of files to ignore when building the service. This can be in the same syntax you would use for a.gitignore
.dockerfile (str)
: The Dockerfile to use for building the service. This should be a relative path from thebuild_directory
.node_pool (Optional[NodePool])
: The node pool to deploy the service to.container_port (int)
: The port the service will listen on inside the container.host_port (Optional[int])
: The port the service will listen on outside the container. If not provided, the service will not be exposed outside the cluster.namespace (str)
: The Kubernetes namespace to deploy the service to. Defaults todefault
. Thedefault
namespace is connected to your LaunchFlow environment automatically, we recommend leaving this as default unless you need to deploy an isolated service.service_type (Literal["ClusterIP", "NodePort", "LoadBalancer"])
: The type of Kubernetes service to create. Defaults toLoadBalancer
.startup_probe (Optional[StartupProbe])
: The startup probe for the service.liveness_probe (Optional[LivenessProbe])
: The liveness probe for the service.readiness_probe (Optional[ReadinessProbe])
: The readiness probe for the service.environment_variables (Optional[Dict[str, str]])
: A dictionary of environment variables to set on the service container.container_resources (Optional[ContainerResources])
: The container resources for the service. NOTE: If you are creating a HorizontalPodAutoscaler you will need to provide this.tolerations (Optional[List[Toleration]])
: A list of tolerations for the service.domain (Optional[str])
: The domain to use for the service.service_type
must beNodePort
to assign a custom domain.