Skip to content

Commit

Permalink
Merge pull request #79 from cliveseldon/ksonnet
Browse files Browse the repository at this point in the history
Ksonnet - initial integration
  • Loading branch information
ukclivecox authored Feb 1, 2018
2 parents bbd54cf + d3d5028 commit e0afe18
Show file tree
Hide file tree
Showing 15 changed files with 4,185 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -398,6 +398,27 @@ private OwnerReference getOwnerReference(SeldonDeployment mlDep)
.setUid(mlDep.getMetadata().getUid()).build();
}

private String getAmbassadorAnnotation(SeldonDeployment mlDep,String serviceName)
{
final String restMapping = "---\n"+
"apiVersion: ambassador/v0\n" +
"kind: Mapping\n" +
"name: "+mlDep.getMetadata().getName()+"_rest_mapping\n" +
"prefix: /"+mlDep.getMetadata().getName()+"/rest/\n" +
"service: "+serviceName+":"+clusterManagerProperites.getEngineContainerPort()+"\n";
final String grpcMapping = "---\n"+
"apiVersion: ambassador/v0\n" +
"kind: Mapping\n" +
"name: "+mlDep.getMetadata().getName()+"_grpc_mapping\n" +
"grpc: true\n" +
"prefix: /seldon.protos.Seldon/\n" +
"rewrite: /seldon.protos.Seldon/\n" +
"headers:\n"+
" seldon: "+mlDep.getMetadata().getName() + "\n" +
"service: "+serviceName+":"+clusterManagerProperites.getEngineGrpcContainerPort()+"\n";
return restMapping + grpcMapping;
}

@Override
public DeploymentResources createResources(SeldonDeployment mlDep) throws SeldonDeploymentException {

Expand Down Expand Up @@ -436,12 +457,15 @@ public DeploymentResources createResources(SeldonDeployment mlDep) throws Seldon
deployments.add(deployment);
}

final String serviceName = mlDep.getSpec().getName();

Service s = Service.newBuilder()
.setMetadata(ObjectMeta.newBuilder()
.setName(mlDep.getSpec().getName())
.setName(serviceName)
.putLabels(SeldonDeploymentOperatorImpl.LABEL_SELDON_APP, serviceLabel)
.putLabels("seldon-deployment-id", mlDep.getSpec().getName())
.addOwnerReferences(ownerRef)
.putAnnotations("getambassador.io/config",getAmbassadorAnnotation(mlDep,serviceName))
)
.setSpec(ServiceSpec.newBuilder()
.addPorts(ServicePort.newBuilder()
Expand Down
6 changes: 6 additions & 0 deletions ksonnet/registry/registry.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
apiVersion: '0.1'
kind: ksonnet.io/registry
libraries:
seldon-core:
version: master
path: seldon-core
86 changes: 86 additions & 0 deletions ksonnet/registry/seldon-core/core.libsonnet
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
local k = import 'k.libsonnet';
local deployment = k.extensions.v1beta1.deployment;
local container = k.apps.v1beta1.deployment.mixin.spec.template.spec.containersType;
local service = k.core.v1.service.mixin;
local baseApife = import 'json/apife-deployment.json';
local apifeService = import 'json/apife-service.json';
local operatorDeployment = import 'json/operator-deployment.json';
local redisDeployment = import 'json/redis-deployment.json';
local redisService = import 'json/redis-service.json';
local rbacServiceAccount = import 'json/rbac-service-account.json';
local rbacClusterRoleBinding = import 'json/rbac-cluster-binding.json';
local crdDefn = import 'crd.libsonnet';

{
parts(namespace):: {

apife(apifeImage,withRbac)::

local c = baseApife.spec.template.spec.containers[0] +
container.withImage(apifeImage) +
container.withImagePullPolicy("IfNotPresent");

local apiFeBase =
baseApife +
deployment.mixin.metadata.withNamespace(namespace) +
deployment.mixin.spec.template.spec.withContainers([c]);

if withRbac == "true" then
apiFeBase +
deployment.mixin.spec.template.spec.withServiceAccountName("seldon")
else
apiFeBase,


apifeService(serviceType)::

apifeService +
service.metadata.withNamespace(namespace) +
service.spec.withType(serviceType),

deploymentOperator(engineImage, clusterManagerImage, springOpts, javaOpts, withRbac):
local env = [
{ name: "JAVA_OPTS", value: javaOpts },
{ name: "SPRING_OPTS", value: springOpts },
{ name: "ENGINE_CONTAINER_IMAGE_AND_VERSION", value: engineImage },
];

local c = operatorDeployment.spec.template.spec.containers[0] +
container.withImage(clusterManagerImage) +
container.withEnvMixin(env) +
container.withImagePullPolicy("IfNotPresent");

local depOp = operatorDeployment +
deployment.mixin.metadata.withNamespace(namespace) +
deployment.mixin.spec.template.spec.withContainers([c]);

if withRbac == "true" then
depOp +
deployment.mixin.spec.template.spec.withServiceAccountName("seldon")
else
depOp,

redisDeployment():

redisDeployment +
deployment.mixin.metadata.withNamespace(namespace),

redisService():

redisService +
service.metadata.withNamespace(namespace),

rbacServiceAccount():

rbacServiceAccount,

rbacClusterRoleBinding():

rbacClusterRoleBinding,

crd():

crdDefn.crd(),

}, // parts
}
Loading

0 comments on commit e0afe18

Please sign in to comment.