Skip to content

Commit 96488f1

Browse files
committed
Update create_deployment notebook
1 parent 5521d84 commit 96488f1

File tree

1 file changed

+285
-18
lines changed

1 file changed

+285
-18
lines changed
Lines changed: 285 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,220 @@
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
46+
},
47+
"outputs": [],
48+
"source": [
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"
61+
]
62+
},
63+
{
64+
"cell_type": "code",
65+
"execution_count": null,
66+
"metadata": {
67+
"collapsed": true,
68+
"deletable": true,
69+
"editable": true
70+
},
71+
"outputs": [],
72+
"source": [
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)"
84+
]
85+
},
86+
{
87+
"cell_type": "code",
88+
"execution_count": null,
89+
"metadata": {
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
19142
},
20143
"outputs": [],
21144
"source": [
22-
"client.Configuration().host=\"http://localhost:8080\""
145+
"spec.template = client.V1PodTemplateSpec()\n",
146+
"spec.template.metadata = client.V1ObjectMeta(labels={'app': 'nginx'})\n",
147+
"spec.template.spec = client.V1PodSpec()"
148+
]
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+
"source": [
217+
"### Update container image "
23218
]
24219
},
25220
{
@@ -30,7 +225,33 @@
30225
},
31226
"outputs": [],
32227
"source": [
33-
"extensions = client.ExtensionsV1beta1Api()"
228+
"deployment.spec.template.spec.containers[0].image = 'nginx:1.9.1'"
229+
]
230+
},
231+
{
232+
"cell_type": "markdown",
233+
"metadata": {},
234+
"source": [
235+
"### Apply update (RollingUpdate)"
236+
]
237+
},
238+
{
239+
"cell_type": "code",
240+
"execution_count": null,
241+
"metadata": {
242+
"collapsed": false
243+
},
244+
"outputs": [],
245+
"source": [
246+
"extension.replace_namespaced_deployment(name='nginx-deployment', namespace='default', body=deployment)"
247+
]
248+
},
249+
{
250+
"cell_type": "markdown",
251+
"metadata": {},
252+
"source": [
253+
"### Create DeploymentRollback object\n",
254+
"This object is used to rollback to a previous version of the deployment."
34255
]
35256
},
36257
{
@@ -41,19 +262,65 @@
41262
},
42263
"outputs": [],
43264
"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",
50-
"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)"
265+
"rollback = client.ExtensionsV1beta1DeploymentRollback()\n",
266+
"rollback.api_version = 'extensions/v1beta1'\n",
267+
"rollback.kind = 'DeploymentRollback'\n",
268+
"rollback.rollback_to = client.ExtensionsV1beta1RollbackConfig()\n",
269+
"rollback.rollback_to.revision = 0\n",
270+
"rollback.name = 'nginx-deployment'"
271+
]
272+
},
273+
{
274+
"cell_type": "markdown",
275+
"metadata": {},
276+
"source": [
277+
"### Execute RollBack"
56278
]
279+
},
280+
{
281+
"cell_type": "code",
282+
"execution_count": null,
283+
"metadata": {
284+
"collapsed": false
285+
},
286+
"outputs": [],
287+
"source": [
288+
"extension.create_namespaced_deployment_rollback_rollback(name='nginx-deployment', namespace='default', body=rollback)"
289+
]
290+
},
291+
{
292+
"cell_type": "markdown",
293+
"metadata": {
294+
"deletable": true,
295+
"editable": true
296+
},
297+
"source": [
298+
"### Delete Deployment"
299+
]
300+
},
301+
{
302+
"cell_type": "code",
303+
"execution_count": null,
304+
"metadata": {
305+
"collapsed": false,
306+
"deletable": true,
307+
"editable": true
308+
},
309+
"outputs": [],
310+
"source": [
311+
"extension.delete_namespaced_deployment(name='nginx-deployment', namespace='default', body=client.V1DeleteOptions(propagation_policy='Foreground', grace_period_seconds=5))"
312+
]
313+
},
314+
{
315+
"cell_type": "code",
316+
"execution_count": null,
317+
"metadata": {
318+
"collapsed": true,
319+
"deletable": true,
320+
"editable": true
321+
},
322+
"outputs": [],
323+
"source": []
57324
}
58325
],
59326
"metadata": {
@@ -72,9 +339,9 @@
72339
"name": "python",
73340
"nbconvert_exporter": "python",
74341
"pygments_lexer": "ipython2",
75-
"version": "2.7.12"
342+
"version": "2.7.6"
76343
}
77344
},
78345
"nbformat": 4,
79-
"nbformat_minor": 1
346+
"nbformat_minor": 2
80347
}

0 commit comments

Comments
 (0)