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);
}
}
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();
}
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);
}
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);
}
Aggregations