Python kubernetes.client.V1PodTemplateSpec() Examples
The following are 18
code examples of kubernetes.client.V1PodTemplateSpec().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
kubernetes.client
, or try the search function
.
Example #1
Source File: copy_dataset.py From aws-eks-deep-learning-benchmark with Apache License 2.0 | 7 votes |
def create_job_object(runner_image, region, s3_path, pvc_name): target_folder = get_target_folder(s3_path) # Configureate Pod template container container = k8s_client.V1Container( name="copy-dataset-worker", image=runner_image, command=["aws"], args=["s3", "sync", s3_path, "/mnt/" + target_folder], volume_mounts=[k8s_client.V1VolumeMount(name="data-storage", mount_path='/mnt')], env=[k8s_client.V1EnvVar(name="AWS_REGION", value=region), k8s_client.V1EnvVar(name="AWS_ACCESS_KEY_ID", value_from=k8s_client.V1EnvVarSource(secret_key_ref=k8s_client.V1SecretKeySelector(key="AWS_ACCESS_KEY_ID", name="aws-secret"))), k8s_client.V1EnvVar(name="AWS_SECRET_ACCESS_KEY", value_from=k8s_client.V1EnvVarSource(secret_key_ref=k8s_client.V1SecretKeySelector(key="AWS_SECRET_ACCESS_KEY", name="aws-secret"))) ], ) volume = k8s_client.V1Volume( name='data-storage', persistent_volume_claim=k8s_client.V1PersistentVolumeClaimVolumeSource(claim_name=pvc_name) ) # Create and configurate a spec section template = k8s_client.V1PodTemplateSpec( # metadata=k8s_client.V1ObjectMeta(labels={"app":"copy-dataset-worker"}), spec=k8s_client.V1PodSpec(containers=[container], volumes=[volume], restart_policy="OnFailure")) # Create the specification of deployment spec = k8s_client.V1JobSpec( # selector=k8s_client.V1LabelSelector(match_labels={"app":"copy-dataset-worker"}), template=template) # Instantiate the deployment object deployment = k8s_client.V1Job( api_version="batch/v1", kind="Job", metadata=k8s_client.V1ObjectMeta(name=container.name), spec=spec) return deployment
Example #2
Source File: kubernetes.py From training_results_v0.6 with Apache License 2.0 | 6 votes |
def create_job_manifest(envs, commands, name, image, template_file): if template_file is not None: with open( template_file ) as f: job=yaml.safe_load(f) job["metadata"]["name"]=name job["spec"]["template"]["metadata"]["labels"]["app"]=name job["spec"]["template"]["spec"]["containers"][0]["image"]=image job["spec"]["template"]["spec"]["containers"][0]["command"]=commands job["spec"]["template"]["spec"]["containers"][0]["name"]=name job["spec"]["template"]["spec"]["containers"][0]["env"]=envs job["spec"]["template"]["spec"]["containers"][0]["command"]=commands else: container=client.V1Container(image=image, command=commands, name=name, env=envs) pod_temp=client.V1PodTemplateSpec( spec=client.V1PodSpec(restart_policy="OnFailure", containers=[container]), metadata=client.V1ObjectMeta(name=name, labels={"app":name}) ) job=client.V1Job( api_version="batch/v1", kind="Job", spec=client.V1JobSpec(template=pod_temp), metadata=client.V1ObjectMeta(name=name) ) return job
Example #3
Source File: job_crud.py From python with Apache License 2.0 | 6 votes |
def create_job_object(): # Configureate Pod template container container = client.V1Container( name="pi", image="perl", command=["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]) # Create and configurate a spec section template = client.V1PodTemplateSpec( metadata=client.V1ObjectMeta(labels={"app": "pi"}), spec=client.V1PodSpec(restart_policy="Never", containers=[container])) # Create the specification of deployment spec = client.V1JobSpec( template=template, backoff_limit=4) # Instantiate the job object job = client.V1Job( api_version="batch/v1", kind="Job", metadata=client.V1ObjectMeta(name=JOB_NAME), spec=spec) return job
Example #4
Source File: test_kubernetes_tools.py From paasta with Apache License 2.0 | 6 votes |
def test_sanitize_for_config_hash(self): with mock.patch( "paasta_tools.kubernetes_tools.get_kubernetes_secret_hashes", autospec=True ) as mock_get_kubernetes_secret_hashes: mock_config = V1Deployment( metadata=V1ObjectMeta(name="qwe", labels={"mc": "grindah"}), spec=V1DeploymentSpec( replicas=2, selector=V1LabelSelector(match_labels={"freq": "108.9"}), template=V1PodTemplateSpec(), ), ) ret = self.deployment.sanitize_for_config_hash(mock_config) assert "replicas" not in ret["spec"].keys() assert ( ret["paasta_secrets"] == mock_get_kubernetes_secret_hashes.return_value )
Example #5
Source File: kubernetes.py From training_results_v0.6 with Apache License 2.0 | 6 votes |
def create_job_manifest(envs, commands, name, image, template_file): if template_file is not None: with open( template_file ) as f: job=yaml.safe_load(f) job["metadata"]["name"]=name job["spec"]["template"]["metadata"]["labels"]["app"]=name job["spec"]["template"]["spec"]["containers"][0]["image"]=image job["spec"]["template"]["spec"]["containers"][0]["command"]=commands job["spec"]["template"]["spec"]["containers"][0]["name"]=name job["spec"]["template"]["spec"]["containers"][0]["env"]=envs job["spec"]["template"]["spec"]["containers"][0]["command"]=commands else: container=client.V1Container(image=image, command=commands, name=name, env=envs) pod_temp=client.V1PodTemplateSpec( spec=client.V1PodSpec(restart_policy="OnFailure", containers=[container]), metadata=client.V1ObjectMeta(name=name, labels={"app":name}) ) job=client.V1Job( api_version="batch/v1", kind="Job", spec=client.V1JobSpec(template=pod_temp), metadata=client.V1ObjectMeta(name=name) ) return job
Example #6
Source File: test_base.py From node with Apache License 2.0 | 5 votes |
def deploy(self, image, name, ns, port, replicas=1, svc_type="NodePort", traffic_policy="Local", cluster_ip=None, ipv6=False): """ Creates a deployment and corresponding service with the given parameters. """ # Run a deployment with <replicas> copies of <image>, with the # pods labelled with "app": <name>. deployment = client.V1Deployment( api_version="apps/v1", kind="Deployment", metadata=client.V1ObjectMeta(name=name), spec=client.V1DeploymentSpec( replicas=replicas, selector={'matchLabels': {'app': name}}, template=client.V1PodTemplateSpec( metadata=client.V1ObjectMeta(labels={"app": name}), spec=client.V1PodSpec(containers=[ client.V1Container(name=name, image=image, ports=[client.V1ContainerPort(container_port=port)]), ])))) api_response = client.AppsV1Api().create_namespaced_deployment( body=deployment, namespace=ns) logger.debug("Deployment created. status='%s'" % str(api_response.status)) # Create a service called <name> whose endpoints are the pods # with "app": <name>; i.e. those just created above. self.create_service(name, name, ns, port, svc_type, traffic_policy, ipv6=ipv6)
Example #7
Source File: conftest.py From kubetest with GNU General Public License v3.0 | 5 votes |
def simple_replicaset(): """Return the Kubernetes config matching the simple-replicaset.yaml manifest.""" return client.V1ReplicaSet( api_version='apps/v1', kind='ReplicaSet', metadata=client.V1ObjectMeta( name='frontend', labels={ 'app': 'guestbook', 'tier': 'frontend', }, ), spec=client.V1ReplicaSetSpec( replicas=3, selector=client.V1LabelSelector( match_labels={ 'tier': 'frontend', }, ), template=client.V1PodTemplateSpec( metadata=client.V1ObjectMeta( labels={ 'tier': 'frontend', }, ), spec=client.V1PodSpec( containers=[ client.V1Container( name='php-redis', image='gcr.io/google_samples/gb-frontend:v3', ), ], ), ), ), )
Example #8
Source File: conftest.py From kubetest with GNU General Public License v3.0 | 5 votes |
def simple_daemonset(): """Return the Kubernetes config matching the simple-daemonset.yaml manifest.""" return client.V1DaemonSet( api_version='apps/v1', kind='DaemonSet', metadata=client.V1ObjectMeta( name='canal-daemonset', labels={ 'app': 'canal' } ), spec=client.V1DaemonSetSpec( selector=client.V1LabelSelector( match_labels={ 'app': 'canal' } ), template=client.V1PodTemplateSpec( metadata=client.V1ObjectMeta( labels={ 'app': 'canal' } ), spec=client.V1PodSpec( containers=[ client.V1Container( name='canal', image='canal:3.7.2', ports=[ client.V1ContainerPort( container_port=9099 ) ] ) ] ) ) ) )
Example #9
Source File: conftest.py From kubetest with GNU General Public License v3.0 | 5 votes |
def simple_statefulset(): """Return the Kubernetes config matching the simple-statefulset.yaml manifest.""" return client.V1StatefulSet( api_version='apps/v1', kind='StatefulSet', metadata=client.V1ObjectMeta( name='postgres-statefulset', labels={ 'app': 'postgres' } ), spec=client.V1StatefulSetSpec( replicas=3, selector=client.V1LabelSelector( match_labels={ 'app': 'postgres' } ), service_name='simple-service', template=client.V1PodTemplateSpec( metadata=client.V1ObjectMeta( labels={ 'app': 'postgres' } ), spec=client.V1PodSpec( containers=[ client.V1Container( name='postgres', image='postgres:9.6', ports=[ client.V1ContainerPort( container_port=5432 ) ] ) ] ) ) ) )
Example #10
Source File: conftest.py From kubetest with GNU General Public License v3.0 | 5 votes |
def simple_deployment(): """Return the Kubernetes config matching the simple-deployment.yaml manifest.""" return client.V1Deployment( api_version='apps/v1', kind='Deployment', metadata=client.V1ObjectMeta( name='nginx-deployment', labels={ 'app': 'nginx' } ), spec=client.V1DeploymentSpec( replicas=3, selector=client.V1LabelSelector( match_labels={ 'app': 'nginx' } ), template=client.V1PodTemplateSpec( metadata=client.V1ObjectMeta( labels={ 'app': 'nginx' } ), spec=client.V1PodSpec( containers=[ client.V1Container( name='nginx', image='nginx:1.7.9', ports=[ client.V1ContainerPort( container_port=80 ) ] ) ] ) ) ) )
Example #11
Source File: deployment_crud.py From python with Apache License 2.0 | 5 votes |
def create_deployment_object(): # Configureate Pod template container container = client.V1Container( name="nginx", image="nginx:1.15.4", ports=[client.V1ContainerPort(container_port=80)], 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": "nginx"}), spec=client.V1PodSpec(containers=[container])) # Create the specification of deployment spec = client.V1DeploymentSpec( replicas=3, 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
Example #12
Source File: ingress_create.py From python with Apache License 2.0 | 5 votes |
def create_deployment(apps_v1_api): container = client.V1Container( name="deployment", image="gcr.io/google-appengine/fluentd-logger", image_pull_policy="Never", ports=[client.V1ContainerPort(container_port=5678)], ) # Template template = client.V1PodTemplateSpec( metadata=client.V1ObjectMeta(labels={"app": "deployment"}), spec=client.V1PodSpec(containers=[container])) # Spec spec = client.V1DeploymentSpec( replicas=1, template=template) # Deployment deployment = client.V1Deployment( api_version="apps/v1", kind="Deployment", metadata=client.V1ObjectMeta(name="deployment"), spec=spec) # Creation of the Deployment in specified namespace # (Can replace "default" with a namespace you may have created) apps_v1_api.create_namespaced_deployment( namespace="default", body=deployment )
Example #13
Source File: translate_outputs.py From tacker with Apache License 2.0 | 4 votes |
def init_deployment(self, tosca_kube_obj, kube_obj_name): """Instantiate the deployment object""" deployment_name = kube_obj_name # Create a list of container, which made a Pod containers = list() for container_prop in tosca_kube_obj.containers: limit_resource = self.init_resource_requirements(container_prop) container = self.init_containers( container_props=container_prop, limit_resource=limit_resource, name=deployment_name) containers.append(container) # Make a label with pattern {"selector": "deployment_name"} if tosca_kube_obj.scaling_object: scaling_name = tosca_kube_obj.scaling_object.scaling_name update_label = self.config_labels(deployment_name=deployment_name, scaling_name=scaling_name) else: update_label = self.config_labels(deployment_name=deployment_name) if tosca_kube_obj.labels: if 'selector' in update_label: del update_label['selector'] update_label.update(tosca_kube_obj.labels) labels = update_label # Create and configure a spec section pod_template = client.V1PodTemplateSpec( metadata=client.V1ObjectMeta( labels=labels, annotations=tosca_kube_obj.annotations), spec=client.V1PodSpec(containers=containers)) # Create the specification of deployment label_selector = client.V1LabelSelector(match_labels=labels) deployment_spec = client.V1DeploymentSpec( template=pod_template, selector=label_selector) metadata = client.V1ObjectMeta(name=deployment_name, labels=labels) # Instantiate the deployment object deployment = client.V1Deployment( api_version="apps/v1", kind="Deployment", metadata=metadata, spec=deployment_spec) return deployment # init_hpa initializes Kubernetes Horizon Pod Auto-scaling object
Example #14
Source File: test_kubernetes_tools.py From paasta with Apache License 2.0 | 4 votes |
def test_get_pod_template_spec( self, mock_load_service_namespace_config, mock_get_node_affinity, mock_get_pod_volumes, mock_get_kubernetes_containers, mock_get_instance, mock_get_service, mock_get_volumes, in_smtstk, routable_ip, node_affinity, spec_affinity, ): mock_service_namespace_config = mock.Mock() mock_load_service_namespace_config.return_value = mock_service_namespace_config mock_service_namespace_config.is_in_smartstack.return_value = in_smtstk mock_get_node_affinity.return_value = node_affinity mock_system_paasta_config = mock.Mock() mock_system_paasta_config.get_pod_defaults.return_value = dict(dns_policy="foo") ret = self.deployment.get_pod_template_spec( git_sha="aaaa123", system_paasta_config=mock_system_paasta_config ) assert mock_load_service_namespace_config.called assert mock_service_namespace_config.is_in_smartstack.called assert mock_get_pod_volumes.called assert mock_get_volumes.called pod_spec_kwargs = dict( service_account_name=None, containers=mock_get_kubernetes_containers.return_value, share_process_namespace=True, node_selector={"yelp.com/pool": "default"}, restart_policy="Always", volumes=[], dns_policy="foo", ) pod_spec_kwargs.update(spec_affinity) assert ret == V1PodTemplateSpec( metadata=V1ObjectMeta( labels={ "yelp.com/paasta_git_sha": "aaaa123", "yelp.com/paasta_instance": mock_get_instance.return_value, "yelp.com/paasta_service": mock_get_service.return_value, "paasta.yelp.com/git_sha": "aaaa123", "paasta.yelp.com/instance": mock_get_instance.return_value, "paasta.yelp.com/service": mock_get_service.return_value, }, annotations={ "smartstack_registrations": '["kurupt.fm"]', "paasta.yelp.com/routable_ip": routable_ip, "hpa": '{"http": {"any": "random"}, "uwsgi": {}}', "iam.amazonaws.com/role": "", }, ), spec=V1PodSpec(**pod_spec_kwargs), )
Example #15
Source File: statefulset.py From kubetest with GNU General Public License v3.0 | 4 votes |
def _add_kubetest_labels(self) -> None: """Add a kubetest label to the StatefulSet object. This allows kubetest to more easily and reliably search for and aggregate API objects, such as getting the Pods for a StatefulSet. The kubetest label key is "kubetest/<obj kind>" where the obj kind is the lower-cased kind of the obj. """ self.klabel_key = 'kubetest/statefulset' if self.obj.metadata.labels: self.klabel_uid = self.obj.metadata.labels.get(self.klabel_key, None) else: self.klabel_uid = None if not self.klabel_uid: self.klabel_uid = str(uuid.uuid4()) # fixme: it would be nice to clean up this label setting logic a bit # and possibly abstract it out to something more generalized, but # that is difficult to do given the differences in object attributes # Set the base metadata label if self.obj.metadata is None: self.obj.metadata = client.V1ObjectMeta() if self.obj.metadata.labels is None: self.obj.metadata.labels = {} if self.klabel_key not in self.obj.metadata.labels: self.obj.metadata.labels[self.klabel_key] = self.klabel_uid # If no spec is set, there is nothing to set additional labels on if self.obj.spec is None: log.warning('statefulset spec not set - cannot set kubetest label') return # Set the selector label if self.obj.spec.selector is None: self.obj.spec.selector = client.V1LabelSelector() if self.obj.spec.selector.match_labels is None: self.obj.spec.selector.match_labels = {} if self.klabel_key not in self.obj.spec.selector.match_labels: self.obj.spec.selector.match_labels[self.klabel_key] = self.klabel_uid # Set the template label if self.obj.spec.template is None: self.obj.spec.template = client.V1PodTemplateSpec() if self.obj.spec.template.metadata is None: self.obj.spec.template.metadata = client.V1ObjectMeta(labels={}) if self.klabel_key not in self.obj.spec.template.metadata.labels: self.obj.spec.template.metadata.labels[self.klabel_key] = self.klabel_uid
Example #16
Source File: deployment.py From kubetest with GNU General Public License v3.0 | 4 votes |
def _add_kubetest_labels(self) -> None: """Add a kubetest label to the Deployment object. This allows kubetest to more easily and reliably search for and aggregate API objects, such as getting the Pods for a Deployment. The kubetest label key is "kubetest/<obj kind>" where the obj kind is the lower-cased kind of the obj. """ self.klabel_key = 'kubetest/deployment' if self.obj.metadata.labels: self.klabel_uid = self.obj.metadata.labels.get(self.klabel_key, None) else: self.klabel_uid = None if not self.klabel_uid: self.klabel_uid = str(uuid.uuid4()) # fixme: it would be nice to clean up this label setting logic a bit # and possibly abstract it out to something more generalized, but # that is difficult to do given the differences in object attributes # Set the base metadata label if self.obj.metadata is None: self.obj.metadata = client.V1ObjectMeta() if self.obj.metadata.labels is None: self.obj.metadata.labels = {} if self.klabel_key not in self.obj.metadata.labels: self.obj.metadata.labels[self.klabel_key] = self.klabel_uid # If no spec is set, there is nothing to set additional labels on if self.obj.spec is None: log.warning('deployment spec not set - cannot set kubetest label') return # Set the selector label if self.obj.spec.selector is None: self.obj.spec.selector = client.V1LabelSelector() if self.obj.spec.selector.match_labels is None: self.obj.spec.selector.match_labels = {} if self.klabel_key not in self.obj.spec.selector.match_labels: self.obj.spec.selector.match_labels[self.klabel_key] = self.klabel_uid # Set the template label if self.obj.spec.template is None: self.obj.spec.template = client.V1PodTemplateSpec() if self.obj.spec.template.metadata is None: self.obj.spec.template.metadata = client.V1ObjectMeta(labels={}) if self.klabel_key not in self.obj.spec.template.metadata.labels: self.obj.spec.template.metadata.labels[self.klabel_key] = self.klabel_uid
Example #17
Source File: daemonset.py From kubetest with GNU General Public License v3.0 | 4 votes |
def _add_kubetest_labels(self) -> None: """Add a kubetest label to the DaemonSet object. This allows kubetest to more easily and reliably search for and aggregate API objects, such as getting the Pods for a DaemonSet. The kubetest label key is "kubetest/<obj kind>" where the obj kind is the lower-cased kind of the obj. """ self.klabel_key = 'kubetest/daemonset' if self.obj.metadata.labels: self.klabel_uid = self.obj.metadata.labels.get(self.klabel_key, None) else: self.klabel_uid = None if not self.klabel_uid: self.klabel_uid = str(uuid.uuid4()) # fixme: it would be nice to clean up this label setting logic a bit # and possibly abstract it out to something more generalized, but # that is difficult to do given the differences in object attributes # Set the base metadata label if self.obj.metadata is None: self.obj.metadata = client.V1ObjectMeta() if self.obj.metadata.labels is None: self.obj.metadata.labels = {} if self.klabel_key not in self.obj.metadata.labels: self.obj.metadata.labels[self.klabel_key] = self.klabel_uid # If no spec is set, there is nothing to set additional labels on if self.obj.spec is None: log.warning('daemonset spec not set - cannot set kubetest label') return # Set the selector label if self.obj.spec.selector is None: self.obj.spec.selector = client.V1LabelSelector() if self.obj.spec.selector.match_labels is None: self.obj.spec.selector.match_labels = {} if self.klabel_key not in self.obj.spec.selector.match_labels: self.obj.spec.selector.match_labels[self.klabel_key] = self.klabel_uid # Set the template label if self.obj.spec.template is None: self.obj.spec.template = client.V1PodTemplateSpec() if self.obj.spec.template.metadata is None: self.obj.spec.template.metadata = client.V1ObjectMeta(labels={}) if self.klabel_key not in self.obj.spec.template.metadata.labels: self.obj.spec.template.metadata.labels[self.klabel_key] = self.klabel_uid
Example #18
Source File: deployment.py From conu with GNU General Public License v3.0 | 4 votes |
def __init__(self, name=None, selector=None, labels=None, image_metadata=None, namespace='default', create_in_cluster=False, from_template=None): """ Utility functions for kubernetes deployments. :param name: str, name of the deployment :param selector: Label selector for pods. Existing ReplicaSets whose pods are selected by this will be the ones affected by this deployment. It must match the pod template's labels :param labels: dict, dict of labels :param image_metadata: ImageMetadata :param namespace: str, name of the namespace :param create_in_cluster: bool, if True deployment is created in Kubernetes cluster :param from_template: str, deployment template, example: - https://kubernetes.io/docs/concepts/workloads/controllers/deployment/ """ self.namespace = namespace if (from_template is not None) and (name is not None or selector is not None or labels is not None or image_metadata is not None): raise ConuException( 'from_template cannot be passed to constructor at the same time with' ' name, selector, labels or image_metadata') elif from_template is not None: self.body = yaml.safe_load(from_template) self.name = self.body['metadata']['name'] elif (name is not None and selector is not None and labels is not None and image_metadata is not None): self.name = name self.pod = Pod.create(image_metadata) self.spec = client.V1DeploymentSpec( selector=client.V1LabelSelector(match_labels=selector), template=client.V1PodTemplateSpec(metadata=client.V1ObjectMeta(labels=selector), spec=self.pod.spec)) self.metadata = client.V1ObjectMeta(name=self.name, namespace=self.namespace, labels=labels) self.body = client.V1Deployment(spec=self.spec, metadata=self.metadata) else: raise ConuException( 'to create deployment you need to specify template or' ' properties: name, selector, labels, image_metadata') self.api = get_apps_api() if create_in_cluster: self.create_in_cluster()