forked from kubernetes-client/python
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add notebook on how to create a ConfigMap and use its data in Pods
- Loading branch information
Showing
1 changed file
with
314 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,314 @@ | ||
{ | ||
"cells": [ | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": { | ||
"deletable": true, | ||
"editable": true | ||
}, | ||
"source": [ | ||
"How to create a ConfigMap and use its data in Pods\n", | ||
"===========================\n", | ||
"\n", | ||
"[ConfigMaps](https://kubernetes.io/docs/tasks/configure-pod-container/configmap/) allow you to decouple configuration artifacts from image content to keep containerized applications portable. In this notebook we would learn how to create a ConfigMap and also how to use its data in Pods as seen in https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"metadata": { | ||
"collapsed": false, | ||
"deletable": true, | ||
"editable": true | ||
}, | ||
"outputs": [], | ||
"source": [ | ||
"from kubernetes import client, config\n", | ||
"from kubernetes.client.rest import ApiException" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"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": {}, | ||
"source": [ | ||
"### Create API endpoint instance and API resource instances" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"metadata": { | ||
"collapsed": true, | ||
"deletable": true, | ||
"editable": true | ||
}, | ||
"outputs": [], | ||
"source": [ | ||
"api_instance = client.CoreV1Api()\n", | ||
"cmap = client.V1ConfigMap()" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"### Create key value pair data for the ConfigMap" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"metadata": { | ||
"collapsed": true, | ||
"deletable": true, | ||
"editable": true | ||
}, | ||
"outputs": [], | ||
"source": [ | ||
"cmap.metadata = client.V1ObjectMeta(name=\"special-config\")\n", | ||
"cmap.data = {}\n", | ||
"cmap.data[\"special.how\"] = \"very\"\n", | ||
"cmap.data[\"special.type\"] = \"charm\"" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"### Create ConfigMap" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"metadata": { | ||
"collapsed": false, | ||
"deletable": true, | ||
"editable": true | ||
}, | ||
"outputs": [], | ||
"source": [ | ||
"api_instance.create_namespaced_config_map(namespace=\"default\", body=cmap)" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"### Create API endpoint instance and API resource instances for test Pod" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"metadata": { | ||
"collapsed": true, | ||
"deletable": true, | ||
"editable": true | ||
}, | ||
"outputs": [], | ||
"source": [ | ||
"pod = client.V1Pod()\n", | ||
"spec = client.V1PodSpec()\n", | ||
"pod.metadata = client.V1ObjectMeta(name=\"dapi-test-pod\")" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"### Initialize test Pod container" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"metadata": { | ||
"collapsed": true, | ||
"deletable": true, | ||
"editable": true | ||
}, | ||
"outputs": [], | ||
"source": [ | ||
"container = client.V1Container()\n", | ||
"container.name = \"test-container\"\n", | ||
"container.image = \"gcr.io/google_containers/busybox\"\n", | ||
"container.command = [\"/bin/sh\", \"-c\", \"env\"]" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"### Define Pod environment variables with data from ConfigMaps" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"metadata": { | ||
"collapsed": true, | ||
"deletable": true, | ||
"editable": true | ||
}, | ||
"outputs": [], | ||
"source": [ | ||
"container.env = [client.V1EnvVar(name=\"SPECIAL_LEVEL_KEY\"), client.V1EnvVar(name=\"SPECIAL_TYPE_KEY\")]\n", | ||
"container.env[0].value_from = client.V1EnvVarSource()\n", | ||
"container.env[0].value_from.config_map_key_ref = client.V1ConfigMapKeySelector(name=\"special-config\", key=\"special.how\")\n", | ||
"\n", | ||
"container.env[1].value_from = client.V1EnvVarSource()\n", | ||
"container.env[1].value_from.config_map_key_ref = client.V1ConfigMapKeySelector(name=\"special-config\", key=\"special.type\")\n", | ||
"\n", | ||
"spec.restart_policy = \"Never\"\n", | ||
"spec.containers = [container]\n", | ||
"pod.spec = spec" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"### Create Pod" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"metadata": { | ||
"collapsed": false, | ||
"deletable": true, | ||
"editable": true | ||
}, | ||
"outputs": [], | ||
"source": [ | ||
"api_instance.create_namespaced_pod(namespace=\"default\",body=pod)" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"### View ConfigMap data from Pod log" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"metadata": { | ||
"collapsed": false, | ||
"deletable": true, | ||
"editable": true, | ||
"scrolled": true | ||
}, | ||
"outputs": [], | ||
"source": [ | ||
"log = \"\"\n", | ||
"try: \n", | ||
" log = api_instance.read_namespaced_pod_log(name=\"dapi-test-pod\", namespace=\"default\")\n", | ||
"except ApiException as e:\n", | ||
" if str(e).find(\"ContainerCreating\") != -1:\n", | ||
" print(\"Creating Pod container.\\nRe-run current cell.\")\n", | ||
" else:\n", | ||
" print(\"Exception when calling CoreV1Api->read_namespaced_pod_log: %s\\n\" % e)\n", | ||
"\n", | ||
"for line in log.split(\"\\n\"):\n", | ||
" if line.startswith(\"SPECIAL\"):\n", | ||
" print(line)" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"### Delete ConfigMap" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"metadata": { | ||
"collapsed": false, | ||
"deletable": true, | ||
"editable": true | ||
}, | ||
"outputs": [], | ||
"source": [ | ||
"api_instance.delete_namespaced_config_map(name=\"special-config\", namespace=\"default\", body=cmap)" | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"### Delete Pod" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"metadata": { | ||
"collapsed": false, | ||
"deletable": true, | ||
"editable": true, | ||
"scrolled": true | ||
}, | ||
"outputs": [], | ||
"source": [ | ||
"api_instance.delete_namespaced_pod(name=\"dapi-test-pod\", namespace=\"default\", body=client.V1DeleteOptions())" | ||
] | ||
}, | ||
{ | ||
"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.6" | ||
} | ||
}, | ||
"nbformat": 4, | ||
"nbformat_minor": 2 | ||
} |