Search in sources :

Example 1 with V1

use of io.kubernetes.client.proto.V1 in project seldon-core by SeldonIO.

the class SeldonDeploymentOperatorImpl method updatePredictiveUnitBuilderByName.

private void updatePredictiveUnitBuilderByName(PredictiveUnit.Builder puBuilder, V1.Container container) {
    if (puBuilder.getName().equals(container.getName())) {
        Endpoint.Builder b = puBuilder.getEndpointBuilder();
        for (ContainerPort p : container.getPortsList()) {
            if (// first found will be used
            "http".equals(p.getName())) {
                b.setServicePort(p.getContainerPort());
                b.setType(Endpoint.EndpointType.REST);
                // assumes localhost at present
                b.setServiceHost("0.0.0.0");
                return;
            } else if ("grpc".equals(p.getName())) {
                b.setServicePort(p.getContainerPort());
                b.setType(Endpoint.EndpointType.GRPC);
                // assumes localhost at present
                b.setServiceHost("0.0.0.0");
                return;
            }
        }
    } else {
        for (int i = 0; i < puBuilder.getChildrenCount(); i++) updatePredictiveUnitBuilderByName(puBuilder.getChildrenBuilder(i), container);
    }
}
Also used : Endpoint(io.seldon.protos.DeploymentProtos.Endpoint) ContainerPort(io.kubernetes.client.proto.V1.ContainerPort) Endpoint(io.seldon.protos.DeploymentProtos.Endpoint)

Example 2 with V1

use of io.kubernetes.client.proto.V1 in project seldon-core by SeldonIO.

the class SeldonDeploymentOperatorImpl method defaulting.

@Override
public SeldonDeployment defaulting(SeldonDeployment mlDep) {
    SeldonDeployment.Builder mlBuilder = SeldonDeployment.newBuilder(mlDep);
    int idx = 0;
    String serviceName = mlDep.getSpec().getName();
    String deploymentName = mlDep.getMetadata().getName();
    for (PredictorSpec p : mlDep.getSpec().getPredictorsList()) {
        ObjectMeta.Builder metaBuilder = ObjectMeta.newBuilder(p.getComponentSpec().getMetadata()).putLabels(LABEL_SELDON_APP, serviceName);
        mlBuilder.getSpecBuilder().getPredictorsBuilder(idx).getComponentSpecBuilder().setMetadata(metaBuilder);
        int cIdx = 0;
        mlBuilder.getSpecBuilder().getPredictorsBuilder(idx).getComponentSpecBuilder().getSpecBuilder().clearContainers();
        String predictorName = p.getName();
        for (V1.Container c : p.getComponentSpec().getSpec().getContainersList()) {
            V1.Container c2 = this.updateContainer(c, findPredictiveUnitForContainer(mlDep.getSpec().getPredictors(idx).getGraph(), c.getName()), cIdx, deploymentName, predictorName);
            mlBuilder.getSpecBuilder().getPredictorsBuilder(idx).getComponentSpecBuilder().getSpecBuilder().addContainers(cIdx, c2);
            updatePredictiveUnitBuilderByName(mlBuilder.getSpecBuilder().getPredictorsBuilder(idx).getGraphBuilder(), c2);
            cIdx++;
        }
        idx++;
    }
    return mlBuilder.build();
}
Also used : ObjectMeta(io.kubernetes.client.proto.Meta.ObjectMeta) IntOrString(io.kubernetes.client.proto.IntStr.IntOrString) V1(io.kubernetes.client.proto.V1) SeldonDeployment(io.seldon.protos.DeploymentProtos.SeldonDeployment) Endpoint(io.seldon.protos.DeploymentProtos.Endpoint) PredictorSpec(io.seldon.protos.DeploymentProtos.PredictorSpec)

Example 3 with V1

use of io.kubernetes.client.proto.V1 in project java by kubernetes-client.

the class ProtoExample method main.

public static void main(String[] args) throws IOException, ApiException, InterruptedException {
    ApiClient client = Config.defaultClient();
    Configuration.setDefaultApiClient(client);
    ProtoClient pc = new ProtoClient(client);
    ObjectOrStatus<PodList> list = pc.list(PodList.newBuilder(), "/api/v1/namespaces/default/pods");
    if (list.object.getItemsCount() > 0) {
        Pod p = list.object.getItems(0);
        System.out.println(p);
    }
    Namespace namespace = Namespace.newBuilder().setMetadata(ObjectMeta.newBuilder().setName("test").build()).build();
    ObjectOrStatus<Namespace> ns = pc.create(namespace, "/api/v1/namespaces", "v1", "Namespace");
    System.out.println(ns);
    if (ns.object != null) {
        namespace = ns.object.toBuilder().setSpec(NamespaceSpec.newBuilder().addFinalizers("test").build()).build();
        // This is how you would update an object, but you can't actually
        // update namespaces, so this returns a 405
        ns = pc.update(namespace, "/api/v1/namespaces/test", "v1", "Namespace");
        System.out.println(ns.status);
    }
    ns = pc.delete(Namespace.newBuilder(), "/api/v1/namespaces/test");
    System.out.println(ns);
}
Also used : PodList(io.kubernetes.client.proto.V1.PodList) Pod(io.kubernetes.client.proto.V1.Pod) ApiClient(io.kubernetes.client.ApiClient) Namespace(io.kubernetes.client.proto.V1.Namespace) ProtoClient(io.kubernetes.client.ProtoClient)

Example 4 with V1

use of io.kubernetes.client.proto.V1 in project seldon-core by SeldonIO.

the class SeldonDeploymentOperatorImpl method createResources.

@Override
public DeploymentResources createResources(SeldonDeployment mlDep) throws SeldonDeploymentException {
    OwnerReference ownerRef = getOwnerReference(mlDep);
    List<Deployment> deployments = new ArrayList<>();
    // for each predictor Create/replace deployment
    String serviceLabel = mlDep.getSpec().getName();
    for (PredictorSpec p : mlDep.getSpec().getPredictorsList()) {
        String depName = getKubernetesDeploymentName(mlDep.getSpec().getName(), p.getName());
        PodTemplateSpec.Builder podSpecBuilder = PodTemplateSpec.newBuilder(p.getComponentSpec());
        podSpecBuilder.getSpecBuilder().addContainers(createEngineContainer(mlDep, p)).setTerminationGracePeriodSeconds(20);
        podSpecBuilder.getMetadataBuilder().putAnnotations("prometheus.io/path", "/prometheus").putAnnotations("prometheus.io/port", "" + clusterManagerProperites.getEngineContainerPort()).putAnnotations("prometheus.io/scrape", "true");
        Deployment deployment = V1beta1Extensions.Deployment.newBuilder().setMetadata(ObjectMeta.newBuilder().setName(depName).putLabels(SeldonDeploymentOperatorImpl.LABEL_SELDON_APP, serviceLabel).putLabels(Constants.LABEL_SELDON_ID, mlDep.getSpec().getName()).putLabels("app", depName).putLabels("version", // FIXME
        "v1").putLabels(SeldonDeploymentOperatorImpl.LABEL_SELDON_TYPE_KEY, SeldonDeploymentOperatorImpl.LABEL_SELDON_TYPE_VAL).addOwnerReferences(ownerRef)).setSpec(DeploymentSpec.newBuilder().setTemplate(podSpecBuilder.build()).setStrategy(DeploymentStrategy.newBuilder().setRollingUpdate(RollingUpdateDeployment.newBuilder().setMaxUnavailable(IntOrString.newBuilder().setType(1).setStrVal("10%")))).setReplicas(p.getReplicas())).build();
        deployments.add(deployment);
    }
    final String serviceName = mlDep.getSpec().getName();
    Service s = Service.newBuilder().setMetadata(ObjectMeta.newBuilder().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().setProtocol("TCP").setPort(clusterManagerProperites.getEngineContainerPort()).setTargetPort(IntOrString.newBuilder().setIntVal(clusterManagerProperites.getEngineContainerPort())).setName("http")).addPorts(ServicePort.newBuilder().setProtocol("TCP").setPort(clusterManagerProperites.getEngineGrpcContainerPort()).setTargetPort(IntOrString.newBuilder().setIntVal(clusterManagerProperites.getEngineGrpcContainerPort())).setName("grpc")).setType("ClusterIP").putSelector(SeldonDeploymentOperatorImpl.LABEL_SELDON_APP, serviceLabel)).build();
    // Create service for deployment
    return new DeploymentResources(deployments, s);
}
Also used : V1OwnerReference(io.kubernetes.client.models.V1OwnerReference) OwnerReference(io.kubernetes.client.proto.Meta.OwnerReference) PodTemplateSpec(io.kubernetes.client.proto.V1.PodTemplateSpec) ArrayList(java.util.ArrayList) SeldonDeployment(io.seldon.protos.DeploymentProtos.SeldonDeployment) Deployment(io.kubernetes.client.proto.V1beta1Extensions.Deployment) RollingUpdateDeployment(io.kubernetes.client.proto.V1beta1Extensions.RollingUpdateDeployment) Service(io.kubernetes.client.proto.V1.Service) IntOrString(io.kubernetes.client.proto.IntStr.IntOrString) PredictorSpec(io.seldon.protos.DeploymentProtos.PredictorSpec)

Aggregations

IntOrString (io.kubernetes.client.proto.IntStr.IntOrString)2 Endpoint (io.seldon.protos.DeploymentProtos.Endpoint)2 PredictorSpec (io.seldon.protos.DeploymentProtos.PredictorSpec)2 SeldonDeployment (io.seldon.protos.DeploymentProtos.SeldonDeployment)2 ApiClient (io.kubernetes.client.ApiClient)1 ProtoClient (io.kubernetes.client.ProtoClient)1 V1OwnerReference (io.kubernetes.client.models.V1OwnerReference)1 ObjectMeta (io.kubernetes.client.proto.Meta.ObjectMeta)1 OwnerReference (io.kubernetes.client.proto.Meta.OwnerReference)1 V1 (io.kubernetes.client.proto.V1)1 ContainerPort (io.kubernetes.client.proto.V1.ContainerPort)1 Namespace (io.kubernetes.client.proto.V1.Namespace)1 Pod (io.kubernetes.client.proto.V1.Pod)1 PodList (io.kubernetes.client.proto.V1.PodList)1 PodTemplateSpec (io.kubernetes.client.proto.V1.PodTemplateSpec)1 Service (io.kubernetes.client.proto.V1.Service)1 Deployment (io.kubernetes.client.proto.V1beta1Extensions.Deployment)1 RollingUpdateDeployment (io.kubernetes.client.proto.V1beta1Extensions.RollingUpdateDeployment)1 ArrayList (java.util.ArrayList)1