Exemple #1
0
def deploy_no_cm(form, image):
    app = form.app.data
    env = form.env.data
    command = form.command.data
    container_name = app
    targetport = form.targetport.data
    port = form.port.data
    if command != '':
        container = client.V1Container(
            name=container_name,
            image=image,
            env=[env],  #环境变量未进行过实际测试
            command=["/bin/sh"],
            args=["-c", command],
            ports=[client.V1ContainerPort(container_port=int(port))])
    else:
        container = client.V1Container(
            name=container_name,
            image=image,
            ports=[client.V1ContainerPort(container_port=int(port))])
    template = client.V1PodTemplateSpec(
        metadata=client.V1ObjectMeta(labels={"app": app}),
        spec=client.V1PodSpec(containers=[container], ))
    api_response_1 = deploy_part(app, template)
    logger.info('create deployment')
    logger.info(str(api_response_1))

    api_response = create_svc(port, targetport, app)
    return str(api_response.status)
Exemple #2
0
def create_deployment_object(name):
    # Configureate Pod template container
    container = client.V1Container(
        name="minecraft",
        image="openhack/minecraft-server:2.0",
        ports=[
            client.V1ContainerPort(container_port=25565),
            client.V1ContainerPort(container_port=25575)
        ],
        volume_mounts=[
            client.V1VolumeMount(name="volume", mount_path="/data")
        ],
        env=[client.V1EnvVar(name="EULA", value="true")])
    volumes = client.V1Volume(
        name="volume",
        persistent_volume_claim=client.V1PersistentVolumeClaimVolumeSource(
            claim_name="azure-managed-disk"))
    # Create and configurate a spec section
    template = client.V1PodTemplateSpec(
        metadata=client.V1ObjectMeta(labels={"app": name}),
        spec=client.V1PodSpec(containers=[container], volumes=[volumes]))
    # Create the specification of deployment
    spec = client.ExtensionsV1beta1DeploymentSpec(replicas=1,
                                                  template=template)
    # Instantiate the deployment object
    deployment = client.ExtensionsV1beta1Deployment(
        api_version="extensions/v1beta1",
        kind="Deployment",
        metadata=client.V1ObjectMeta(name=name),
        spec=spec)

    return deployment
def get_pod_spec(name, ssh_key="", container="wshand/cutter:latest"):
    pod = client.V1Pod()
    pod.api_version = "v1"
    labels = {"app": "lawliet-env", "app-specific": get_pod_name(name)}
    pod.metadata = client.V1ObjectMeta(name=get_pod_name(name), labels=labels)
    ports = [
        client.V1ContainerPort(container_port=22),
        client.V1ContainerPort(container_port=6080)
    ]
    container = client.V1Container(
        name=get_pod_name(name),
        image=container,
        image_pull_policy="Always",
        #command=["/bin/bash"],
        #args=["-c", "echo '%s' > ~/.ssh/authorized_keys && service ssh start; mkdir -p /dev/net && mknod /dev/net/tun c 10 200 && chmod 0666 /dev/net/tun; /start.sh" % ssh_key],
        ports=ports,
        security_context=client.V1SecurityContext(
            capabilities=client.V1Capabilities(add=["NET_ADMIN"])))

    context = client.V1PodSecurityContext(sysctls=[
        client.V1Sysctl(name="net.ipv6.conf.all.disable_ipv6", value="0")
    ])
    logging.debug("made context")

    pod.spec = client.V1PodSpec(containers=[container],
                                security_context=context)
    return pod
Exemple #4
0
    def deploy_base_deployment(self, models_volume_claim):
        juypter_base_url = ""
        if self.environment.ingress_mode == "ingress":
            juypter_base_url = self.get_ingress_path("editor")

        if models_volume_claim:
            volumes = [
                kubernetes_client.V1Volume(
                    name="data",
                    persistent_volume_claim=kubernetes_client.
                    V1PersistentVolumeClaimVolumeSource(
                        claim_name=models_volume_claim.metadata.name, )),
            ]
            volume_mounts = [
                kubernetes_client.V1VolumeMount(
                    mount_path="/srv",
                    name="data",
                ),
            ]
        else:
            volumes = []
            volume_mounts = []

        return self.deploy_deployment(
            self.get_param("image"),
            cpu_count=self.cpu_count,
            gpu_request=self.gpu_request,
            memory_mb=int(self.get_param("memory_mb")),
            ports=[
                kubernetes_client.V1ContainerPort(container_port=5000,
                                                  name="api",
                                                  protocol="TCP"),
                kubernetes_client.V1ContainerPort(container_port=8888,
                                                  name="jupyter",
                                                  protocol="TCP"),
                kubernetes_client.V1ContainerPort(container_port=6000,
                                                  name="mlflow",
                                                  protocol="TCP"),
                kubernetes_client.V1ContainerPort(container_port=6006,
                                                  name="tensorboard",
                                                  protocol="TCP"),
                # kubernetes_client.V1ContainerPort(
                #     container_port=4040,
                #     name="sparkui",
                #     protocol="TCP"
                # ),
            ],
            env=[
                kubernetes_client.V1EnvVar(
                    name="JUPYTER_BASE_URL_PATH",
                    value=juypter_base_url,
                )
            ],
            volume_mounts=volume_mounts,
            volumes=volumes,
            run_as_user=1001,
            fs_group=0)
Exemple #5
0
 def _make_container(self, player_id):
     return client.V1Container(
         env=[
             client.V1EnvVar(name="DATA_URL",
                             value="%s/player/%d" %
                             (self.game_url, player_id)),
             client.V1EnvVar(name="PORT", value="5000"),
         ],
         name="aimmo-game-worker",
         image="ocadotechnology/aimmo-game-worker:%s" %
         os.environ.get("IMAGE_SUFFIX", "latest"),
         ports=[
             client.V1ContainerPort(container_port=5000, protocol="TCP")
         ],
         resources=client.V1ResourceRequirements(
             limits={
                 "cpu": "10m",
                 "memory": "64Mi"
             },
             requests={
                 "cpu": "6m",
                 "memory": "32Mi"
             },
         ),
         security_context=client.V1SecurityContext(
             capabilities=client.V1Capabilities(drop=["all"],
                                                add=["NET_BIND_SERVICE"])),
     )
Exemple #6
0
def create_container_object(container_name, image, *container_ports):
	container = client.V1Container(
		name = container_name,
		image = images,
		ports = [client.V1ContainerPort(container_port=i) for i in list(container_ports)]
	)
	return container
def customEndpointSpec(custom_model_spec, service_account, min_replicas,
                       max_replicas):
    env = ([
        client.V1EnvVar(name=i["name"], value=i["value"])
        for i in custom_model_spec["env"]
    ] if custom_model_spec.get("env", "") else None)
    ports = ([
        client.V1ContainerPort(container_port=int(
            custom_model_spec.get("port", "")),
                               protocol="TCP")
    ] if custom_model_spec.get("port", "") else None)
    resources = (client.V1ResourceRequirements(
        requests=(
            custom_model_spec["resources"]["requests"] if
            custom_model_spec.get('resources', {}).get('requests') else None),
        limits=(
            custom_model_spec["resources"]["limits"] if custom_model_spec.get(
                'resources', {}).get('limits') else None),
    ) if custom_model_spec.get("resources", {}) else None)
    containerSpec = client.V1Container(
        name=custom_model_spec.get("name", "custom-container"),
        image=custom_model_spec["image"],
        env=env,
        ports=ports,
        command=custom_model_spec.get("command", None),
        args=custom_model_spec.get("args", None),
        image_pull_policy=custom_model_spec.get("image_pull_policy", None),
        working_dir=custom_model_spec.get("working_dir", None),
        resources=resources)
    return V1alpha2EndpointSpec(predictor=V1alpha2PredictorSpec(
        custom=V1alpha2CustomSpec(container=containerSpec),
        service_account_name=service_account,
        min_replicas=(min_replicas if min_replicas >= 0 else None),
        max_replicas=(max_replicas if max_replicas > 0
                      and max_replicas >= min_replicas else None)))
Exemple #8
0
def create_deployment_object():
    # Configureate Pod template container
    container = client.V1Container(
        name="zaproxy",
        image="owasp/zap2docker-stable",
        command=["zap.sh"],
        args=["-daemon", "-host", "0.0.0.0", "-port", "8090", "-config", "api.disablekey=true", "-config",
              "api.addrs.addr.name=.*", "-config", "api.addrs.addr.regex=true"],
        ports=[client.V1ContainerPort(container_port=8090)],
        resources=client.V1ResourceRequirements(
            requests={"cpu": "100m", "memory": "200Mi"},
            limits={"cpu": "500m", "memory": "500Mi"}
        )
    )
    # Create and configurate a spec section
    template = client.V1PodTemplateSpec(
        metadata=client.V1ObjectMeta(labels={'app': 'zap-app', 'name': 'zap-application'}),
        spec=client.V1PodSpec(containers=[container]))
    # Create the specification of deployment
    spec = client.V1DeploymentSpec(
        replicas=1,
        template=template,
        selector={'matchLabels': {'app': 'zap-app', 'name': 'zap-application'}})
    # Instantiate the deployment object
    deployment = client.V1Deployment(
        api_version="apps/v1",
        kind="Deployment",
        metadata=client.V1ObjectMeta(name=DEPLOYMENT_NAME, labels={'app': 'archerysec-app'}),
        spec=spec)

    return deployment
Exemple #9
0
 def deploy_editor_deployment(self):
     return super().deploy_deployment(
         name_suffix="editor",
         image=self.get_param("editor_image"),
         cpu_request=self.get_param("editor_cpu_request"),
         cpu_limit=self.get_param("editor_cpu_limit"),
         memory_mb=int(self.get_param("editor_memory_mb")),
         ports=[
             kubernetes_client.V1ContainerPort(
                 container_port=8888,
                 name="web",
                 protocol="TCP"
             ),
         ],
         deployment_labels={
             "component": "editor",
         },
         pod_labels={
             "component": "editor",
         },
         env=[
             kubernetes_client.V1EnvVar(
                 name="JUPYTER_BASE_URL_PATH",
                 value=self.get_ingress_path("editor"),
             )
         ]
     )
def create_deployment_object(image):

    # Configureate Pod template container
    container = client.V1Container(
        name="gateway",
        image=image,
        ports=[client.V1ContainerPort(container_port=80)],
        command=["python", "gateway.py"],
        env=[client.V1EnvVar(name="NAME", value="gateway")])

    # Create and configurate a spec section
    template = client.V1PodTemplateSpec(
        metadata=client.V1ObjectMeta(labels={"app": "gateway"}),
        spec=client.V1PodSpec(containers=[container]))

    # Create the specification of deployment
    spec = client.ExtensionsV1beta1DeploymentSpec(replicas=1,
                                                  template=template)

    # Instantiate the deployment object
    deployment = client.ExtensionsV1beta1Deployment(
        api_version="extensions/v1beta1",
        kind="Deployment",
        metadata=client.V1ObjectMeta(name="gateway-deployment"),
        spec=spec)

    return deployment
Exemple #11
0
def get_project_pod_spec(volume_mounts,
                         volumes,
                         image,
                         container_name=None,
                         command=None,
                         args=None,
                         ports=None,
                         resources=None,
                         env_vars=None,
                         restart_policy=None):
    """Pod spec to be used to create pods for project side: tensorboard, notebooks."""
    volume_mounts = get_list(volume_mounts)
    volumes = get_list(volumes)

    gpu_volume_mounts, gpu_volumes = pods.get_gpu_volumes_def(resources)
    volume_mounts += gpu_volume_mounts
    volumes += gpu_volumes

    ports = [client.V1ContainerPort(container_port=port) for port in ports]

    containers = [
        client.V1Container(name=container_name,
                           image=image,
                           command=command,
                           args=args,
                           ports=ports,
                           env=env_vars,
                           resources=pods.get_resources(resources),
                           volume_mounts=volume_mounts)
    ]
    return client.V1PodSpec(restart_policy=restart_policy,
                            containers=containers,
                            volumes=volumes)
Exemple #12
0
def _define_webserver_deployment() -> k8s.V1Deployment:
    # Define Pod container template
    container = k8s.V1Container(
        name='echo',
        image='hashicorp/http-echo',
        command=['/http-echo', '-listen=:{}'.format(CONTAINER_PORT), '-text="Echo server on port {}"'.format(CONTAINER_PORT)],
        ports=[k8s.V1ContainerPort(container_port=CONTAINER_PORT)],
        resources=k8s.V1ResourceRequirements(
            requests={'cpu': '100m', 'memory': '200Mi'},
            limits={'cpu': '500m', 'memory': '500Mi'},
        ),
    )

    # Create and configure a spec section
    template = k8s.V1PodTemplateSpec(
        metadata=k8s.V1ObjectMeta(labels={'app': APP_NAME}),
        spec=k8s.V1PodSpec(containers=[container]),
    )

    # Create the specification of deployment
    spec = k8s.V1DeploymentSpec(
        replicas=1, template=template, selector=k8s.V1LabelSelector(match_labels={'app': APP_NAME}))

    # Instantiate the deployment object
    deployment = k8s.V1Deployment(
        metadata=k8s.V1ObjectMeta(name=DEPLOYMENT_NAME),
        spec=spec,
    )

    return deployment
def create_pod_object():
    # Configureate Pod template container
    container = client.V1Container(
        name=DEPLOYMENT_NAME,
        image=IMAGE_NAME,
        ports=[client.V1ContainerPort(container_port=PORT_NO)])
    # Create and configurate a spec section

    template = client.V1PodTemplateSpec(
        metadata=client.V1ObjectMeta(labels={"name": APP_NAME}),
        spec=client.V1PodSpec(containers=[container]))
    """
    template = client.V1PodTemplateSpec(
        spec=client.V1PodSpec(containers=[container]))
    """
    # Create the specification of deployment
    spec = client.V1PodSpec(containers=[container])
    #    template=template)
    # Instantiate the deployment object
    pod_object = client.V1Pod(
        api_version=API_VERSION,
        kind=KIND,
        metadata=client.V1ObjectMeta(name=DEPLOYMENT_NAME),
        spec=spec)

    return pod_object
def create_nginx_deployment(blogpost_name):
    container = client.V1Container(
        name="nginx",
        image="nginx:alpine",
        ports=[client.V1ContainerPort(container_port=80)],
        volume_mounts=[
            client.V1VolumeMount(name="config", mount_path="/etc/nginx/conf.d")
        ],
    )
    volume = client.V1Volume(
        name="config",
        config_map=client.V1ConfigMapVolumeSource(name=f"{blogpost_name}"),
    )
    template = client.V1PodTemplateSpec(
        metadata=client.V1ObjectMeta(labels={"app": f"nginx-{blogpost_name}"}),
        spec=client.V1PodSpec(containers=[container], volumes=[volume]),
    )
    spec = client.V1DeploymentSpec(
        replicas=1,
        template=template,
        selector={"matchLabels": {"app": f"nginx-{blogpost_name}"}},
    )

    return client.V1Deployment(
        api_version="apps/v1",
        kind="Deployment",
        metadata=client.V1ObjectMeta(name=f"nginx-{blogpost_name}"),
        spec=spec,
    )
Exemple #15
0
def create_deployment_object(name, docker_image, envs):
    # Add Environment Variables to Pod
    kafka_address = get_kafka_ip("my-kafka", "default")
    all_envs = [client.V1EnvVar(name="KAFKAADDRESS", value=kafka_address)]
    # all_envs = [client.V1EnvVar(name="USERSADDRESS", value=KAFKAADDRESS)]
    if len(envs) != 0:
        for i in range(len(envs)):
            all_envs.append(
                client.V1EnvVar(name=envs[i].name, value=envs[i].value))
    # Configureate Pod template container
    container = client.V1Container(
        name=name,
        image=docker_image,
        env=all_envs,
        ports=[client.V1ContainerPort(container_port=80)])
    # Create and configurate a spec section
    template = client.V1PodTemplateSpec(
        metadata=client.V1ObjectMeta(labels={"app": name}),
        spec=client.V1PodSpec(containers=[container]))
    # Create the specification of deployment
    spec = client.ExtensionsV1beta1DeploymentSpec(replicas=1,
                                                  template=template)
    # Instantiate the deployment object
    deployment = client.ExtensionsV1beta1Deployment(
        api_version="extensions/v1beta1",
        kind="Deployment",
        metadata=client.V1ObjectMeta(name=name),
        spec=spec)
    return deployment
def create(namespace_name,service_name,container_port,commands,replicas):
    # creating a instance of class Namespace
    body = client.V1ReplicationController()

    # giving name for the namespace as given in the function call
    body.metadata = client.V1ObjectMeta(name=str(service_name)+"-controller")
    
    port_obj = []

    # Creating Port object
    for ports in container_port:
        port = client.V1ContainerPort(container_port=ports["port"],name=ports["name"])
        port_obj.append(port)

    #containers
    container_obj= client.V1Container(name=service_name,image="registry.gokul.com:5000/gokul/" + str(namespace_name) ,command=commands,
    ports=port_obj, resources=client.V1ResourceRequirements(requests={"cpu":"100m"}))

    #pod spec
    pod_spec = client.V1PodSpec(containers=[container_obj])

    #spec template 
    template = client.V1PodTemplateSpec(client.V1ObjectMeta(labels={"app":service_name}),spec=pod_spec)

    #replication specs
    body.spec = client.V1ReplicationControllerSpec(replicas=replicas,selector={"app":service_name},template=template)

    v1.create_namespaced_replication_controller(namespace=namespace_name,body=body)

    return "replication controller created"
Exemple #17
0
    def create_deployment(self, deployment_object):
        container_port = client.V1ContainerPort(
            container_port=deployment_object.container_port, name=deployment_object.name
        )

        container = client.V1Container(
            image=deployment_object.image,
            name=deployment_object.name,
            env=deployment_object.env,
            ports=[container_port],
        )

        metadata = client.V1ObjectMeta(
            name=deployment_object.name, labels=deployment_object.labels
        )
        template = client.V1PodTemplateSpec(
            metadata=metadata, spec=client.V1PodSpec(containers=[container])
        )

        strategy = client.ExtensionsV1beta1DeploymentStrategy(
            type=deployment_object.strategy_type
        )
        selector = client.V1LabelSelector(match_labels=deployment_object.labels)
        spec = client.ExtensionsV1beta1DeploymentSpec(
            selector=selector, strategy=strategy, template=template
        )

        deployment = client.ExtensionsV1beta1Deployment(
            api_version="apps/v1beta2", kind="Deployment", metadata=metadata, spec=spec
        )

        api_client = client.AppsV1beta2Api()
        api_client.create_namespaced_deployment(body=deployment, namespace="default")
Exemple #18
0
def create_deployment_object(deployment_name, container_port, tagged_image):

    # Configure Pod template container
    container = client.V1Container(
        name=deployment_name,
        image=tagged_image,
        ports=[client.V1ContainerPort(container_port=container_port)])

    # Create and configurate a spec section
    template = client.V1PodTemplateSpec(
        metadata=client.V1ObjectMeta(labels={"app": deployment_name}),
        spec=client.V1PodSpec(containers=[container]))

    deployment = ''
    # Create the specification of deployment
    spec = client.AppsV1beta1DeploymentSpec(replicas=1, template=template)

    # Instantiate the deployment object
    deployment = client.AppsV1beta1Deployment(
        api_version="apps/v1beta1",
        kind="Deployment",
        metadata=client.V1ObjectMeta(name=deployment_name),
        spec=spec)

    return deployment
Exemple #19
0
 def createDeployment(applyName, image, servicePort):
     V1ContainerPort = client.V1ContainerPort(
         container_port=int(servicePort), protocol="TCP")
     V1Container = client.V1Container(name=applyName,
                                      image=image,
                                      ports=[V1ContainerPort])
     V1PodTemplateSpec = client.V1PodTemplateSpec(
         spec=client.V1PodSpec(containers=[V1Container]),
         metadata={"labels": {
             'k8s-app': applyName
         }})
     V1beta2DeploymentSpec = client.V1beta2DeploymentSpec(
         replicas=1,
         selector=client.V1LabelSelector(
             match_labels={"k8s-app": applyName}),
         template=V1PodTemplateSpec)
     V1ObjectMeta = client.V1ObjectMeta(namespace="default", name=applyName)
     V1beta2Deployment = client.V1beta2Deployment(
         spec=V1beta2DeploymentSpec,
         api_version="apps/v1beta2",
         kind="Deployment",
         metadata=V1ObjectMeta)
     pprint(V1beta2Deployment)
     k8s_api = client.AppsV1beta2Api()
     deployment = k8s_api.create_namespaced_deployment(
         body=V1beta2Deployment, namespace="default")
     pprint("Deployment create. status= '%s'" % deployment)
     return deployment
Exemple #20
0
def create_deployment_object(deployment_name, image_name):
    # Configurate Pod template container
    container = client.V1Container(
        name=image_name,
        image="lizhengjie/hcp-re:" + image_name,
        image_pull_policy="Always",
        ports=[client.V1ContainerPort(container_port=8888)])
    image_pull_secret = client.V1LocalObjectReference(name='regcred')
    # Create and configurate a spec section
    template = client.V1PodTemplateSpec(
        metadata=client.V1ObjectMeta(labels={"k8s-app": deployment_name}),
        spec=client.V1PodSpec(image_pull_secrets=[image_pull_secret],
                              containers=[container]))
    # Create the specification of deployment
    spec = client.V1DeploymentSpec(
        replicas=1,
        template=template,
        selector={'matchLabels': {
            'k8s-app': deployment_name
        }})
    # Instantiate the deployment object
    deployment = client.V1Deployment(
        api_version="apps/v1",
        kind="Deployment",
        metadata=client.V1ObjectMeta(name=deployment_name),
        spec=spec)
    return deployment
Exemple #21
0
def create_deployment_object():
    # Configureate Pod template container
    container = client.V1Container(
        name="nginx",
        image="nginx:1.7.9",
        ports=[client.V1ContainerPort(container_port=80)])
    # Create and configurate a spec section
    template = client.V1PodTemplateSpec(
        metadata=client.V1ObjectMeta(labels={"app": "nginx"}),
        spec=client.V1PodSpec(containers=[container]))
    # Create the specification of deployment
    spec = client.ExtensionsV1beta1DeploymentSpec(
        replicas=3,
        template=template)
    # Instantiate the deployment object
    deployment = client.ExtensionsV1beta1Deployment(
        api_version="extensions/v1beta1",
        kind="Deployment",
        metadata=client.V1ObjectMeta(name=DEPLOYMENT_NAME),
        spec=spec)

#    return deployment


#def create_deployment(api_instance, deployment):
    # Create deployement
        extensions_v1beta1.create_namespaced_deployment(
        body=deployment,
        namespace="default")
Exemple #22
0
    def create_deployment_object(self, deployment_name: str, **kwargs: dict):
        """
        Configureate Deployment template container
        :return:
        """

        # Configureate Pod template container
        container = client.V1Container(
            name=kwargs['spec']['template']['spec']['containers'][0]['name'],
            image=kwargs['spec']['template']['spec']['containers'][0]['image'],
            ports=[client.V1ContainerPort(container_port=80)])

        # Create and configureate a spec section
        template = client.V1PodTemplateSpec(
            metadata=client.V1ObjectMeta(
                labels=kwargs['spec']['template']['metadata']['labels']),
            spec=client.V1PodSpec(containers=[container]))
        print()
        # Create the specification of deployment
        spec = client.V1DeploymentSpec(replicas=kwargs['spec']['replicas'],
                                       template=template,
                                       selector=kwargs['spec']['selector'])

        # Instantiate the deployment object
        deployment = client.V1Deployment(
            api_version='apps/v1',
            kind='Deployment',
            metadata=client.V1ObjectMeta(name=deployment_name),
            spec=spec)
        return deployment
Exemple #23
0
    def get_pod_container(self,
                          volume_mounts,
                          env_vars=None,
                          command=None,
                          args=None,
                          resources=None):
        """Pod job container for task."""
        env_vars = get_list(env_vars)
        env_vars += get_job_env_vars(
            log_level=self.log_level,
            outputs_path=get_job_outputs_path(job_name=self.job_name),
            logs_path=get_job_logs_path(job_name=self.job_name),
            data_path=get_job_data_path(job_name=self.job_name),
            project_data_path=get_project_data_path(project_name=self.project_name)
        )
        env_vars += [
            get_env_var(name=constants.CONFIG_MAP_JOB_INFO_KEY_NAME, value=json.dumps(self.labels)),
        ]

        if resources:
            env_vars += get_resources_env_vars(resources=resources)

        ports = [client.V1ContainerPort(container_port=port) for port in self.ports]
        return client.V1Container(name=self.job_container_name,
                                  image=self.job_docker_image,
                                  command=command,
                                  args=args,
                                  ports=ports,
                                  env=env_vars,
                                  resources=get_resources(resources),
                                  volume_mounts=volume_mounts)
def create_pod_template_with_pvc(args):
    # Mount bootstrap config secret volume
    config_mount = client.V1VolumeMount(mount_path="/tmp",
                                        name="bootstrap-config-vol")
    # PersistenVolume mount
    pv_mount = client.V1VolumeMount(
        mount_path="/home",  # better name?
        name="data")

    # Configureate Pod template container
    isTTY = args.image == "chainweb-base"  # otherwise container will always "finish" and restart.
    pull_policy = "Never" if args.local else "Always"

    container = client.V1Container(
        name="chainweb",
        image=args.image,
        image_pull_policy=pull_policy,
        tty=isTTY,
        ports=[client.V1ContainerPort(container_port=PORT_NUMBER)],
        volume_mounts=[config_mount, pv_mount])

    # Configure volume(s)
    config_volume = client.V1Volume(
        name="bootstrap-config-vol",
        secret=client.V1SecretVolumeSource(secret_name="bootstrap-config"))

    # Create and configurate a spec section
    template = client.V1PodTemplateSpec(
        metadata=client.V1ObjectMeta(labels={"app": "chainweb"}),
        spec=client.V1PodSpec(containers=[container], volumes=[config_volume]))
    return template
Exemple #25
0
def replace_deployment(task_info):
    name = task_info.get('name')
    image = task_info.get('image')
    replicas = task_info.get('replicas')
    namespace = task_info.get('namespace')

    # Configureate Pod template container
    container = client.V1Container(
        name=name,
        image=image,
        ports=[client.V1ContainerPort(container_port=80)])

    # Create and configurate a spec section
    template = client.V1PodTemplateSpec(
        metadata=client.V1ObjectMeta(labels={"app": task_info.get('name')}),
        spec=client.V1PodSpec(containers=[container]))

    # Create the specification of deployment
    spec = client.ExtensionsV1beta1DeploymentSpec(replicas=replicas,
                                                  template=template)

    # Instantiate the deployment object
    deployment = client.ExtensionsV1beta1Deployment(
        api_version="extensions/v1beta1",
        kind="Deployment",
        metadata=client.V1ObjectMeta(name=name),
        spec=spec)

    try:
        api_response = extensions_v1beta1.replace_namespaced_deployment(
            name=name, namespace=namespace, body=deployment)
        return api_response

    except ApiException as e:
        print(e)
Exemple #26
0
def create_deployment_object(package_name):
    # Configureate Pod template container
    container = client.V1Container(
        name=package_name,
        image="gazetest/" + package_name,
        stdin=True,
        tty=True,
        ports=[client.V1ContainerPort(container_port=5000)])

    # Create and configurate a spec section
    template = client.V1PodTemplateSpec(
        metadata=client.V1ObjectMeta(labels={"app": package_name + "-pod"}),
        spec=client.V1PodSpec(containers=[container]))

    # Create the specification of deployment
    spec = client.ExtensionsV1beta1DeploymentSpec(replicas=1,
                                                  template=template)

    # Instantiate the deployment object
    deployment = client.ExtensionsV1beta1Deployment(
        api_version="extensions/v1beta1",
        kind="Deployment",
        metadata=client.V1ObjectMeta(name=package_name + "-deploy"),
        spec=spec)

    return deployment
Exemple #27
0
    def __init__(self, name, storage_pvc):
        internal_volume_name = 'nfs-server-volume'
        mount_path = '/exports'

        ctr = client.V1Container(
            name=name,
            image=self.IMAGE,
            ports=[
                client.V1ContainerPort(name=k, container_port=v)
                for k, v in self.PORTS.items()
            ],
            security_context=client.V1SecurityContext(privileged=True),
            volume_mounts=[
                client.V1VolumeMount(mount_path=mount_path,
                                     name=internal_volume_name)
            ])
        volume_source = client.V1PersistentVolumeClaimVolumeSource(
            claim_name=storage_pvc)
        volume = client.V1Volume(name=internal_volume_name,
                                 persistent_volume_claim=volume_source)
        pod_spec = client.V1PodSpec(containers=[ctr], volumes=[volume])
        pod_metadata = client.V1ObjectMeta(labels=self.LABELS)
        pod_template = client.V1PodTemplateSpec(metadata=pod_metadata,
                                                spec=pod_spec)
        rs_spec = client.V1ReplicaSetSpec(
            replicas=1,
            selector=client.V1LabelSelector(match_labels=self.LABELS),
            template=pod_template)
        metadata = client.V1ObjectMeta(name=name, labels=self.LABELS)
        super(NFSDeployment, self).__init__(metadata=metadata, spec=rs_spec)
Exemple #28
0
def create_deployment_object(deployment):
    try:
        # Configureate Pod template container
        container = client.V1Container(
            name=deployment,
            image="blabla1337/owasp-skf-lab:"+deployment,
            ports=[client.V1ContainerPort(container_port=5000)])
        # Create and configurate a spec section
        template = client.V1PodTemplateSpec(
            metadata=client.V1ObjectMeta(labels={"app": deployment}),
            spec=client.V1PodSpec(containers=[container]))
        # Create the specification of deployment
        spec = client.V1DeploymentSpec(
            replicas=1,
            template=template,
            selector={'matchLabels': {'app': deployment}})
        # Instantiate the deployment object
        deployment = client.V1Deployment(
            api_version="apps/v1",
            kind="Deployment",
            metadata=client.V1ObjectMeta(name=deployment),
            spec=spec)
        return deployment
    except:
        return {'message': 'Failed to deploy, error creation deployment object!'} 
Exemple #29
0
def create_deployment_object(image, model_id, campaign_id, model_path):

    deployment_name = "scoring-deployment-{}-{}".format(model_id, campaign_id)

    # Configureate Pod template container
    container = client.V1Container(
        name="xgboost-scorer",
        image=image,
        ports=[client.V1ContainerPort(container_port=80)],
        command=["python", "xgboost.py"],
        env=[client.V1EnvVar(name="NAME", value=deployment_name),
             client.V1EnvVar(name="MODEL_ID", value=model_id),
             client.V1EnvVar(name="CAMPAIGN_ID", value=campaign_id),
             client.V1EnvVar(name="MODEL_PATH", value=model_path)]
        )

    # Create and configurate a spec section
    template = client.V1PodTemplateSpec(
        metadata=client.V1ObjectMeta(labels={"app": "xgboost", "model_id": model_id, "campaign_id": campaign_id}),
        spec=client.V1PodSpec(containers=[container]))

    # Create the specification of deployment
    spec = client.ExtensionsV1beta1DeploymentSpec(
        replicas=2,
        template=template,
        revision_history_limit=0)

    # Instantiate the deployment object
    deployment = client.ExtensionsV1beta1Deployment(
        api_version="extensions/v1beta1",
        kind="Deployment",
        metadata=client.V1ObjectMeta(name=deployment_name),
        spec=spec)

    return deployment
Exemple #30
0
    def get_deployment_template(self, deployment_name, image,
                                replicas):  # 获取模板
        # Configureate Pod template container
        container = client.V1Container(
            name=deployment_name,
            image=image,
            # command=['tail','-f','/dev/null'],
            ports=[client.V1ContainerPort(container_port=80)])
        # Create and configurate a spec section
        template = client.V1PodTemplateSpec(
            metadata=client.V1ObjectMeta(labels={"app": "nginx"}),
            spec=client.V1PodSpec(containers=[container]))
        # Create the specification of deployment
        spec = client.V1DeploymentSpec(
            replicas=replicas,
            template=template,
            selector={'matchLabels': {
                'app': 'nginx'
            }})
        # Instantiate the deployment object
        deployment = client.V1Deployment(
            api_version="apps/v1",
            kind="Deployment",
            metadata=client.V1ObjectMeta(name=deployment_name),
            spec=spec)

        return deployment