2022-01-17 05:53:32 +00:00
< div class = "col-sm-12 form-section-title" > Publishing the application < / div >
2022-09-23 04:11:35 +00:00
< div class = "col-sm-12 !p-0" >
< div class = "small" >
< p class = "text-muted vertical-center" >
< pr-icon icon = "'alert-circle'" mode = "'primary'" feather = "true" > < / pr-icon >
< span > Publish your application by creating a ClusterIP service for it, which you may then expose via < a target = "_blank" ui-sref = "kubernetes.ingresses" > an ingress< / a > .< / span >
< / p >
< / div >
< / div >
2022-01-16 19:37:46 +00:00
< div class = "form-group" >
< div class = "col-sm-12 form-inline" >
2022-01-17 05:53:32 +00:00
< div class = "col-sm-5" style = "padding-left: 0px" >
2022-03-22 01:54:17 +00:00
< select
class="form-control"
ng-model="$ctrl.state.selected"
ng-options="item.typeValue as item.typeName for item in $ctrl.state.serviceType"
data-cy="k8sAppCreate-publishingModeDropdown"
>< / select >
2022-08-12 18:22:45 +00:00
< button type = "button" class = "btn btn-md btn-default vertical-center !ml-0" ng-click = "$ctrl.addEntry( $ctrl.state.selected )" data-cy = "k8sAppCreate-createServiceButton" >
2022-09-23 04:11:35 +00:00
< span
class="interactive vertical-center"
tooltip-append-to-body="true"
tooltip-placement="top"
tooltip-class="portainer-tooltip"
uib-tooltip="Different service types expose the deployment in alternate ways.
ClusterIP exposes it within the cluster (for internal access only).
NodePort exposes it (on a high port) across all nodes.
LoadBalancer exposes it via an external load balancer."
>
< pr-icon icon = "'plus'" size = "'sm'" feather = "true" > < / pr-icon > Create service
< / span >
2022-01-16 19:37:46 +00:00
< / button >
< / div >
< / div >
< / div >
< div class = "form-group" >
2022-01-17 05:53:32 +00:00
< div class = "col-sm-12 form-inline" style = "margin-top: 20px" ng-repeat = "service in $ctrl.formValues.Services" >
2022-01-16 19:37:46 +00:00
< div ng-if = "!$ctrl.formValues.Services[$index].Ingress" >
2022-08-12 18:22:45 +00:00
< div class = "text-muted vertical-center" >
< pr-icon ng-if = "$ctrl.serviceType(service.Type) === 'ClusterIP'" icon = "'list'" feather = "true" > < / pr-icon >
< pr-icon ng-if = "$ctrl.serviceType(service.Type) === 'LoadBalancer'" icon = "'svg-dataflow'" > < / pr-icon >
< pr-icon ng-if = "$ctrl.serviceType(service.Type) === 'NodePort'" icon = "'list'" feather = "true" > < / pr-icon >
2022-01-16 19:37:46 +00:00
{{ $ctrl.serviceType(service.Type) }}
< / div >
< kube-services-item-view
service-routes="$ctrl.formValues.Services[$index].IngressRoute"
ingress-type="$ctrl.formValues.Services[$index].Ingress"
service-type="$ctrl.formValues.Services[$index].Type"
service-ports="$ctrl.formValues.Services[$index].Ports"
is-edit="$ctrl.isEdit"
loadbalancer-enabled="$ctrl.loadbalancerEnabled"
>< / kube-services-item-view >
< button
type="button"
2022-07-11 02:05:23 +00:00
class="btn btn-sm btn-dangerlight space-right vertical-center"
2022-01-17 05:53:32 +00:00
style="margin-left: 0; margin-top: 10px"
2022-01-16 19:37:46 +00:00
ng-click="$ctrl.deleteService( $index )"
data-cy="k8sConfigCreate-removeButton"
>
2022-07-11 02:05:23 +00:00
< pr-icon icon = "'trash-2'" size = "'md'" feather = "true" > < / pr-icon > Remove
2022-01-16 19:37:46 +00:00
< / button >
< / div >
< div ng-if = "$ctrl.formValues.Services[$index].Ingress && $ctrl.formValues.OriginalIngresses.length === 0" >
< div class = "text-muted" >
2022-08-12 18:22:45 +00:00
< pr-icon icon = "'svg-route'" class-name = "'mr-0.5'" > < / pr-icon >
2022-01-16 19:37:46 +00:00
Ingress
< / div >
2022-07-11 02:05:23 +00:00
< div ng-if = "$ctrl.isAdmin()" class = "small" >
2022-09-14 23:09:19 +00:00
< p class = "text-warning pt-2 vertical-center" >
2022-07-11 02:05:23 +00:00
< pr-icon icon = "'alert-triangle'" mode = "'warning'" feather = "true" > < / pr-icon > Ingress is not configured in this namespace, select another namespace or click
2022-07-22 02:14:31 +00:00
< a ui-sref = "kubernetes.cluster.setup" > here< / a > to configure ingress.
2022-01-16 19:37:46 +00:00
< / p >
< / div >
2022-07-11 02:05:23 +00:00
< div ng-if = "!$ctrl.isAdmin()" class = "small" >
2022-09-14 23:09:19 +00:00
< p class = "text-warning pt-2 vertical-center" >
2022-07-11 02:05:23 +00:00
< pr-icon icon = "'alert-triangle'" mode = "'warning'" feather = "true" > < / pr-icon > Ingress is not configured in this namespace, select another namespace or contact your
administrator.
2022-01-16 19:37:46 +00:00
< / p >
< / div >
< button
type="button"
2022-07-11 02:05:23 +00:00
class="btn btn-sm btn-dangerlight space-right vertical-center"
2022-01-17 05:53:32 +00:00
style="margin-left: 0; margin-top: 10px"
2022-01-16 19:37:46 +00:00
ng-click="$ctrl.deleteService( $index )"
data-cy="k8sConfigCreate-removeButton"
>
2022-07-11 02:05:23 +00:00
< pr-icon icon = "'trash-2'" size = "'md'" feather = "true" > < / pr-icon > Remove
2022-01-16 19:37:46 +00:00
< / button >
< / div >
< / div >
< / div >