In this notebook, we show you how to create a Deployment with 3 ReplicaSets. These ReplicaSets are owned by the Deployment and are managed by the Deployment controller. We would also learn how to carry out RollingUpdate and RollBack to new and older versions of the deployment.
In [ ]:
from kubernetes import client, config
In [ ]:
config.load_kube_config()
extension = client.ExtensionsV1beta1Api()
In [ ]:
deployment = client.ExtensionsV1beta1Deployment()
In [ ]:
deployment.api_version = "extensions/v1beta1"
deployment.kind = "Deployment"
deployment.metadata = client.V1ObjectMeta(name="nginx-deployment")
In [ ]:
spec = client.ExtensionsV1beta1DeploymentSpec()
spec.replicas = 3
In [ ]:
spec.template = client.V1PodTemplateSpec()
spec.template.metadata = client.V1ObjectMeta(labels={"app": "nginx"})
spec.template.spec = client.V1PodSpec()
In [ ]:
container = client.V1Container()
container.name="nginx"
container.image="nginx:1.7.9"
container. ports = [client.V1ContainerPort(container_port=80)]
In [ ]:
spec.template.spec.containers = [container]
deployment.spec = spec
In [ ]:
extension.create_namespaced_deployment(namespace="default", body=deployment)
In [ ]:
deployment.spec.template.spec.containers[0].image = "nginx:1.9.1"
In [ ]:
extension.replace_namespaced_deployment(name="nginx-deployment", namespace="default", body=deployment)
In [ ]:
rollback = client.ExtensionsV1beta1DeploymentRollback()
rollback.api_version = "extensions/v1beta1"
rollback.kind = "DeploymentRollback"
rollback.rollback_to = client.ExtensionsV1beta1RollbackConfig()
rollback.rollback_to.revision = 0
rollback.name = "nginx-deployment"
In [ ]:
extension.create_namespaced_deployment_rollback_rollback(name="nginx-deployment", namespace="default", body=rollback)
In [ ]:
extension.delete_namespaced_deployment(name="nginx-deployment", namespace="default", body=client.V1DeleteOptions(propagation_policy="Foreground", grace_period_seconds=5))
In [ ]: