diff --git a/examples/notebooks/create_deployment.ipynb b/examples/notebooks/create_deployment.ipynb index c7423f3066..0fa6c05105 100644 --- a/examples/notebooks/create_deployment.ipynb +++ b/examples/notebooks/create_deployment.ipynb @@ -1,59 +1,346 @@ { "cells": [ + { + "cell_type": "markdown", + "metadata": { + "deletable": true, + "editable": true + }, + "source": [ + "How to create a Deployment\n", + "==========================\n", + "\n", + "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." + ] + }, { "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": true + "collapsed": true, + "deletable": true, + "editable": true }, "outputs": [], "source": [ "from kubernetes import client, config" ] }, + { + "cell_type": "markdown", + "metadata": { + "deletable": true, + "editable": true + }, + "source": [ + "### Load config from default location" + ] + }, { "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": true + "collapsed": true, + "deletable": true, + "editable": true }, "outputs": [], "source": [ - "client.Configuration().host=\"http://localhost:8080\"" + "config.load_kube_config()\n", + "extension = client.ExtensionsV1beta1Api()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": true, + "editable": true + }, + "source": [ + "### Create Deployment object" ] }, { "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": true + "collapsed": true, + "deletable": true, + "editable": true }, "outputs": [], "source": [ - "extensions = client.ExtensionsV1beta1Api()" + "deployment = client.ExtensionsV1beta1Deployment()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": true, + "editable": true + }, + "source": [ + "### Fill required Deployment fields (apiVersion, kind, and metadata)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { - "collapsed": true + "collapsed": true, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "deployment.api_version = \"extensions/v1beta1\"\n", + "deployment.kind = \"Deployment\"\n", + "deployment.metadata = client.V1ObjectMeta(name=\"nginx-deployment\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": true, + "editable": true + }, + "source": [ + "### A Deployment also needs a .spec section" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "spec = client.ExtensionsV1beta1DeploymentSpec()\n", + "spec.replicas = 3" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": true, + "editable": true + }, + "source": [ + "### Add Pod template in .spec.template section" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true, + "deletable": true, + "editable": true }, "outputs": [], "source": [ - "body = extensions.V1beta1Deployment()\n", - "namespace = \"default\"\n", - "\n", - "deployment = client.V1beta1Deployment()\n", - "deployment.metadata = client.V1ObjectMeta(name=\"jupyter\")\n", - "spec = client.V1beta1DeploymentSpec()\n", "spec.template = client.V1PodTemplateSpec()\n", - "spec.template.metadata = client.V1ObjectMeta()\n", - "spec.template.spec = client.V1PodSpec()\n", - "\n", - "\n", - "extensions.create_namespaced_deployment(namespace, body)" + "spec.template.metadata = client.V1ObjectMeta(labels={\"app\": \"nginx\"})\n", + "spec.template.spec = client.V1PodSpec()" ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": true, + "editable": true + }, + "source": [ + "### Pod template container description" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "container = client.V1Container()\n", + "container.name=\"nginx\"\n", + "container.image=\"nginx:1.7.9\"\n", + "container. ports = [client.V1ContainerPort(container_port=80)]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "spec.template.spec.containers = [container]\n", + "deployment.spec = spec" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": true, + "editable": true + }, + "source": [ + "### Create Deployment" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "extension.create_namespaced_deployment(namespace=\"default\", body=deployment)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": true, + "editable": true + }, + "source": [ + "### Update container image " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "deployment.spec.template.spec.containers[0].image = \"nginx:1.9.1\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": true, + "editable": true + }, + "source": [ + "### Apply update (RollingUpdate)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "extension.replace_namespaced_deployment(name=\"nginx-deployment\", namespace=\"default\", body=deployment)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": true, + "editable": true + }, + "source": [ + "### Create DeploymentRollback object\n", + "This object is used to rollback to a previous version of the deployment." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "rollback = client.ExtensionsV1beta1DeploymentRollback()\n", + "rollback.api_version = \"extensions/v1beta1\"\n", + "rollback.kind = \"DeploymentRollback\"\n", + "rollback.rollback_to = client.ExtensionsV1beta1RollbackConfig()\n", + "rollback.rollback_to.revision = 0\n", + "rollback.name = \"nginx-deployment\"" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": true, + "editable": true + }, + "source": [ + "### Execute RollBack" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "extension.create_namespaced_deployment_rollback_rollback(name=\"nginx-deployment\", namespace=\"default\", body=rollback)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": true, + "editable": true + }, + "source": [ + "### Delete Deployment" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "extension.delete_namespaced_deployment(name=\"nginx-deployment\", namespace=\"default\", body=client.V1DeleteOptions(propagation_policy=\"Foreground\", grace_period_seconds=5))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [] } ], "metadata": { @@ -72,9 +359,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.12" + "version": "2.7.13" } }, "nbformat": 4, - "nbformat_minor": 1 + "nbformat_minor": 2 }