Skip to content

Commit 55676fa

Browse files
committed
Update create_deployment notebook
1 parent ff94d26 commit 55676fa

File tree

1 file changed

+270
-19
lines changed

1 file changed

+270
-19
lines changed
Lines changed: 270 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,19 @@
11
{
22
"cells": [
3+
{
4+
"cell_type": "markdown",
5+
"metadata": {},
6+
"source": [
7+
"How to create a Deployment\n",
8+
"==========================\n",
9+
"\n",
10+
"In this notebook, we show you how to create a Deployment with 3 ReplicaSets.\n",
11+
"These ReplicaSets are owned by the Deployment and are managed by the Deployment controller"
12+
]
13+
},
314
{
415
"cell_type": "code",
5-
"execution_count": null,
16+
"execution_count": 1,
617
"metadata": {
718
"collapsed": true
819
},
@@ -11,49 +22,289 @@
1122
"from kubernetes import client, config"
1223
]
1324
},
25+
{
26+
"cell_type": "markdown",
27+
"metadata": {},
28+
"source": [
29+
"### Load config from default location."
30+
]
31+
},
1432
{
1533
"cell_type": "code",
16-
"execution_count": null,
34+
"execution_count": 2,
1735
"metadata": {
1836
"collapsed": true
1937
},
2038
"outputs": [],
2139
"source": [
22-
"client.Configuration().host=\"http://localhost:8080\""
40+
"config.load_kube_config()\n",
41+
"extensions = client.ExtensionsV1beta1Api()"
42+
]
43+
},
44+
{
45+
"cell_type": "markdown",
46+
"metadata": {},
47+
"source": [
48+
"### Create Deployment object"
2349
]
2450
},
2551
{
2652
"cell_type": "code",
27-
"execution_count": null,
53+
"execution_count": 3,
2854
"metadata": {
2955
"collapsed": true
3056
},
3157
"outputs": [],
3258
"source": [
33-
"extensions = client.ExtensionsV1beta1Api()"
59+
"deployment = client.ExtensionsV1beta1Deployment()"
60+
]
61+
},
62+
{
63+
"cell_type": "markdown",
64+
"metadata": {},
65+
"source": [
66+
"### Fill required Deployment fields (apiVersion, kind, and metadata)"
3467
]
3568
},
3669
{
3770
"cell_type": "code",
38-
"execution_count": null,
71+
"execution_count": 4,
72+
"metadata": {
73+
"collapsed": true
74+
},
75+
"outputs": [],
76+
"source": [
77+
"deployment.api_version = 'extensions/v1beta1'\n",
78+
"deployment.kind = 'Deployment'\n",
79+
"deployment.metadata = client.V1ObjectMeta(name='nginx-deployment')"
80+
]
81+
},
82+
{
83+
"cell_type": "markdown",
84+
"metadata": {},
85+
"source": [
86+
"### A Deployment also needs a .spec section."
87+
]
88+
},
89+
{
90+
"cell_type": "code",
91+
"execution_count": 5,
92+
"metadata": {
93+
"collapsed": true
94+
},
95+
"outputs": [],
96+
"source": [
97+
"spec = client.ExtensionsV1beta1DeploymentSpec()\n",
98+
"spec.replicas = 3"
99+
]
100+
},
101+
{
102+
"cell_type": "markdown",
103+
"metadata": {},
104+
"source": [
105+
"### Add Pod template in .spec.template section"
106+
]
107+
},
108+
{
109+
"cell_type": "code",
110+
"execution_count": 6,
39111
"metadata": {
40112
"collapsed": true
41113
},
42114
"outputs": [],
43115
"source": [
44-
"body = extensions.V1beta1Deployment()\n",
45-
"namespace = \"default\"\n",
46-
"\n",
47-
"deployment = client.V1beta1Deployment()\n",
48-
"deployment.metadata = client.V1ObjectMeta(name=\"jupyter\")\n",
49-
"spec = client.V1beta1DeploymentSpec()\n",
50116
"spec.template = client.V1PodTemplateSpec()\n",
51-
"spec.template.metadata = client.V1ObjectMeta()\n",
52-
"spec.template.spec = client.V1PodSpec()\n",
53-
"\n",
54-
"\n",
55-
"extensions.create_namespaced_deployment(namespace, body)"
117+
"spec.template.metadata = client.V1ObjectMeta(labels={'app': 'nginx'})\n",
118+
"spec.template.spec = client.V1PodSpec()"
56119
]
120+
},
121+
{
122+
"cell_type": "markdown",
123+
"metadata": {},
124+
"source": [
125+
"### Pod template container description"
126+
]
127+
},
128+
{
129+
"cell_type": "code",
130+
"execution_count": 7,
131+
"metadata": {
132+
"collapsed": true
133+
},
134+
"outputs": [],
135+
"source": [
136+
"container = client.V1Container()\n",
137+
"container.name='nginx'\n",
138+
"container.image='nginx:1.7.9'\n",
139+
"container. ports = [client.V1ContainerPort(container_port=80)]"
140+
]
141+
},
142+
{
143+
"cell_type": "code",
144+
"execution_count": 8,
145+
"metadata": {
146+
"collapsed": false
147+
},
148+
"outputs": [],
149+
"source": [
150+
"spec.template.spec.containers = [container]\n",
151+
"deployment.spec = spec"
152+
]
153+
},
154+
{
155+
"cell_type": "markdown",
156+
"metadata": {},
157+
"source": [
158+
"### Create Deployment"
159+
]
160+
},
161+
{
162+
"cell_type": "code",
163+
"execution_count": 9,
164+
"metadata": {
165+
"collapsed": false
166+
},
167+
"outputs": [
168+
{
169+
"data": {
170+
"text/plain": [
171+
"{'api_version': 'extensions/v1beta1',\n",
172+
" 'kind': 'Deployment',\n",
173+
" 'metadata': {'annotations': None,\n",
174+
" 'cluster_name': None,\n",
175+
" 'creation_timestamp': datetime.datetime(2017, 6, 3, 16, 34, 23, tzinfo=tzlocal()),\n",
176+
" 'deletion_grace_period_seconds': None,\n",
177+
" 'deletion_timestamp': None,\n",
178+
" 'finalizers': None,\n",
179+
" 'generate_name': None,\n",
180+
" 'generation': 1,\n",
181+
" 'labels': {u'app': 'nginx'},\n",
182+
" 'name': 'nginx-deployment',\n",
183+
" 'namespace': 'default',\n",
184+
" 'owner_references': None,\n",
185+
" 'resource_version': '181854',\n",
186+
" 'self_link': '/apis/extensions/v1beta1/namespaces/default/deployments/nginx-deployment',\n",
187+
" 'uid': '804436c1-487a-11e7-b606-0800277d3a21'},\n",
188+
" 'spec': {'min_ready_seconds': None,\n",
189+
" 'paused': None,\n",
190+
" 'progress_deadline_seconds': None,\n",
191+
" 'replicas': 3,\n",
192+
" 'revision_history_limit': None,\n",
193+
" 'rollback_to': None,\n",
194+
" 'selector': {'match_expressions': None,\n",
195+
" 'match_labels': {u'app': 'nginx'}},\n",
196+
" 'strategy': {'rolling_update': {'max_surge': '1',\n",
197+
" 'max_unavailable': '1'},\n",
198+
" 'type': 'RollingUpdate'},\n",
199+
" 'template': {'metadata': {'annotations': None,\n",
200+
" 'cluster_name': None,\n",
201+
" 'creation_timestamp': None,\n",
202+
" 'deletion_grace_period_seconds': None,\n",
203+
" 'deletion_timestamp': None,\n",
204+
" 'finalizers': None,\n",
205+
" 'generate_name': None,\n",
206+
" 'generation': None,\n",
207+
" 'labels': {u'app': 'nginx'},\n",
208+
" 'name': None,\n",
209+
" 'namespace': None,\n",
210+
" 'owner_references': None,\n",
211+
" 'resource_version': None,\n",
212+
" 'self_link': None,\n",
213+
" 'uid': None},\n",
214+
" 'spec': {'active_deadline_seconds': None,\n",
215+
" 'affinity': None,\n",
216+
" 'automount_service_account_token': None,\n",
217+
" 'containers': [{'args': None,\n",
218+
" 'command': None,\n",
219+
" 'env': None,\n",
220+
" 'env_from': None,\n",
221+
" 'image': 'nginx:1.7.9',\n",
222+
" 'image_pull_policy': 'IfNotPresent',\n",
223+
" 'lifecycle': None,\n",
224+
" 'liveness_probe': None,\n",
225+
" 'name': 'nginx',\n",
226+
" 'ports': [{'container_port': 80,\n",
227+
" 'host_ip': None,\n",
228+
" 'host_port': None,\n",
229+
" 'name': None,\n",
230+
" 'protocol': 'TCP'}],\n",
231+
" 'readiness_probe': None,\n",
232+
" 'resources': {'limits': None,\n",
233+
" 'requests': None},\n",
234+
" 'security_context': None,\n",
235+
" 'stdin': None,\n",
236+
" 'stdin_once': None,\n",
237+
" 'termination_message_path': '/dev/termination-log',\n",
238+
" 'termination_message_policy': None,\n",
239+
" 'tty': None,\n",
240+
" 'volume_mounts': None,\n",
241+
" 'working_dir': None}],\n",
242+
" 'dns_policy': 'ClusterFirst',\n",
243+
" 'host_ipc': None,\n",
244+
" 'host_network': None,\n",
245+
" 'host_pid': None,\n",
246+
" 'hostname': None,\n",
247+
" 'image_pull_secrets': None,\n",
248+
" 'init_containers': None,\n",
249+
" 'node_name': None,\n",
250+
" 'node_selector': None,\n",
251+
" 'restart_policy': 'Always',\n",
252+
" 'scheduler_name': None,\n",
253+
" 'security_context': {'fs_group': None,\n",
254+
" 'run_as_non_root': None,\n",
255+
" 'run_as_user': None,\n",
256+
" 'se_linux_options': None,\n",
257+
" 'supplemental_groups': None},\n",
258+
" 'service_account': None,\n",
259+
" 'service_account_name': None,\n",
260+
" 'subdomain': None,\n",
261+
" 'termination_grace_period_seconds': 30,\n",
262+
" 'tolerations': None,\n",
263+
" 'volumes': None}}},\n",
264+
" 'status': {'available_replicas': None,\n",
265+
" 'conditions': None,\n",
266+
" 'observed_generation': None,\n",
267+
" 'ready_replicas': None,\n",
268+
" 'replicas': None,\n",
269+
" 'unavailable_replicas': None,\n",
270+
" 'updated_replicas': None}}"
271+
]
272+
},
273+
"execution_count": 9,
274+
"metadata": {},
275+
"output_type": "execute_result"
276+
}
277+
],
278+
"source": [
279+
"extensions.create_namespaced_deployment(namespace='default', body=deployment)"
280+
]
281+
},
282+
{
283+
"cell_type": "markdown",
284+
"metadata": {},
285+
"source": [
286+
"### Delete Deployment"
287+
]
288+
},
289+
{
290+
"cell_type": "code",
291+
"execution_count": 10,
292+
"metadata": {
293+
"collapsed": true
294+
},
295+
"outputs": [],
296+
"source": [
297+
"#extensions.delete_namespaced_deployment(name='nginx-deployment', namespace='default', body=client.V1DeleteOptions(),grace_period_seconds = 56, propagation_policy = \"Background\")"
298+
]
299+
},
300+
{
301+
"cell_type": "code",
302+
"execution_count": null,
303+
"metadata": {
304+
"collapsed": true
305+
},
306+
"outputs": [],
307+
"source": []
57308
}
58309
],
59310
"metadata": {
@@ -72,9 +323,9 @@
72323
"name": "python",
73324
"nbconvert_exporter": "python",
74325
"pygments_lexer": "ipython2",
75-
"version": "2.7.12"
326+
"version": "2.7.13"
76327
}
77328
},
78329
"nbformat": 4,
79-
"nbformat_minor": 1
330+
"nbformat_minor": 2
80331
}

0 commit comments

Comments
 (0)