Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 5128cd8

Browse files
authored
Merge pull request kubernetes-client#301 from djkonro/secret
Add notebook on how to create and use a Secret
2 parents 01f6875 + 1cf9418 commit 5128cd8

File tree

1 file changed

+347
-0
lines changed

1 file changed

+347
-0
lines changed
Lines changed: 347 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,347 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "markdown",
5+
"metadata": {
6+
"deletable": true,
7+
"editable": true
8+
},
9+
"source": [
10+
"How to create and use a Secret\n",
11+
"================\n",
12+
"\n",
13+
"A [Secret](https://kubernetes.io/docs/concepts/configuration/secret/) is an object that contains a small amount of sensitive data such as a password, a token, or a key. In this notebook, we would learn how to create a Secret and how to use Secrets as files from a Pod as seen in https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets"
14+
]
15+
},
16+
{
17+
"cell_type": "code",
18+
"execution_count": null,
19+
"metadata": {
20+
"collapsed": true,
21+
"deletable": true,
22+
"editable": true
23+
},
24+
"outputs": [],
25+
"source": [
26+
"from kubernetes import client, config"
27+
]
28+
},
29+
{
30+
"cell_type": "markdown",
31+
"metadata": {
32+
"deletable": true,
33+
"editable": true
34+
},
35+
"source": [
36+
"### Load config from default location"
37+
]
38+
},
39+
{
40+
"cell_type": "code",
41+
"execution_count": null,
42+
"metadata": {
43+
"collapsed": true,
44+
"deletable": true,
45+
"editable": true
46+
},
47+
"outputs": [],
48+
"source": [
49+
"config.load_kube_config()\n",
50+
"client.configuration.assert_hostname = False"
51+
]
52+
},
53+
{
54+
"cell_type": "markdown",
55+
"metadata": {
56+
"deletable": true,
57+
"editable": true
58+
},
59+
"source": [
60+
"### Create API endpoint instance and API resource instances"
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+
"api_instance = client.CoreV1Api()\n",
74+
"sec = client.V1Secret()"
75+
]
76+
},
77+
{
78+
"cell_type": "markdown",
79+
"metadata": {
80+
"deletable": true,
81+
"editable": true
82+
},
83+
"source": [
84+
"### Fill required Secret fields"
85+
]
86+
},
87+
{
88+
"cell_type": "code",
89+
"execution_count": null,
90+
"metadata": {
91+
"collapsed": true,
92+
"deletable": true,
93+
"editable": true
94+
},
95+
"outputs": [],
96+
"source": [
97+
"sec.metadata = client.V1ObjectMeta(name=\"mysecret\")\n",
98+
"sec.type = \"Opaque\"\n",
99+
"sec.data = {\"username\": \"bXl1c2VybmFtZQ==\", \"password\": \"bXlwYXNzd29yZA==\"}"
100+
]
101+
},
102+
{
103+
"cell_type": "markdown",
104+
"metadata": {
105+
"deletable": true,
106+
"editable": true
107+
},
108+
"source": [
109+
"### Create Secret"
110+
]
111+
},
112+
{
113+
"cell_type": "code",
114+
"execution_count": null,
115+
"metadata": {
116+
"collapsed": false,
117+
"deletable": true,
118+
"editable": true
119+
},
120+
"outputs": [],
121+
"source": [
122+
"api_instance.create_namespaced_secret(namespace=\"default\", body=sec)"
123+
]
124+
},
125+
{
126+
"cell_type": "markdown",
127+
"metadata": {
128+
"deletable": true,
129+
"editable": true
130+
},
131+
"source": [
132+
"### Create test Pod API resource instances"
133+
]
134+
},
135+
{
136+
"cell_type": "code",
137+
"execution_count": null,
138+
"metadata": {
139+
"collapsed": true,
140+
"deletable": true,
141+
"editable": true
142+
},
143+
"outputs": [],
144+
"source": [
145+
"pod = client.V1Pod()\n",
146+
"spec = client.V1PodSpec()\n",
147+
"pod.metadata = client.V1ObjectMeta(name=\"mypod\")\n",
148+
"container = client.V1Container()\n",
149+
"container.name = \"mypod\"\n",
150+
"container.image = \"redis\""
151+
]
152+
},
153+
{
154+
"cell_type": "markdown",
155+
"metadata": {
156+
"deletable": true,
157+
"editable": true
158+
},
159+
"source": [
160+
"### Add volumeMount which would be used to hold secret"
161+
]
162+
},
163+
{
164+
"cell_type": "code",
165+
"execution_count": null,
166+
"metadata": {
167+
"collapsed": true,
168+
"deletable": true,
169+
"editable": true
170+
},
171+
"outputs": [],
172+
"source": [
173+
"volume_mounts = [client.V1VolumeMount()]\n",
174+
"volume_mounts[0].mount_path = \"/data/redis\"\n",
175+
"volume_mounts[0].name = \"foo\"\n",
176+
"container.volume_mounts = volume_mounts"
177+
]
178+
},
179+
{
180+
"cell_type": "markdown",
181+
"metadata": {
182+
"deletable": true,
183+
"editable": true
184+
},
185+
"source": [
186+
"### Create volume required by secret"
187+
]
188+
},
189+
{
190+
"cell_type": "code",
191+
"execution_count": null,
192+
"metadata": {
193+
"collapsed": true,
194+
"deletable": true,
195+
"editable": true
196+
},
197+
"outputs": [],
198+
"source": [
199+
"spec.volumes = [client.V1Volume(name=\"foo\")]\n",
200+
"spec.volumes[0].secret = client.V1SecretVolumeSource(secret_name=\"mysecret\")"
201+
]
202+
},
203+
{
204+
"cell_type": "code",
205+
"execution_count": null,
206+
"metadata": {
207+
"collapsed": true,
208+
"deletable": true,
209+
"editable": true
210+
},
211+
"outputs": [],
212+
"source": [
213+
"spec.containers = [container]\n",
214+
"pod.spec = spec"
215+
]
216+
},
217+
{
218+
"cell_type": "markdown",
219+
"metadata": {
220+
"deletable": true,
221+
"editable": true
222+
},
223+
"source": [
224+
"### Create the Pod"
225+
]
226+
},
227+
{
228+
"cell_type": "code",
229+
"execution_count": null,
230+
"metadata": {
231+
"collapsed": false,
232+
"deletable": true,
233+
"editable": true
234+
},
235+
"outputs": [],
236+
"source": [
237+
"api_instance.create_namespaced_pod(namespace=\"default\",body=pod)"
238+
]
239+
},
240+
{
241+
"cell_type": "markdown",
242+
"metadata": {
243+
"deletable": true,
244+
"editable": true
245+
},
246+
"source": [
247+
"### View secret being used within the pod\n",
248+
"\n",
249+
"Wait for alteast 10 seconds to ensure pod is running before executing this section."
250+
]
251+
},
252+
{
253+
"cell_type": "code",
254+
"execution_count": null,
255+
"metadata": {
256+
"collapsed": false,
257+
"deletable": true,
258+
"editable": true
259+
},
260+
"outputs": [],
261+
"source": [
262+
"user = api_instance.connect_get_namespaced_pod_exec(name=\"mypod\", namespace=\"default\", command=[ \"/bin/sh\", \"-c\", \"cat /data/redis/username\" ], stderr=True, stdin=False, stdout=True, tty=False)\n",
263+
"print(user)\n",
264+
"passwd = api_instance.connect_get_namespaced_pod_exec(name=\"mypod\", namespace=\"default\", command=[ \"/bin/sh\", \"-c\", \"cat /data/redis/password\" ], stderr=True, stdin=False, stdout=True, tty=False)\n",
265+
"print(passwd)"
266+
]
267+
},
268+
{
269+
"cell_type": "markdown",
270+
"metadata": {
271+
"deletable": true,
272+
"editable": true
273+
},
274+
"source": [
275+
"### Delete Pod"
276+
]
277+
},
278+
{
279+
"cell_type": "code",
280+
"execution_count": null,
281+
"metadata": {
282+
"collapsed": false,
283+
"deletable": true,
284+
"editable": true
285+
},
286+
"outputs": [],
287+
"source": [
288+
"api_instance.delete_namespaced_pod(name=\"mypod\", namespace=\"default\", body=client.V1DeleteOptions())"
289+
]
290+
},
291+
{
292+
"cell_type": "markdown",
293+
"metadata": {
294+
"deletable": true,
295+
"editable": true
296+
},
297+
"source": [
298+
"### Delete Secret"
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+
"api_instance.delete_namespaced_secret(name=\"mysecret\", namespace=\"default\", body=sec)"
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": []
324+
}
325+
],
326+
"metadata": {
327+
"kernelspec": {
328+
"display_name": "Python 2",
329+
"language": "python",
330+
"name": "python2"
331+
},
332+
"language_info": {
333+
"codemirror_mode": {
334+
"name": "ipython",
335+
"version": 2
336+
},
337+
"file_extension": ".py",
338+
"mimetype": "text/x-python",
339+
"name": "python",
340+
"nbconvert_exporter": "python",
341+
"pygments_lexer": "ipython2",
342+
"version": "2.7.6"
343+
}
344+
},
345+
"nbformat": 4,
346+
"nbformat_minor": 2
347+
}

0 commit comments

Comments
 (0)