2020-07-05 23:21:03 +00:00
< kubernetes-view-header title = "Application details" state = "kubernetes.applications.application" view-ready = "ctrl.state.viewReady" >
2021-04-27 08:12:34 +00:00
< a ui-sref = "kubernetes.resourcePools" > Namespaces< / a > >
2020-07-05 23:21:03 +00:00
< a ui-sref = "kubernetes.resourcePools.resourcePool({ id: ctrl.application.ResourcePool })" > {{ ctrl.application.ResourcePool }}< / a > >
< a ui-sref = "kubernetes.applications" > Applications< / a > > {{ ctrl.application.Name }}
< / kubernetes-view-header >
< kubernetes-view-loading view-ready = "ctrl.state.viewReady" > < / kubernetes-view-loading >
< div ng-if = "ctrl.state.viewReady" >
< div class = "row" >
< div class = "col-sm-12" >
< rd-widget >
< rd-widget-body classes = "no-padding" >
< uib-tabset active = "ctrl.state.activeTab" justified = "true" type = "pills" >
< uib-tab index = "0" classes = "btn-sm" select = "ctrl.selectTab(0)" >
< uib-tab-heading > < i class = "fa fa-laptop-code space-right" aria-hidden = "true" > < / i > Application < / uib-tab-heading >
2022-01-17 05:53:32 +00:00
< div style = "padding: 20px" >
2020-07-05 23:21:03 +00:00
< table class = "table" >
< tbody >
< tr >
< td > Name< / td >
2021-08-26 00:05:28 +00:00
< td data-cy = "k8sAppDetail-appName" >
2020-07-05 23:21:03 +00:00
{{ ctrl.application.Name }}
< span class = "label label-primary image-tag label-margins" ng-if = "!ctrl.isSystemNamespace() && ctrl.isExternalApplication()" > external< / span >
< / td >
< / tr >
< tr >
< td > Stack< / td >
2021-09-24 01:00:55 +00:00
< td data-cy = "k8sAppDetail-stackName" > {{ ctrl.application.StackName || '-' }}< / td >
2020-07-05 23:21:03 +00:00
< / tr >
< tr >
2021-04-27 08:12:34 +00:00
< td > Namespace< / td >
2021-08-26 00:05:28 +00:00
< td data-cy = "k8sAppDetail-resourcePoolName" >
2020-07-05 23:21:03 +00:00
< a ui-sref = "kubernetes.resourcePools.resourcePool({ id: ctrl.application.ResourcePool })" > {{ ctrl.application.ResourcePool }}< / a >
2022-01-17 05:53:32 +00:00
< span style = "margin-left: 5px" class = "label label-info image-tag" ng-if = "ctrl.isSystemNamespace()" > system< / span >
2020-07-05 23:21:03 +00:00
< / td >
< / tr >
< tr >
2020-07-16 22:00:15 +00:00
< td > Application Type< / td >
2021-09-24 01:00:55 +00:00
< td data-cy = "k8sAppDetail-appType" >
2020-07-16 22:00:15 +00:00
{{ ctrl.application.ApplicationType | kubernetesApplicationTypeText }}
< / td >
< / tr >
< tr >
< td > Status< / td >
2020-10-26 18:47:23 +00:00
< td ng-if = "ctrl.application.ApplicationType !== ctrl.KubernetesApplicationTypes.POD" >
2021-09-24 01:00:55 +00:00
< span ng-if = "ctrl.application.DeploymentType === ctrl.KubernetesApplicationDeploymentTypes.REPLICATED" data-cy = "k8sAppDetail-deployType" > Replicated< / span >
< span ng-if = "ctrl.application.DeploymentType === ctrl.KubernetesApplicationDeploymentTypes.GLOBAL" data-cy = "k8sAppDetail-appType" > Global< / span >
2021-08-26 00:05:28 +00:00
< code data-cy = "k8sAppDetail-runningPods" > {{ ctrl.application.RunningPodsCount }}< / code > /
< code data-cy = "k8sAppDetail-totalPods" > {{ ctrl.application.TotalPodsCount }}< / code >
2020-07-05 23:21:03 +00:00
< / td >
2020-10-26 18:47:23 +00:00
< td ng-if = "ctrl.application.ApplicationType === ctrl.KubernetesApplicationTypes.POD" >
{{ ctrl.application.Pods[0].Status }}
< / td >
2020-07-05 23:21:03 +00:00
< / tr >
< tr ng-if = "ctrl.application.Requests.Cpu || ctrl.application.Requests.Memory" >
< td >
< div > Resource reservations< / div >
2021-01-25 01:43:54 +00:00
< div ng-if = "ctrl.application.ApplicationType !== ctrl.KubernetesApplicationTypes.POD" class = "text-muted small" > per instance < / div >
2020-07-05 23:21:03 +00:00
< / td >
< td >
2021-09-24 01:00:55 +00:00
< div ng-if = "ctrl.application.Requests.Cpu" data-cy = "k8sAppDetail-cpuReservation"
>CPU {{ ctrl.application.Requests.Cpu | kubernetesApplicationCPUValue }}< /div
>
< div ng-if = "ctrl.application.Requests.Memory" data-cy = "k8sAppDetail-memoryReservation" > Memory {{ ctrl.application.Requests.Memory | humansize }}< / div >
2020-07-05 23:21:03 +00:00
< / td >
< / tr >
< tr >
< td > Creation< / td >
< td >
2022-01-17 05:53:32 +00:00
< span ng-if = "ctrl.application.ApplicationOwner" style = "margin-right: 5px" > < i class = "fas fa-user" > < / i > {{ ctrl.application.ApplicationOwner }} < / span >
2021-09-07 00:37:26 +00:00
< span > < i class = "fas fa-clock" > < / i > {{ ctrl.application.CreationDate | getisodate }}< / span >
< span ng-if = "ctrl.application.ApplicationOwner" >
< i class = "fa fa-file-code space-left space-right" aria-hidden = "true" > < / i > Deployed from {{ ctrl.state.appType }}< /span
>
2020-07-05 23:21:03 +00:00
< / td >
< / tr >
< tr >
< td colspan = "2" >
< form class = "form-horizontal" name = "kubernetesApplicationNoteForm" >
< div class = "form-group" >
< div class = "col-sm-12" >
< i class = "fa fa-edit" aria-hidden = "true" > < / i > Note
2021-09-24 01:00:55 +00:00
< button class = "btn btn-xs btn-primary" ng-click = "ctrl.state.expandedNote = !ctrl.state.expandedNote;" data-cy = "k8sAppDetail-expandNoteButton"
2020-07-05 23:21:03 +00:00
>{{ ctrl.state.expandedNote ? 'Collapse' : 'Expand' }}
< i class = "fas {{ ctrl.state.expandedNote ? 'fa-angle-up' : 'fa-angle-down' }}" aria-hidden = "true" > < /i
>< / button >
< / div >
< / div >
< div class = "form-group" ng-if = "ctrl.state.expandedNote" >
< div class = "col-sm-12" >
< textarea
class="form-control"
name="application_note"
id="application_note"
ng-model="ctrl.formValues.Note"
rows="5"
placeholder="Enter a note about this application..."
>< / textarea >
< / div >
< / div >
< div class = "form-group" ng-if = "ctrl.state.expandedNote" >
< div class = "col-sm-12" >
< button
class="btn btn-primary btn-sm"
2022-01-17 05:53:32 +00:00
style="margin-left: 0px"
2020-07-05 23:21:03 +00:00
type="button"
ng-click="ctrl.updateApplication()"
ng-disabled="ctrl.formValues.Note === ctrl.application.Note"
2021-09-24 01:00:55 +00:00
data-cy="k8sAppDetail-saveNoteButton"
2020-07-05 23:21:03 +00:00
>{{ ctrl.application.Note ? 'Update' : 'Save' }} note< /button
>
< / div >
< / div >
< / form >
< / td >
< / tr >
<!-- <tr>
< td colspan = "2" >
< form class = "form-horizontal" name = "KubernetesApplicationRollbackForm" >
< div class = "form-group" >
< label for = "resource-pool-selector" class = "col-sm-2 col-lg-1 control-label text-left" > Version< / label >
< div class = "col-sm-2" >
< select class = "form-control" id = "resource-pool-selector" ng-model = "ctrl.formValues.SelectedRevision"
ng-options="revision as revision.revision for revision in ctrl.application.Revisions">< / select >
< / div >
< div class = "col-sm-2" >
< button class = "btn btn-primary btn-sm" style = "margin-left: 0px;" type = "button" ng-click = "ctrl.rollbackApplication()"
ng-disabled="ctrl.formValues.SelectedRevision.revision === ctrl.application.CurrentRevision.revision">Rollback< / button >
< / div >
< / div >
< / form >
< / td >
< / tr > -->
< / tbody >
< / table >
< / div >
< / uib-tab >
< uib-tab index = "1" classes = "btn-sm" select = "ctrl.selectTab(1)" >
2021-01-20 00:02:18 +00:00
< uib-tab-heading >
< i class = "fas fa-compress-arrows-alt space-right" aria-hidden = "true" > < / i > Placement
< div ng-if = "ctrl.state.placementWarning" >
2022-01-17 05:53:32 +00:00
< i class = "fa fa-exclamation-circle orange-icon" aria-hidden = "true" style = "margin-right: 2px" > < / i >
2021-01-20 00:02:18 +00:00
warning
< / div >
< / uib-tab-heading >
2022-01-17 05:53:32 +00:00
< div class = "small text-muted" style = "padding: 20px" >
< i class = "fa fa-info-circle blue-icon" aria-hidden = "true" style = "margin-right: 2px" > < / i >
2020-07-29 22:25:59 +00:00
The placement component helps you understand whether or not this application can be deployed on a specific node.
< / div >
< kubernetes-application-placements-datatable
title-text="Placement constraints/preferences"
title-icon="fa-compress-arrows-alt"
dataset="ctrl.placements"
table-key="kubernetes.application.placements"
order-by="Name"
reverse-order="false"
loading="ctrl.state.dataLoading"
refresh-callback="ctrl.getApplication"
>< / kubernetes-application-placements-datatable >
< / uib-tab >
< uib-tab index = "2" classes = "btn-sm" select = "ctrl.selectTab(2)" >
2020-07-05 23:21:03 +00:00
< uib-tab-heading >
< i class = "fa fa-history space-right" aria-hidden = "true" > < / i > Events
< div ng-if = "ctrl.hasEventWarnings()" >
2022-01-17 05:53:32 +00:00
< i class = "fa fa-exclamation-circle orange-icon" aria-hidden = "true" style = "margin-right: 2px" > < / i >
2020-07-05 23:21:03 +00:00
{{ ctrl.state.eventWarningCount }} warning(s)
< / div >
< / uib-tab-heading >
< kubernetes-events-datatable
title-text="Events"
title-icon="fa-history"
dataset="ctrl.events"
table-key="kubernetes.application.events"
order-by="Date"
reverse-order="true"
loading="ctrl.state.eventsLoading"
refresh-callback="ctrl.getEvents"
>< / kubernetes-events-datatable >
< / uib-tab >
2020-07-29 22:25:59 +00:00
< uib-tab index = "3" ng-if = "ctrl.application.Yaml" select = "ctrl.showEditor()" classes = "btn-sm" >
2020-07-05 23:21:03 +00:00
< uib-tab-heading > < i class = "fa fa-code space-right" aria-hidden = "true" > < / i > YAML < / uib-tab-heading >
2022-01-17 05:53:32 +00:00
< div style = "padding-right: 25px" ng-if = "ctrl.state.showEditorTab" >
2020-07-05 23:21:03 +00:00
< kubernetes-yaml-inspector key = "application-yaml" data = "ctrl.application.Yaml" > < / kubernetes-yaml-inspector >
< / div >
< / uib-tab >
< / uib-tabset >
< / rd-widget-body >
< / rd-widget >
< / div >
< / div >
< div class = "row" >
< div class = "col-sm-12" >
< rd-widget >
< rd-widget-body >
2022-01-17 05:53:32 +00:00
< div ng-if = "!ctrl.isSystemNamespace()" style = "margin-bottom: 15px" >
2021-09-24 01:00:55 +00:00
< button
ng-if="!ctrl.isExternalApplication()"
type="button"
class="btn btn-sm btn-primary"
ui-sref="kubernetes.applications.application.edit"
2022-01-17 05:53:32 +00:00
style="margin-left: 0"
2021-09-24 01:00:55 +00:00
data-cy="k8sAppDetail-editAppButton"
>
2020-07-05 23:21:03 +00:00
< i class = "fa fa-file-code space-right" aria-hidden = "true" > < / i > Edit this application
< / button >
2022-01-16 19:37:46 +00:00
< button
authorization="K8sApplicationDetailsW"
ng-if="ctrl.isExternalApplication()"
type="button"
class="btn btn-sm btn-primary"
ui-sref="kubernetes.applications.application.edit"
2022-01-17 05:53:32 +00:00
style="margin-left: 0"
2022-01-16 19:37:46 +00:00
data-cy="k8sAppDetail-editAppButton"
>
< i class = "fa fa-file-code space-right" aria-hidden = "true" > < / i > Edit External application
< / button >
2021-02-25 11:12:17 +00:00
< button
ng-if="ctrl.application.ApplicationType !== ctrl.KubernetesApplicationTypes.POD"
type="button"
class="btn btn-sm btn-primary"
2022-01-17 05:53:32 +00:00
style="margin-left: 0"
2021-02-25 11:12:17 +00:00
ng-click="ctrl.redeployApplication()"
2021-09-24 01:00:55 +00:00
data-cy="k8sAppDetail-redeployButton"
2021-02-25 11:12:17 +00:00
>
2020-07-05 23:21:03 +00:00
< i class = "fa fa-redo space-right" aria-hidden = "true" > < / i > Redeploy
< / button >
2021-02-25 11:12:17 +00:00
< button
ng-if="!ctrl.isExternalApplication()"
type="button"
class="btn btn-sm btn-primary"
2022-01-17 05:53:32 +00:00
style="margin-left: 0"
2021-02-25 11:12:17 +00:00
ng-click="ctrl.rollbackApplication()"
2021-09-07 00:37:26 +00:00
ng-disabled="ctrl.application.Revisions.length < 2 | | ctrl . state . appType ! = = ctrl . KubernetesDeploymentTypes . APPLICATION_FORM "
2021-09-24 01:00:55 +00:00
data-cy="k8sAppDetail-rollbackButton"
2021-02-25 11:12:17 +00:00
>
2020-07-05 23:21:03 +00:00
< i class = "fas fa-history space-right" aria-hidden = "true" > < / i > Rollback to previous configuration
< / button >
2021-09-02 05:28:51 +00:00
< a
ng-if="ctrl.isStack() & & ctrl.stackFileContent"
class="btn btn-sm btn-primary space-left"
ui-sref="kubernetes.templates.custom.new({fileContent: ctrl.stackFileContent})"
>
< i class = "fas fa-plus space-right" aria-hidden = "true" > < / i > Create template from application
< / a >
2020-07-05 23:21:03 +00:00
< / div >
<!-- ACCESSING APPLICATION -->
2022-01-17 05:53:32 +00:00
< div class = "text-muted" style = "margin-bottom: 15px" > < i class = "fa fa-external-link-alt" aria-hidden = "true" style = "margin-right: 2px" > < / i > Accessing the application < / div >
2020-07-05 23:21:03 +00:00
2022-01-17 05:53:32 +00:00
< div class = "small text-muted" ng-if = "ctrl.application.PublishedPorts.length === 0" style = "margin-bottom: 15px" >
< i class = "fa fa-info-circle blue-icon" aria-hidden = "true" style = "margin-right: 2px" > < / i >
2020-07-05 23:21:03 +00:00
This application is not exposing any port.
< / div >
< div ng-if = "ctrl.application.PublishedPorts.length > 0" >
2022-01-16 19:37:46 +00:00
<!-- Services notice -->
< div >
2020-08-20 00:51:14 +00:00
< div class = "small text-muted" >
< p >
2022-01-17 05:53:32 +00:00
< i class = "fa fa-info-circle blue-icon" aria-hidden = "true" style = "margin-right: 2px" > < / i >
2022-01-16 19:37:46 +00:00
This application is exposed through service(s) as below:
2020-08-20 00:51:14 +00:00
< / p >
2020-07-05 23:21:03 +00:00
< / div >
2020-07-14 20:45:19 +00:00
< / div >
<!-- table -->
2022-01-16 19:37:46 +00:00
< kubernetes-application-services-table
services="ctrl.application.Services"
application="ctrl.application"
public-url="ctrl.state.publicUrl"
>< / kubernetes-application-services-table >
<!-- table -->
<!-- table -->
< kubernetes-application-ingress-table application = "ctrl.application" public-url = "ctrl.state.publicUrl" > < / kubernetes-application-ingress-table >
<!-- table -->
2020-07-05 23:21:03 +00:00
< / div >
<!-- !ACCESSING APPLICATION -->
<!-- AUTO SCALING -->
2022-01-17 05:53:32 +00:00
< div class = "text-muted" style = "margin-bottom: 15px" > < i class = "fa fa-expand-arrows-alt" aria-hidden = "true" style = "margin-right: 2px" > < / i > Auto-scaling< / div >
2020-07-05 23:21:03 +00:00
2022-01-17 05:53:32 +00:00
< div class = "small text-muted" ng-if = "!ctrl.application.AutoScaler" style = "margin-bottom: 15px" >
< i class = "fa fa-info-circle blue-icon" aria-hidden = "true" style = "margin-right: 2px" > < / i >
2020-07-05 23:21:03 +00:00
This application does not have an autoscaling policy defined.
< / div >
< div ng-if = "ctrl.application.AutoScaler" >
2022-01-17 05:53:32 +00:00
< div style = "margin-top: 15px; width: 50%" >
2020-07-05 23:21:03 +00:00
< table class = "table" >
< tbody >
< tr class = "text-muted" >
2022-01-17 05:53:32 +00:00
< td style = "width: 33%" > Minimum instances< / td >
< td style = "width: 33%" > Maximum instances< / td >
< td style = "width: 33%" >
2020-07-05 23:21:03 +00:00
Target CPU usage
2020-07-14 20:45:19 +00:00
< portainer-tooltip position = "bottom" message = "The autoscaler will ensure enough instances are running to maintain an average CPU usage across all instances." >
< / portainer-tooltip >
2020-07-05 23:21:03 +00:00
< / td >
< / tr >
< tr >
2021-09-24 01:00:55 +00:00
< td data-cy = "k8sAppDetail-minReplicas" > {{ ctrl.application.AutoScaler.MinReplicas }}< / td >
< td data-cy = "k8sAppDetail-maxReplicas" > {{ ctrl.application.AutoScaler.MaxReplicas }}< / td >
< td data-cy = "k8sAppDetail-targetCPU" > {{ ctrl.application.AutoScaler.TargetCPUUtilization }}%< / td >
2020-07-05 23:21:03 +00:00
< / tr >
< / tbody >
< / table >
< / div >
< / div >
<!-- !AUTO SCALING -->
<!-- CONFIGURATIONS -->
2022-01-17 05:53:32 +00:00
< div class = "text-muted" style = "margin-bottom: 15px; margin-top: 25px" > < i class = "fa fa-file-code" aria-hidden = "true" style = "margin-right: 2px" > < / i > Configuration < / div >
2020-07-05 23:21:03 +00:00
2022-01-17 05:53:32 +00:00
< div class = "small text-muted" ng-if = "!ctrl.application.Env.length > 0 && !ctrl.hasVolumeConfiguration()" style = "margin-bottom: 15px" >
< i class = "fa fa-info-circle blue-icon" aria-hidden = "true" style = "margin-right: 2px" > < / i >
2020-07-05 23:21:03 +00:00
This application is not using any environment variable or configuration.
< / div >
2020-08-13 23:27:10 +00:00
< table class = "table" ng-if = "ctrl.application.Env.length > 0" >
< tr class = "text-muted" >
2022-01-17 05:53:32 +00:00
< td style = "width: 25%" > Container< / td >
< td style = "width: 25%" > Environment variable< / td >
< td style = "width: 25%" > Value< / td >
< td style = "width: 25%" > Configuration< / td >
2020-08-13 23:27:10 +00:00
< / tr >
2022-01-17 05:53:32 +00:00
< tbody ng-repeat = "container in ctrl.application.Containers" style = "border-top: 0" >
2021-02-18 13:46:26 +00:00
< tr ng-repeat = "envvar in container.Env | orderBy: 'name'" >
2021-09-24 01:00:55 +00:00
< td data-cy = "k8sAppDetail-containerName" >
2020-08-13 23:27:10 +00:00
{{ container.Name }}
< span ng-if = "container.Type === ctrl.KubernetesPodContainerTypes.INIT"
>< i class = "fa fa-asterisk" aria-hidden = "true" > < / i > {{ envvar.valueFrom.fieldRef.fieldPath }} (< a
href="https://kubernetes.io/docs/concepts/workloads/pods/init-containers/"
target="_blank"
>init container< /a
>)< /span
>
< / td >
2021-09-24 01:00:55 +00:00
< td data-cy = "k8sAppDetail-envVarName" > {{ envvar.name }}< / td >
2020-08-13 23:27:10 +00:00
< td >
2021-09-24 01:00:55 +00:00
< span ng-if = "envvar.value" data-cy = "k8sAppDetail-envVarValue" > {{ envvar.value }}< / span >
< span ng-if = "envvar.valueFrom.configMapKeyRef" data-cy = "k8sAppDetail-envVarValue"
>< i class = "fa fa-key" aria-hidden = "true" > < / i > {{ envvar.valueFrom.configMapKeyRef.key }}< /span
>
< span ng-if = "envvar.valueFrom.secretKeyRef" data-cy = "k8sAppDetail-envVarValue"
>< i class = "fa fa-key" aria-hidden = "true" > < / i > {{ envvar.valueFrom.secretKeyRef.key }}< /span
>
< span ng-if = "envvar.valueFrom.fieldRef" data-cy = "k8sAppDetail-envVarValue"
2020-08-13 23:27:10 +00:00
>< i class = "fa fa-asterisk" aria-hidden = "true" > < / i > {{ envvar.valueFrom.fieldRef.fieldPath }} (< a
href="https://kubernetes.io/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/#capabilities-of-the-downward-api"
target="_blank"
>downward API< /a
>)< /span
>
< span ng-if = "!envvar.value && !envvar.valueFrom.secretKeyRef && !envvar.valueFrom.configMapKeyRef && !envvar.valueFrom.fieldRef" > -< / span >
< / td >
< td >
< span ng-if = "envvar.value || envvar.valueFrom.fieldRef || (!envvar.valueFrom.secretKeyRef && !envvar.valueFrom.configMapKeyRef)" > -< / span >
2021-09-24 01:00:55 +00:00
< span ng-if = "envvar.valueFrom.configMapKeyRef" data-cy = "k8sAppDetail-configName"
2020-08-13 23:27:10 +00:00
>< a ui-sref = "kubernetes.configurations.configuration({ name: envvar.valueFrom.configMapKeyRef.name, namespace: ctrl.application.ResourcePool })"
>< i class = "fa fa-file-code" aria-hidden = "true" > < / i > {{ envvar.valueFrom.configMapKeyRef.name }}< /a
>< /span
>
2021-09-24 01:00:55 +00:00
< span ng-if = "envvar.valueFrom.secretKeyRef" data-cy = "k8sAppDetail-configName"
2020-08-13 23:27:10 +00:00
>< a ui-sref = "kubernetes.configurations.configuration({ name: envvar.valueFrom.secretKeyRef.name, namespace: ctrl.application.ResourcePool })"
>< i class = "fa fa-file-code" aria-hidden = "true" > < / i > {{ envvar.valueFrom.secretKeyRef.name }}< /a
>< /span
>
< / td >
< / tr >
< / tbody >
< / table >
2020-07-05 23:21:03 +00:00
2020-08-13 23:27:10 +00:00
< table class = "table" ng-if = "ctrl.hasVolumeConfiguration()" >
< tr class = "text-muted" >
2022-01-17 05:53:32 +00:00
< td style = "width: 25%" > Container< / td >
< td style = "width: 25%" > Configuration path< / td >
< td style = "width: 25%" > Value< / td >
< td style = "width: 25%" > Configuration< / td >
2020-08-13 23:27:10 +00:00
< / tr >
2022-01-17 05:53:32 +00:00
< tbody ng-repeat = "container in ctrl.application.Containers" style = "border-top: 0" >
< tr ng-repeat = "volume in container.ConfigurationVolumes track by $index" style = "border-top: 0" >
2020-08-13 23:27:10 +00:00
< td >
{{ container.Name }}
< span ng-if = "container.Type === ctrl.KubernetesPodContainerTypes.INIT"
>< i class = "fa fa-asterisk" aria-hidden = "true" > < / i > {{ envvar.valueFrom.fieldRef.fieldPath }} (< a
href="https://kubernetes.io/docs/concepts/workloads/pods/init-containers/"
target="_blank"
>init container< /a
>)< /span
>
< / td >
< td >
{{ volume.fileMountPath }}
< / td >
< td > < i class = "fa fa-key" ng-if = "volume.configurationKey" aria-hidden = "true" > < / i > {{ volume.configurationKey ? volume.configurationKey : '-' }} < / td >
< td >
< a ui-sref = "kubernetes.configurations.configuration({ name: volume.configurationName, namespace: ctrl.application.ResourcePool })"
>< i class = "fa fa-file-code" aria-hidden = "true" > < / i > {{ volume.configurationName }}< /a
>
< / td >
< / tr >
< / tbody >
< / table >
2020-07-05 23:21:03 +00:00
<!-- !CONFIGURATIONS -->
<!-- DATA PERSISTENCE -->
2022-01-17 05:53:32 +00:00
< div class = "text-muted" style = "margin-bottom: 15px; margin-top: 25px" > < i class = "fa fa-database" aria-hidden = "true" style = "margin-right: 2px" > < / i > Data persistence < / div >
2020-07-05 23:21:03 +00:00
< div class = "small text-muted" ng-if = "!ctrl.hasPersistedFolders()" >
2022-01-17 05:53:32 +00:00
< i class = "fa fa-info-circle blue-icon" aria-hidden = "true" style = "margin-right: 2px" > < / i >
2020-07-05 23:21:03 +00:00
This application has no persisted folders.
< / div >
< div ng-if = "ctrl.hasPersistedFolders()" >
2022-01-17 05:53:32 +00:00
< div class = "small text-muted" style = "margin-bottom: 15px" >
2020-07-05 23:21:03 +00:00
Data access policy: < i class = "fa {{ ctrl.application.DataAccessPolicy | kubernetesApplicationDataAccessPolicyIcon }}" aria-hidden = "true" > < / i >
{{ ctrl.application.DataAccessPolicy | kubernetesApplicationDataAccessPolicyText }}
< portainer-tooltip position = "right" message = "{{ ctrl.application.DataAccessPolicy | kubernetesApplicationDataAccessPolicyTooltip }}" > < / portainer-tooltip >
< / div >
< table class = "table" ng-if = "ctrl.application.DataAccessPolicy === ctrl.ApplicationDataAccessPolicies.SHARED" >
2020-08-13 23:27:10 +00:00
< tr class = "text-muted" >
2022-01-17 05:53:32 +00:00
< td style = "width: 33%" > Persisted folder< / td >
< td style = "width: 66%" > Persistence< / td >
2020-08-13 23:27:10 +00:00
< / tr >
2022-01-17 05:53:32 +00:00
< tbody ng-repeat = "container in ctrl.application.Containers" style = "border-top: 0" >
2020-08-13 23:27:10 +00:00
< tr ng-repeat = "volume in container.PersistedFolders track by $index" >
2021-09-24 01:00:55 +00:00
< td data-cy = "k8sAppDetail-volMountPath" >
2020-07-05 23:21:03 +00:00
{{ volume.MountPath }}
< / td >
< td ng-if = "volume.PersistentVolumeClaimName" >
2021-09-24 01:00:55 +00:00
< a ui-sref = "kubernetes.volumes.volume({ name: volume.PersistentVolumeClaimName, namespace: ctrl.application.ResourcePool })" data-cy = "k8sAppDetail-volClaimName"
2020-07-05 23:21:03 +00:00
>< i class = "fa fa-database" aria-hidden = "true" > < / i > {{ volume.PersistentVolumeClaimName }}< /a
>
< / td >
< td ng-if = "volume.HostPath" > {{ volume.HostPath }} on host filesystem < / td >
< / tr >
< / tbody >
< / table >
< table class = "table" ng-if = "ctrl.application.DataAccessPolicy === ctrl.ApplicationDataAccessPolicies.ISOLATED" >
< thead >
< tr class = "text-muted" >
2022-01-17 05:53:32 +00:00
< td style = "width: 25%" > Container name< / td >
< td style = "width: 25%" > Pod name< / td >
< td style = "width: 25%" > Persisted folder< / td >
< td style = "width: 25%" > Persistence< / td >
2020-07-05 23:21:03 +00:00
< / tr >
< / thead >
2022-01-17 05:53:32 +00:00
< tbody ng-repeat = "container in ctrl.allContainers track by $index" style = "border-top: none" >
2020-08-13 23:27:10 +00:00
< tr ng-repeat = "volume in container.PersistedFolders track by $index" >
2020-07-05 23:21:03 +00:00
< td >
2020-08-13 23:27:10 +00:00
{{ container.Name }}
< span ng-if = "container.Type === ctrl.KubernetesPodContainerTypes.INIT"
>< i class = "fa fa-asterisk" aria-hidden = "true" > < / i > {{ envvar.valueFrom.fieldRef.fieldPath }} (< a
href="https://kubernetes.io/docs/concepts/workloads/pods/init-containers/"
target="_blank"
>init container< /a
>)< /span
>
2020-07-05 23:21:03 +00:00
< / td >
2020-08-13 23:27:10 +00:00
< td > {{ container.PodName }}< / td >
2020-07-05 23:21:03 +00:00
< td >
{{ volume.MountPath }}
< / td >
< td ng-if = "volume.PersistentVolumeClaimName" >
2020-08-13 23:27:10 +00:00
< a ui-sref = "kubernetes.volumes.volume({ name: volume.PersistentVolumeClaimName + '-' + container.PodName, namespace: ctrl.application.ResourcePool })" >
< i class = "fa fa-database" aria-hidden = "true" > < / i > {{ volume.PersistentVolumeClaimName + '-' + container.PodName }}< /a
2020-07-05 23:21:03 +00:00
>
< / td >
< td ng-if = "volume.HostPath" > {{ volume.HostPath }} on host filesystem < / td >
< / tr >
< / tbody >
< / table >
<!-- !DATA PERSISTENCE -->
< / div >
< / rd-widget-body >
< / rd-widget >
< / div >
< / div >
< div class = "row" >
< div class = "col-sm-12" >
2020-08-13 23:27:10 +00:00
< kubernetes-containers-datatable
title-text="Application containers"
title-icon="fa-server"
dataset="ctrl.allContainers"
table-key="kubernetes.application.containers"
2020-10-26 18:47:23 +00:00
is-pod="ctrl.application.ApplicationType === ctrl.KubernetesApplicationTypes.POD"
order-by="{{ ctrl.application.ApplicationType === ctrl.KubernetesApplicationTypes.POD ? 'Name' : 'PodName' }}"
2021-04-29 01:10:14 +00:00
use-server-metrics="ctrl.state.useServerMetrics"
2020-08-13 23:27:10 +00:00
>
< / kubernetes-containers-datatable >
2020-07-05 23:21:03 +00:00
< / div >
< / div >
< / div >