{ "cells": [ { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "How to create a Service\n", "=============\n", "\n", "In this notebook, we show you how to create a [Service](https://kubernetes.io/docs/concepts/services-networking/service/). \n", "A service is a key Kubernetes API resource. It defines a networking abstraction to route traffic to a particular set of Pods using a label selection." ] }, { "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" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "api_instance = client.CoreV1Api()" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "### Create API resource instances" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "service = client.V1Service()" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "### Fill required Service fields (apiVersion, kind, and metadata)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true, "deletable": true, "editable": true }, "outputs": [], "source": [ "service.api_version = \"v1\"\n", "service.kind = \"Service\"\n", "service.metadata = client.V1ObjectMeta(name=\"my-service\")" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "### Provide Service .spec description\n", "Set Service object named **my-service** to target TCP port **9376** on any Pod with the **'app'='MyApp'** label. The label selection allows Kubernetes to determine which Pod should receive traffic when the service is used." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "spec = client.V1ServiceSpec()\n", "spec.selector = {\"app\": \"MyApp\"}\n", "spec.ports = [client.V1ServicePort(protocol=\"TCP\", port=80, target_port=9376)]\n", "service.spec = spec" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "### Create Service" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "api_instance.create_namespaced_service(namespace=\"default\", body=service)" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "### Delete Service" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "api_instance.delete_namespaced_service(name=\"my-service\", namespace=\"default\")" ] }, { "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 }