diff --git a/examples/notebooks/intro_notebook.ipynb b/examples/notebooks/intro_notebook.ipynb new file mode 100644 index 0000000000..e91decb13e --- /dev/null +++ b/examples/notebooks/intro_notebook.ipynb @@ -0,0 +1,309 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "deletable": true, + "editable": true + }, + "source": [ + "Managing kubernetes objects using common resource operations with the python client\n", + "-----------------------------------------------------------------------------------------------\n", + "\n", + "Some of these operations include;\n", + "\n", + "- **`create_xxxx`** : create a resource object. Ex **`create_namespaced_pod`** and **`create_namespaced_deployment`**, for creation of pods and deployments respectively. This performs operations similar to **`kubectl create`**.\n", + "\n", + "\n", + "- **`read_xxxx`** : read the specified resource object. Ex **`read_namespaced_pod`** and **`read_namespaced_deployment`**, to read pods and deployments respectively. This performs operations similar to **`kubectl describe`**.\n", + "\n", + "\n", + "- **`list_xxxx`** : retrieve all resource objects of a specific type. Ex **`list_namespaced_pod`** and **`list_namespaced_deployment`**, to list pods and deployments respectively. This performs operations similar to **`kubectl get`**.\n", + "\n", + "\n", + "- **`patch_xxxx`** : apply a change to a specific field. Ex **`patch_namespaced_pod`** and **`patch_namespaced_deployment`**, to update pods and deployments respectively. This performs operations similar to **`kubectl patch`**, **`kubectl label`**, **`kubectl annotate`** etc.\n", + "\n", + "\n", + "- **`replace_xxxx`** : replacing a resource object will update the resource by replacing the existing spec with the provided one. Ex **`replace_namespaced_pod`** and **`replace_namespaced_deployment`**, to update pods and deployments respectively, by creating new replacements of the entire object. This performs operations similar to **`kubectl rolling-update`**, **`kubectl apply`** and **`kubectl replace`**.\n", + "\n", + "\n", + "- **`delete_xxxx`** : delete a resource. This performs operations similar to **`kubectl delete`**.\n", + "\n", + "\n", + "For Futher information see the Documentation for API Endpoints section in https://github.com/kubernetes-incubator/client-python/blob/master/kubernetes/README.md" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "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, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "config.load_kube_config()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": true, + "editable": true + }, + "source": [ + "### Create API endpoint instance as well as API resource instances (body and specification)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "api_instance = client.ExtensionsV1beta1Api()\n", + "dep = client.ExtensionsV1beta1Deployment()\n", + "spec = client.ExtensionsV1beta1DeploymentSpec()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": true, + "editable": true + }, + "source": [ + "### Fill required object fields (apiVersion, kind, metadata and spec)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "name = \"my-busybox\"\n", + "dep.metadata = client.V1ObjectMeta(name=name)\n", + "\n", + "spec.template = client.V1PodTemplateSpec()\n", + "spec.template.metadata = client.V1ObjectMeta(name=\"busybox\")\n", + "spec.template.metadata.labels = {\"app\":\"busybox\"}\n", + "spec.template.spec = client.V1PodSpec()\n", + "dep.spec = spec\n", + "\n", + "container = client.V1Container()\n", + "container.image = \"busybox:1.26.1\"\n", + "container.args = [\"sleep\", \"3600\"]\n", + "container.name = name\n", + "spec.template.spec.containers = [container]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": true, + "editable": true + }, + "source": [ + "### Create Deployment using create_xxxx command for Deployments." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "api_instance.create_namespaced_deployment(namespace=\"default\",body=dep)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": true, + "editable": true + }, + "source": [ + "### Use list_xxxx command for Deployment, to list Deployments." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "deps = api_instance.list_namespaced_deployment(namespace=\"default\")\n", + "for item in deps.items:\n", + " print(\"%s %s\" % (item.metadata.namespace, item.metadata.name))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": true, + "editable": true + }, + "source": [ + "### Use read_xxxx command for Deployment, to display the detailed state of the created Deployment resource." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "api_instance.read_namespaced_deployment(namespace=\"default\",name=name)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": true, + "editable": true + }, + "source": [ + "### Use patch_xxxx command for Deployment, to make specific update to the Deployment." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "dep.metadata.labels = {\"key\": \"value\"}\n", + "api_instance.patch_namespaced_deployment(name=name, namespace=\"default\", body=dep)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": true, + "editable": true + }, + "source": [ + "### Use replace_xxxx command for Deployment, to update Deployment with a completely new version of the object." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true + }, + "outputs": [], + "source": [ + "dep.spec.template.spec.containers[0].image = \"busybox:1.26.2\"\n", + "api_instance.replace_namespaced_deployment(name=name, namespace=\"default\", body=dep)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "deletable": true, + "editable": true + }, + "source": [ + "### Use delete_xxxx command for Deployment, to delete created Deployment." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false, + "deletable": true, + "editable": true, + "scrolled": true + }, + "outputs": [], + "source": [ + "api_instance.delete_namespaced_deployment(name=name, 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": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.13" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +}