k8s module:wip

This commit is contained in:
olevole
2021-02-09 23:52:49 +03:00
parent aef78b7125
commit acde4b0595
7 changed files with 97 additions and 7 deletions

View File

@@ -2070,6 +2070,20 @@ class ClonOS {
return $arr;
}
function ccmd_getFreeCname(){
$arr=array();
$add_cmd=' default_jailname=kube';
$res=$this->cbsd_cmd("freejname".$add_cmd);
if($res['error']){
$arr['error']=true;
$arr['error_message']=$err['error_message'];
}else{
$arr['error']=false;
$arr['freejname']=$res['message'];
}
return $arr;
}
function ccmd_k8sCreate()
{
$form=$this->form;
@@ -2116,7 +2130,9 @@ class ClonOS {
if($form['kubelet_master']=='on') $res['kubelet_master']="1";
}
$url='http://144.76.225.238/api/v1/create/move';
$cname=$form['cname'];
$url='http://144.76.225.238/api/v1/create/'.$cname;
$result=$this->postCurl($url,$res);
return $result;

17
public/curl2.php Normal file
View File

@@ -0,0 +1,17 @@
<?php
$ch = curl_init( 'http://144.76.225.238/api/v1/create/move' );
# Setup request to send json via POST.
$payload = json_encode( array( "email"=>"root@my.domain", "init_masters"=>"1" ) );
curl_setopt( $ch, CURLOPT_POSTFIELDS, $payload );
curl_setopt( $ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
# Return response instead of printing.
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
# Send request.
$result = curl_exec($ch);
curl_close($ch);
# Print response.
echo "<pre>$result</pre>";

View File

@@ -10,6 +10,10 @@ err_messages.add({
<h2><?php echo $this->translate('create master node and workers');?></h2>
<form class="win" method="post" id="k8sNewSettings" onsubmit="return false;">
<div class="window-content">
<p>
<span class="field-name"><?php echo $this->translate('Cluster name');?>:</span>
<input type="text" name="cname" value="" pattern="[^0-9]{1}[a-zA-Z0-9]{2,}" required="required" class="edit-disable" />
</p>
<p>
<span class="field-name"><?php echo $this->translate('Master Nodes count');?>:</span>
<span class="range">
@@ -42,8 +46,8 @@ err_messages.add({
<p>
<span class="field-name"><?php echo $this->translate('Worker Nodes count');?>:</span>
<span class="range">
<input type="range" name="worker_nodes" class="vHorizon" min="1" max="8" value="1" style="margin:6px 0;" id="rngWNodes" oninput="rngWNodesShow.value=rngWNodes.value">
<input type="text" disabled="disabled" id="rngWNodesShow" value="1" name="worker_nodes_count">
<input type="range" name="worker_nodes" class="vHorizon" min="0" max="8" value="0" style="margin:6px 0;" id="rngWNodes" oninput="rngWNodesShow.value=rngWNodes.value">
<input type="text" disabled="disabled" id="rngWNodesShow" value="0" name="worker_nodes_count">
</span>
</p>
<p>

View File

@@ -227,6 +227,11 @@ var clonos={
if(typeof this.vm_packages_obtain_min_id!='undefined')
$('#bhyveObtSettings select[name="vm_packages"]').val(this.vm_packages_obtain_min_id).change();
}
if(id=='k8s-new')
{
this.getFreeCname(); // Берём с сервера свободное имя kubernetes
//this.trids=this.getTrIdsForCheck('jailslist');
}
this.dialogShow1(id);
}
},
@@ -858,6 +863,15 @@ var clonos={
$('dialog#jail-settings input[name="jname"]').val(data.freejname);
$('dialog#jail-settings input[name="host_hostname"]').val(data.freejname+'.my.domain');
},
getFreeCname:function()
{
this.loadData('getFreeCname',$.proxy(this.onGetFreeCname,this));
},
onGetFreeCname:function(data)
{
$('dialog#k8s-new input[name="cname"]').val(data.freejname);
//$('dialog#jail-settings input[name="host_hostname"]').val(data.freecname+'.my.domain');
},
onUsersAdd:function(data)
{
@@ -1835,6 +1849,11 @@ var clonos={
this.imageRemove(trid);
return;
}
if(tblid=='k8slist')
{
this.ks8Remove(trid);
return;
}
alert(tblid);
return;break;
case 'icon-arrows-cw':
@@ -2163,9 +2182,36 @@ var clonos={
$('div.main').removeClass('asplit');
},
onK8sCreate:function(data)
onK8sCreate:function(tdata)
{
alert(JSON.stringify(data));
var data=JSON.parse(tdata);
this.dialogClose();
if(typeof data!='undefined')
{
if(typeof data['Message']!='undefined')
{
this.notify(data.Message,'success');
}
}
},
ks8Remove:function(id)
{
var c=confirm(this.translate('You want to delete kubernetes «'+id+'»! Are you sure?'));
if(!c) return;
var posts=[{'name':'k8sname','value':id}];
this.loadData('k8sRemove',$.proxy(this.onKs8Remove,this),posts,false);
},
onKs8Remove:function(tdata)
{
var data=JSON.parse(tdata);
if(typeof data!='undefined')
{
if(typeof data['Message']!='undefined')
{
this.notify(data.Message,'success');
}
}
},

View File

@@ -1,5 +1,5 @@
<tbody>
<tr class="#nth-num##desktop##maintenance#" id="#name#">
<tr class="#nth-num#<!--#maintenance#-->" id="#name#">
<td class="txtleft">#name#</td>
<td class="txtleft wordwreck node">#cluster#</td>
<td class="txtcenter">#masters#</td>
@@ -8,6 +8,6 @@
<td class="ops"><span class="icon-cnt"><span class="icon-#icon#"></span></span></td>
<td class="op-settings"><span class="icon-cog"></span></td>
<td class="op-reboot" title="#reboot_title#"><span class="icon-arrows-cw"></span></td>
<td class="op-del"#protitle#><span class="#protected#"></span></td>
<td class="op-del"#protitle#><span class="icon-cancel"></span></td>
</tr>
</tbody>

View File

@@ -11,6 +11,12 @@ $clonos->useDialogs(array(
'k8s-new',
));
/*
Модуль kubernetes использует в работе преднастроенный образ Linux, который не входит в базовую установку ClonOS.
Если вы хотите использовать модуль k8s, нажмите кнопку 'инициализация' для скачивания и подготовки образа k8s к работе.
Подразумевается, что система имеет доступ в Internet. Объем образа который будет загружен приблизительно 4 GB.
*/
?>
<h1>K8S кластеры:</h1>
<p><span class="top-button icon-plus id:k8s-new">Создать Kubernetes</span></p>

1
public/test.k8s Normal file
View File

@@ -0,0 +1 @@
{"master_nodes":"1","master_ram":"1","master_cpus":"1","master_img":"10","worker_nodes":"1","worker_ram":"1","worker_cpus":"1","worker_img":"10","pv_enable":0,"kubelet_master":0}