Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -22,28 +22,40 @@ <h3 class="header-title">创建 Ingress 模版</h3>
<div class="form-group form-group-padding" >
<label class="col-md-4 form-group-label-override required">域名</label>
<label aria-haspopup="true" role="tooltip" class="tooltip tooltip-validation tooltip-md tooltip-bottom-left">
<input type="text" style="width: 217px"
<input type="text"
[ngModelOptions]="{standalone: true}"
[(ngModel)]="kubeResource.spec.rules[i].host">
</label>
</div>
<div class="form-group form-group-padding" >
<label class="col-md-3 form-group-label-override required">负载均衡名称</label>
<label aria-haspopup="true" role="tooltip" class="tooltip tooltip-validation tooltip-md tooltip-bottom-left">
<input type="text" style="width: 217px" [ngModelOptions]="{standalone: true}" [(ngModel)]="kubeResource.spec.rules[i].http.paths[0].backend.serviceName">
</label>
</div>
<div class="form-group form-group-padding" >
<label class="col-md-3 form-group-label-override required">负载均衡端口</label>
<label aria-haspopup="true" role="tooltip" class="tooltip tooltip-validation tooltip-md tooltip-bottom-left">
<input type="number" style="width: 217px" [ngModelOptions]="{standalone: true}" [(ngModel)]="kubeResource.spec.rules[i].http.paths[0].backend.servicePort">
</label>
<div *ngFor="let rule of kubeResource.spec.rules; let i = index">
<div *ngFor="let path of kubeResource.spec.rules[i].http.paths; let j = index">
<div class="form-group form-group-padding" >
<label class="col-md-3 form-group-label-override required">负载均衡名称</label>
<input type="text" class="col-md-2" [ngModelOptions]="{standalone: true}" [(ngModel)]="kubeResource.spec.rules[i].http.paths[j].backend.serviceName">
<label class="col-md-2 form-group-label-override required">端口</label>
<input type="number" class="col-md-1" [ngModelOptions]="{standalone: true}" [(ngModel)]="kubeResource.spec.rules[i].http.paths[j].backend.servicePort">
<label class="col-md-2 form-group-label-override required">路由</label>
<input type="text" class="col-md-2" [ngModelOptions]="{standalone: true}" [(ngModel)]="kubeResource.spec.rules[i].http.paths[j].path">
<a href="javascript:void(0)" *ngIf="kubeResource.spec.rules[i].http.paths.length > 1"><clr-icon (click)="onDeletePath(i, j)" shape="trash" title="删除路由" class="is-solid clr-icon"></clr-icon></a>
<a href="javascript:void(0)" *ngIf="j === kubeResource.spec.rules[i].http.paths.length - 1"><clr-icon (click)="onAddPath(i)" shape="plus-circle" title="添加路由" class="is-solid clr-icon"></clr-icon></a>
</div>
</div>
</div>
</div>
</div>
</section>
<section class="form-block wrap" style="overflow:hidden">
<div style="float: left;width: 60%">
<label class="label-level1">TLS 配置</label>
<button class="btn btn-sm btn-link" (click)="onAddTLS()" href="javascript:void(0)" *ngIf="kubeResource.spec.tls.length === 0"><clr-icon shape="add"></clr-icon>添加</button>
<div *ngFor="let tls of kubeResource.spec.tls; let i = index">
<div class="form-group form-group-padding" >
<label class="col-md-3 form-group-label-override required">请求路由</label>
<label aria-haspopup="true" role="tooltip" class="tooltip tooltip-validation tooltip-md tooltip-bottom-left">
<input type="text" style="width: 217px" [ngModelOptions]="{standalone: true}" [(ngModel)]="kubeResource.spec.rules[i].http.paths[0].path">
</label>
<label class="col-md-2 form-group-label-override">主机</label>
<input class="col-md-3" type="text" [ngModelOptions]="{standalone: true}" [(ngModel)]="kubeResource.spec.tls[i].hosts[0]">
<label class="col-md-2 form-group-label-override">秘密名字</label>
<input class="col-md-3" type="text" [ngModelOptions]="{standalone: true}" [(ngModel)]="kubeResource.spec.tls[i].secretName">
<a href="javascript:void(0)" *ngIf="kubeResource.spec.tls.length > 0"><clr-icon (click)="onDeleteTLS(i)" shape="trash" title="删除 TLS" class="is-solid clr-icon"></clr-icon></a>
<a href="javascript:void(0)" *ngIf=" i === kubeResource.spec.tls.length - 1"><clr-icon (click)="onAddTLS()" shape="plus-circle" title="添加 TLS" class="is-solid clr-icon"></clr-icon></a>
</div>
</div>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import { IngressService } from '../../../shared/client/v1/ingress.service';
import { IngressTplService } from '../../../shared/client/v1/ingresstpl.service';
import { AuthService } from '../../../shared/auth/auth.service';
import { CreateEditResourceTemplate } from '../../../shared/base/resource/create-edit-resource-template';
import { KubeIngress, IngressRule, IngressPath } from '../../../shared/model/v1/kubernetes/ingress';


@Component({
Expand Down Expand Up @@ -79,7 +80,7 @@ export class CreateEditIngressTplComponent extends CreateEditResourceTemplate im
if (tpl) {
this.template = tpl.data;
this.template.description = null;
this.saveResourceTemplate();
this.saveResourceTemplate(JSON.parse(this.template.template));
}
},
error => {
Expand Down Expand Up @@ -147,5 +148,18 @@ export class CreateEditIngressTplComponent extends CreateEditResourceTemplate im
}
);
}

onAddPath(idx: number) {
this.kubeResource.spec.rules[idx].http.paths.push({ backend: { serviceName: '', servicePort: 80}, path: '/'});
}
onDeletePath(i: number, j: number) {
this.kubeResource.spec.rules[i].http.paths.splice(j, 1);
}
onAddTLS() {
this.kubeResource.spec.tls.push({hosts: [''], secretName: ''});
}
onDeleteTLS(i: number) {
this.kubeResource.spec.tls.splice(i, 1);
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
.form-group-label-override {
font-size: 14px;
font-weight: 400;
}

.access-level-label {
font-size: 14px;
font-weight: 400;
margin-left: -4px;
margin-right: 12px;
top: -6px;
position: relative;
}

.label-level1 {
font-size: 20px;
color: #1e58ab
}

.label-level2 {
font-size: 16px;
color: #007cbb;
}

.form-group-padding {
margin-top: 10px;
padding-left: 110px;
}

.clr-icon {
margin-left: 20px;
}

body {
font-size: 11px;
font-family: 'Open Sans', sans-serif;
color: #4A4A4A;
text-align: center;
}

.wrap {
background: #fff;
margin: 0;
display: block;
width: 95%;
}

p {
margin-top: 15px;
text-align: justify;
}

input:read-only, input:disabled {
border-bottom: 1px dashed #696161;
background-color: #dcdada;
}
21 changes: 8 additions & 13 deletions src/frontend/src/app/portal/ingress/status/status.component.html
Original file line number Diff line number Diff line change
Expand Up @@ -15,29 +15,24 @@ <h3 class="modal-title">Ingress 详情</h3>
<div *ngFor="let rule of kubeResource?.spec.rules">
<div class="row group">
<div class="col-sm-3">
代理域名
域名
</div>
<div class="col-sm-9">
{{rule.host}}
</div>
</div>
<div class="row group">
<div *ngFor="let path of rule.http.paths" class="row group">
<div class="col-sm-3">
代理负载均衡
代理
</div>
<div class="col-sm-9">
{{rule.http.paths[0].backend.serviceName}}
<div class="col-sm-6">
{{path.backend.serviceName}}:{{path.backend.servicePort}}
</div>
</div>
<div class="row group">
<div class="col-sm-3">
负载均衡端口
</div>
<div class="col-sm-9">
{{rule.http.paths[0].backend.servicePort}}
</div>
<div class="col-sm-3">
{{path.path}}
</div>
</div>
</div>
</section>
</form>
</div>
Expand Down
6 changes: 6 additions & 0 deletions src/frontend/src/app/shared/default-models/ingress.const.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,12 @@ export const defaultIngress = `{
},
"spec": {
"tls": [
{
"hosts": [
""
],
"secretName": ""
}
],
"rules": [
{
Expand Down