Skip to content

Commit 2fac3c7

Browse files
authored
Merge pull request #250 from djkonro/create_service
Add notebook on how to create a Service
2 parents 9ba5378 + 0a4af95 commit 2fac3c7

File tree

1 file changed

+230
-0
lines changed

1 file changed

+230
-0
lines changed
Lines changed: 230 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,230 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "markdown",
5+
"metadata": {
6+
"deletable": true,
7+
"editable": true
8+
},
9+
"source": [
10+
"How to create a Service\n",
11+
"=============\n",
12+
"\n",
13+
"In this notebook, we show you how to create a [Service](https://kubernetes.io/docs/concepts/services-networking/service/). \n",
14+
"A service is a key Kubernetes API resource. It defines a networking abstraction to route traffic to a particular set of Pods using a label selection."
15+
]
16+
},
17+
{
18+
"cell_type": "code",
19+
"execution_count": null,
20+
"metadata": {
21+
"collapsed": true,
22+
"deletable": true,
23+
"editable": true
24+
},
25+
"outputs": [],
26+
"source": [
27+
"from kubernetes import client, config"
28+
]
29+
},
30+
{
31+
"cell_type": "markdown",
32+
"metadata": {
33+
"deletable": true,
34+
"editable": true
35+
},
36+
"source": [
37+
"### Load config from default location"
38+
]
39+
},
40+
{
41+
"cell_type": "code",
42+
"execution_count": null,
43+
"metadata": {
44+
"collapsed": true,
45+
"deletable": true,
46+
"editable": true
47+
},
48+
"outputs": [],
49+
"source": [
50+
"config.load_kube_config()"
51+
]
52+
},
53+
{
54+
"cell_type": "markdown",
55+
"metadata": {
56+
"deletable": true,
57+
"editable": true
58+
},
59+
"source": [
60+
"### Create API endpoint instance"
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()"
74+
]
75+
},
76+
{
77+
"cell_type": "markdown",
78+
"metadata": {
79+
"deletable": true,
80+
"editable": true
81+
},
82+
"source": [
83+
"### Create API resource instances"
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+
"service = client.V1Service()"
97+
]
98+
},
99+
{
100+
"cell_type": "markdown",
101+
"metadata": {
102+
"deletable": true,
103+
"editable": true
104+
},
105+
"source": [
106+
"### Fill required Service fields (apiVersion, kind, and metadata)"
107+
]
108+
},
109+
{
110+
"cell_type": "code",
111+
"execution_count": null,
112+
"metadata": {
113+
"collapsed": true,
114+
"deletable": true,
115+
"editable": true
116+
},
117+
"outputs": [],
118+
"source": [
119+
"service.api_version = \"v1\"\n",
120+
"service.kind = \"Service\"\n",
121+
"service.metadata = client.V1ObjectMeta(name=\"my-service\")"
122+
]
123+
},
124+
{
125+
"cell_type": "markdown",
126+
"metadata": {
127+
"deletable": true,
128+
"editable": true
129+
},
130+
"source": [
131+
"### Provide Service .spec description\n",
132+
"Set Service object named **my-service** to target TCP port **9376** on any Pod with the **'app'='MyApp'** label. The label selection allows Kubernetes to determine which Pod should receive traffic when the service is used."
133+
]
134+
},
135+
{
136+
"cell_type": "code",
137+
"execution_count": null,
138+
"metadata": {
139+
"collapsed": false,
140+
"deletable": true,
141+
"editable": true
142+
},
143+
"outputs": [],
144+
"source": [
145+
"spec = client.V1ServiceSpec()\n",
146+
"spec.selector = {\"app\": \"MyApp\"}\n",
147+
"spec.ports = [client.V1ServicePort(protocol=\"TCP\", port=80, target_port=9376)]\n",
148+
"service.spec = spec"
149+
]
150+
},
151+
{
152+
"cell_type": "markdown",
153+
"metadata": {
154+
"deletable": true,
155+
"editable": true
156+
},
157+
"source": [
158+
"### Create Service"
159+
]
160+
},
161+
{
162+
"cell_type": "code",
163+
"execution_count": null,
164+
"metadata": {
165+
"collapsed": false,
166+
"deletable": true,
167+
"editable": true
168+
},
169+
"outputs": [],
170+
"source": [
171+
"api_instance.create_namespaced_service(namespace=\"default\", body=service)"
172+
]
173+
},
174+
{
175+
"cell_type": "markdown",
176+
"metadata": {
177+
"deletable": true,
178+
"editable": true
179+
},
180+
"source": [
181+
"### Delete Service"
182+
]
183+
},
184+
{
185+
"cell_type": "code",
186+
"execution_count": null,
187+
"metadata": {
188+
"collapsed": false,
189+
"deletable": true,
190+
"editable": true
191+
},
192+
"outputs": [],
193+
"source": [
194+
"api_instance.delete_namespaced_service(name=\"my-service\", namespace=\"default\")"
195+
]
196+
},
197+
{
198+
"cell_type": "code",
199+
"execution_count": null,
200+
"metadata": {
201+
"collapsed": true,
202+
"deletable": true,
203+
"editable": true
204+
},
205+
"outputs": [],
206+
"source": []
207+
}
208+
],
209+
"metadata": {
210+
"kernelspec": {
211+
"display_name": "Python 2",
212+
"language": "python",
213+
"name": "python2"
214+
},
215+
"language_info": {
216+
"codemirror_mode": {
217+
"name": "ipython",
218+
"version": 2
219+
},
220+
"file_extension": ".py",
221+
"mimetype": "text/x-python",
222+
"name": "python",
223+
"nbconvert_exporter": "python",
224+
"pygments_lexer": "ipython2",
225+
"version": "2.7.13"
226+
}
227+
},
228+
"nbformat": 4,
229+
"nbformat_minor": 2
230+
}

0 commit comments

Comments
 (0)