Skip to content

Commit 9ba5378

Browse files
authored
Merge pull request #239 from djkonro/master
Update create_deployment notebook
2 parents 1471c6d + 7d98dcc commit 9ba5378

File tree

1 file changed

+306
-19
lines changed

1 file changed

+306
-19
lines changed
Lines changed: 306 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,346 @@
11
{
22
"cells": [
3+
{
4+
"cell_type": "markdown",
5+
"metadata": {
6+
"deletable": true,
7+
"editable": true
8+
},
9+
"source": [
10+
"How to create a Deployment\n",
11+
"==========================\n",
12+
"\n",
13+
"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."
14+
]
15+
},
316
{
417
"cell_type": "code",
518
"execution_count": null,
619
"metadata": {
7-
"collapsed": true
20+
"collapsed": true,
21+
"deletable": true,
22+
"editable": true
823
},
924
"outputs": [],
1025
"source": [
1126
"from kubernetes import client, config"
1227
]
1328
},
29+
{
30+
"cell_type": "markdown",
31+
"metadata": {
32+
"deletable": true,
33+
"editable": true
34+
},
35+
"source": [
36+
"### Load config from default location"
37+
]
38+
},
1439
{
1540
"cell_type": "code",
1641
"execution_count": null,
1742
"metadata": {
18-
"collapsed": true
43+
"collapsed": true,
44+
"deletable": true,
45+
"editable": true
1946
},
2047
"outputs": [],
2148
"source": [
22-
"client.Configuration().host=\"http://localhost:8080\""
49+
"config.load_kube_config()\n",
50+
"extension = client.ExtensionsV1beta1Api()"
51+
]
52+
},
53+
{
54+
"cell_type": "markdown",
55+
"metadata": {
56+
"deletable": true,
57+
"editable": true
58+
},
59+
"source": [
60+
"### Create Deployment object"
2361
]
2462
},
2563
{
2664
"cell_type": "code",
2765
"execution_count": null,
2866
"metadata": {
29-
"collapsed": true
67+
"collapsed": true,
68+
"deletable": true,
69+
"editable": true
3070
},
3171
"outputs": [],
3272
"source": [
33-
"extensions = client.ExtensionsV1beta1Api()"
73+
"deployment = client.ExtensionsV1beta1Deployment()"
74+
]
75+
},
76+
{
77+
"cell_type": "markdown",
78+
"metadata": {
79+
"deletable": true,
80+
"editable": true
81+
},
82+
"source": [
83+
"### Fill required Deployment fields (apiVersion, kind, and metadata)"
3484
]
3585
},
3686
{
3787
"cell_type": "code",
3888
"execution_count": null,
3989
"metadata": {
40-
"collapsed": true
90+
"collapsed": true,
91+
"deletable": true,
92+
"editable": true
93+
},
94+
"outputs": [],
95+
"source": [
96+
"deployment.api_version = \"extensions/v1beta1\"\n",
97+
"deployment.kind = \"Deployment\"\n",
98+
"deployment.metadata = client.V1ObjectMeta(name=\"nginx-deployment\")"
99+
]
100+
},
101+
{
102+
"cell_type": "markdown",
103+
"metadata": {
104+
"deletable": true,
105+
"editable": true
106+
},
107+
"source": [
108+
"### A Deployment also needs a .spec section"
109+
]
110+
},
111+
{
112+
"cell_type": "code",
113+
"execution_count": null,
114+
"metadata": {
115+
"collapsed": true,
116+
"deletable": true,
117+
"editable": true
118+
},
119+
"outputs": [],
120+
"source": [
121+
"spec = client.ExtensionsV1beta1DeploymentSpec()\n",
122+
"spec.replicas = 3"
123+
]
124+
},
125+
{
126+
"cell_type": "markdown",
127+
"metadata": {
128+
"deletable": true,
129+
"editable": true
130+
},
131+
"source": [
132+
"### Add Pod template in .spec.template section"
133+
]
134+
},
135+
{
136+
"cell_type": "code",
137+
"execution_count": null,
138+
"metadata": {
139+
"collapsed": true,
140+
"deletable": true,
141+
"editable": true
41142
},
42143
"outputs": [],
43144
"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",
50145
"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)"
146+
"spec.template.metadata = client.V1ObjectMeta(labels={\"app\": \"nginx\"})\n",
147+
"spec.template.spec = client.V1PodSpec()"
56148
]
149+
},
150+
{
151+
"cell_type": "markdown",
152+
"metadata": {
153+
"deletable": true,
154+
"editable": true
155+
},
156+
"source": [
157+
"### Pod template container description"
158+
]
159+
},
160+
{
161+
"cell_type": "code",
162+
"execution_count": null,
163+
"metadata": {
164+
"collapsed": true,
165+
"deletable": true,
166+
"editable": true
167+
},
168+
"outputs": [],
169+
"source": [
170+
"container = client.V1Container()\n",
171+
"container.name=\"nginx\"\n",
172+
"container.image=\"nginx:1.7.9\"\n",
173+
"container. ports = [client.V1ContainerPort(container_port=80)]"
174+
]
175+
},
176+
{
177+
"cell_type": "code",
178+
"execution_count": null,
179+
"metadata": {
180+
"collapsed": false,
181+
"deletable": true,
182+
"editable": true
183+
},
184+
"outputs": [],
185+
"source": [
186+
"spec.template.spec.containers = [container]\n",
187+
"deployment.spec = spec"
188+
]
189+
},
190+
{
191+
"cell_type": "markdown",
192+
"metadata": {
193+
"deletable": true,
194+
"editable": true
195+
},
196+
"source": [
197+
"### Create Deployment"
198+
]
199+
},
200+
{
201+
"cell_type": "code",
202+
"execution_count": null,
203+
"metadata": {
204+
"collapsed": false,
205+
"deletable": true,
206+
"editable": true
207+
},
208+
"outputs": [],
209+
"source": [
210+
"extension.create_namespaced_deployment(namespace=\"default\", body=deployment)"
211+
]
212+
},
213+
{
214+
"cell_type": "markdown",
215+
"metadata": {
216+
"deletable": true,
217+
"editable": true
218+
},
219+
"source": [
220+
"### Update container image "
221+
]
222+
},
223+
{
224+
"cell_type": "code",
225+
"execution_count": null,
226+
"metadata": {
227+
"collapsed": true,
228+
"deletable": true,
229+
"editable": true
230+
},
231+
"outputs": [],
232+
"source": [
233+
"deployment.spec.template.spec.containers[0].image = \"nginx:1.9.1\""
234+
]
235+
},
236+
{
237+
"cell_type": "markdown",
238+
"metadata": {
239+
"deletable": true,
240+
"editable": true
241+
},
242+
"source": [
243+
"### Apply update (RollingUpdate)"
244+
]
245+
},
246+
{
247+
"cell_type": "code",
248+
"execution_count": null,
249+
"metadata": {
250+
"collapsed": false,
251+
"deletable": true,
252+
"editable": true
253+
},
254+
"outputs": [],
255+
"source": [
256+
"extension.replace_namespaced_deployment(name=\"nginx-deployment\", namespace=\"default\", body=deployment)"
257+
]
258+
},
259+
{
260+
"cell_type": "markdown",
261+
"metadata": {
262+
"deletable": true,
263+
"editable": true
264+
},
265+
"source": [
266+
"### Create DeploymentRollback object\n",
267+
"This object is used to rollback to a previous version of the deployment."
268+
]
269+
},
270+
{
271+
"cell_type": "code",
272+
"execution_count": null,
273+
"metadata": {
274+
"collapsed": true,
275+
"deletable": true,
276+
"editable": true
277+
},
278+
"outputs": [],
279+
"source": [
280+
"rollback = client.ExtensionsV1beta1DeploymentRollback()\n",
281+
"rollback.api_version = \"extensions/v1beta1\"\n",
282+
"rollback.kind = \"DeploymentRollback\"\n",
283+
"rollback.rollback_to = client.ExtensionsV1beta1RollbackConfig()\n",
284+
"rollback.rollback_to.revision = 0\n",
285+
"rollback.name = \"nginx-deployment\""
286+
]
287+
},
288+
{
289+
"cell_type": "markdown",
290+
"metadata": {
291+
"deletable": true,
292+
"editable": true
293+
},
294+
"source": [
295+
"### Execute RollBack"
296+
]
297+
},
298+
{
299+
"cell_type": "code",
300+
"execution_count": null,
301+
"metadata": {
302+
"collapsed": false,
303+
"deletable": true,
304+
"editable": true
305+
},
306+
"outputs": [],
307+
"source": [
308+
"extension.create_namespaced_deployment_rollback_rollback(name=\"nginx-deployment\", namespace=\"default\", body=rollback)"
309+
]
310+
},
311+
{
312+
"cell_type": "markdown",
313+
"metadata": {
314+
"deletable": true,
315+
"editable": true
316+
},
317+
"source": [
318+
"### Delete Deployment"
319+
]
320+
},
321+
{
322+
"cell_type": "code",
323+
"execution_count": null,
324+
"metadata": {
325+
"collapsed": false,
326+
"deletable": true,
327+
"editable": true
328+
},
329+
"outputs": [],
330+
"source": [
331+
"extension.delete_namespaced_deployment(name=\"nginx-deployment\", namespace=\"default\", body=client.V1DeleteOptions(propagation_policy=\"Foreground\", grace_period_seconds=5))"
332+
]
333+
},
334+
{
335+
"cell_type": "code",
336+
"execution_count": null,
337+
"metadata": {
338+
"collapsed": true,
339+
"deletable": true,
340+
"editable": true
341+
},
342+
"outputs": [],
343+
"source": []
57344
}
58345
],
59346
"metadata": {
@@ -72,9 +359,9 @@
72359
"name": "python",
73360
"nbconvert_exporter": "python",
74361
"pygments_lexer": "ipython2",
75-
"version": "2.7.12"
362+
"version": "2.7.13"
76363
}
77364
},
78365
"nbformat": 4,
79-
"nbformat_minor": 1
366+
"nbformat_minor": 2
80367
}

0 commit comments

Comments
 (0)