{% extends "ui/base.html" %} {% from "ui/partial/form.html" import render_form %} {% block page_header %} Cluster {{ cluster.name }} detail {% endblock %} {% block content %}
Download kubeconfig
State: {{ cluster.state }}
{% if cluster.state == 'Deploying' %} {% set initial_progress = 1 %} {% else %} {% set initial_progress = 100 %} {% endif %}
{% if cluster.state == 'Deploying' %}{{ initial_progress }}%{% else %}Done{% endif %}
0
Namespaces
{% if 'nodes' in status %} {% set nodecount = status.nodes|length %} {% else %} {% set nodecount = 0 %} {% endif %}
0
Nodes
{% if 'deployments' in status %} {% set deploymentcount = status.deployments|length %} {% else %} {% set deploymentcount = 0 %} {% endif %}
0
Deployments
{% if 'pods' in status %} {% set podcount = status.pods|length %} {% else %} {% set podcount = 0 %} {% endif %}
0
Pods
{% if 'services' in status %} {% set servicecount = status.services|length %} {% else %} {% set servicecount = 0 %} {% endif %}
0
Services
{# STATUS TAB #}
{% if 'nodes' in status %}

Nodes

{% for node in status.nodes %} {% set maxpods = node['status']['allocatable']['pods']|int %} {% set pods = status.nodes_pods.get(node['metadata']['name'])|int %} {% set percentage = (pods/maxpods*100)|int %} {% endfor %}
Name IP OS Status Size Pods
{{ node['metadata']['name'] }}
    {% for a in node['status']['addresses'] %} {% if a['type'] not in ['LegacyHostIP', 'InternalDNS', 'ExternalDNS', 'Hostname'] %}
  • {{ a['type'] }}: {{ a['address'] }}
  • {% endif %} {% endfor %}
{{ node['status']['node_info']['os_image'] }}
{{ node['status']['node_info']['kernel_version'] }}
{% for s in node['status']['conditions'] %} {% if s['type'] != 'Ready' %} {% if s['status'] == 'False' %} {% set icon = 'ok' %} {% else %} {% set icon = 'remove' %} {% endif %} {% endif %} {% endfor %} {{ node['status']['allocatable']['cpu'] }} / {{ '%.02f GB' % (node['status']['allocatable']['memory'].replace('Ki', '')|int/1000000) }}
{{ pods }}/{{ maxpods }}
{% endif %} {% if 'deployments' in status %}

Deployments

{% for deployment in status.deployments %} {% endfor %}
Name Namespace Replicas Containers
{{ deployment['metadata']['name'] }} {{ deployment['metadata']['namespace'] }} {% set ready = deployment.get('status', {}).get('ready_replicas', 'N')|int %} {% set desired = deployment.get('spec', {}).get('replicas', 'N')|int %} {% if desired > 0 %} {% set percentage = (ready/desired*100)|int %} {% else %} {% set percentage = 0|int %} {% endif %}
{{ ready }}/{{ desired }}
{% set containers = deployment.get('spec', {}).get('template', {}).get('spec', {}).get('containers') %}
    {% for container in containers %}
  • {{ container['name'] }} {{ container['image'] }}
  • {% endfor %}
{% endif %} {% if 'services' in status %}

Services

{% for service in status.services %} {% endfor %}
Name Namespace Cluster IP Ports External IP
{{ service['metadata']['name'] }} {{ service['metadata']['namespace'] }} {{ service['spec']['cluster_ip'] }}
    {% set ports = service['spec']['ports'] %} {% if ports %} {% for port in ports %}
  • {{ port['port'] }}/{{ port['protocol'] }} {{ port.get('name', '') }}
  • {% endfor %} {% endif %}
{% if service.get('status', {}).get('load_balancer', {}).get('ingress') %} {% for endpoint in service['status']['load_balancer'].get('ingress', []) %} {% if endpoint.get('hostname') %} {% for port in service['spec']['ports'] %} {{ endpoint['hostname']|truncate(20, True) }}:{{ port['port'] }} {{ port['name']|upper }} {% endfor %} {% endif %} {% endfor %} {% endif %}
{% endif %}
{# TOPOLOGY TAB #}

Topology Layout

Topology Resources

Pods
Services
Nodes

Deploys
Namespaces
{#

Topology Overview

#}

Resource Detail

None selected
{# ADDONS TAB #}
All {% for tag in [] %} {{ tag|capitalize }} {% endfor %}
{% for addon in status.addons %}
{{ addon.name }}
{% endfor %}
{{ render_form(form) }}
{% endblock %} {% block extrajs %} {% if cluster.state == 'Deploying' %} {% endif %} {% endblock %}