Kubernetes Integration with Python-CGI

Ambrunimurali
2 min readJun 30, 2021

This time create webUI page as such that using normal English conversation your all commands can run in background.
Example — when we write ‘run deployment using httpd image’ then it run complete deployment command in backend.

Feature necessary -
👉 It can launch pods with specific name given by user.
👉 Run deployment using image and name given by user.
👉 Expose services on given user input port number.
👉 Scale the replica according to user need.
👉 Delete complete environment created.
👉 Delete specific resources given by user.
👉 Extra features related to k8s ( Optional)

code:

<!DOCTYPE html>
<meta charset=”utf-8">
<meta name=”viewport” content=”width=device-width, initial-scale=1">
<link rel=”stylesheet” href=”https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"><html>
<head>
<title>kubernetes</title>
<style>
body {
background-color: #8ebf42;
}
form {
width: 400px;
margin: auto;
margin-top: 250px;
}
input {
padding: 4px 10px;
border: 0;
font-size: 16px;
}
.search {
width: 75%;
}
.submit {
width: 70px;
background-color: #1c87c9;
color: #ffffff;
}
</style>
</head>
<body>

<form action=”/form/submit” method=”GET”>
<input type=”text” name=”text” class=”search” placeholder=”Search here!”>
<input type=”submit” name=”submit” class=”submit” value=”Search”>

</form>

<h5>deployment . apps/test scaled</h5>

<div> <h4>To launch deployment-> launch (name) with (image)<br>
Creating a pod->run(name) with (image)<br>
Expose a deployment-> expose(name)with(port number)and(hype)<br>
Delete everything-> “delete everything”<br>
Delete a pod-> delete pod(name)<br>
Delete deployment->delete deployment(name)<br>
</h4>
</div>

<div> <h4>ENTER YOUR COMMAND</h4>
</div>

<script>

function client() {
var i=document.getElementById(“in1”).value
var xhr=new XMLHttpRequest();
xhr.open(“GET”,”http://192.168.100.0/cgi-bin/python2.py?x="+i,true)
xhr.send()
xhr.onload=function()
{
var output=xhr.responseText;
document.getElementById(“d1”).innerHTML=output;
}
}

</script>

</body>
</html>

SERVER SIDE:

import cgi
import subprocess

print(“content-type: text/html”)
print()

f = cgi.FieldStorage()
t = f.getvalue(“x”)
valuee = t.split()
if valuee[0]== “launch”:
cmd=”kubectl create deployement “+valuee[1]+ “ — image=”+valuee[3]
if valuee[0]== “run”:
cmd=”kubectl run “+valuee[1]+ “ — image=”+valuee[3]
elif valuee[0]== “expose”:
cmd=”kubectl expose deployment “+valuee[1]+ “ — port=”+valuee[3]+” — type”+valuee[3]
elif valuee[0]== “scale”:
cmd=”kubectl scale deployment “+valuee[1]+ “ — replicas=”+valuee[3]
elif valuee[0]== “delete”:
if valuee[1]==”everything”:
cmd=”kubectl delete all — all”
elif valuee[1]==”pod”:
cmd=”kubectl delete pod “+valuee[2]
elif valuee[1]==”deployment”:
cmd=”kubectl delete deployment “+valuee[2]
elif valuee[0]== “tell”:
if valuee[4]==”pods” or valuee[4]==”pod” :
cmd=”kubectl get pods”
elif valuee[4]==”deployments” or words[4]==”deployment”:
cmd=”kubectl get deployments”
elif valuee[4]==”services” or valuee[4]==”service”:
cmd=”kubectl get svc “
else:
cmd=”echo ENTER AGAIN”

o=subprocess.getoutput(“sudo “+cmd+” — kubeconfig /root/k8s/admin.conf”)
print(o)

--

--