3.4 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	Kubernetes Support
Requirements
- Kubernetes 1.19+
- Metrics service
- An Ingress controller
Deployment
Use the unofficial helm chart: https://github.com/jameswynn/helm-charts/tree/main/charts/homepage
helm repo add jameswynn https://jameswynn.github.io/helm-charts
helm install my-release jameswynn/homepage
Configuration
Set the mode in the kubernetes.yaml to cluster.
mode: default
Widgets
The Kubernetes widget can show a high-level overview of the cluster, individual nodes, or both.
- kubernetes:
    cluster:
      # Shows the cluster node
      show: true
      # Shows the aggregate CPU stats
      cpu: true
      # Shows the aggregate memory stats
      memory: true
      # Shows a custom label
      showLabel: true
      label: "cluster"
    nodes:
      # Shows the clusters
      show: true
      # Shows the CPU for each node
      cpu: true
      # Shows the memory for each node
      memory: true
      # Shows the label, which is always the node name
      showLabel: true
Service Discovery
Sample yaml:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: homepage
  annotations:
    gethomepage.dev/enabled: "true"
    gethomepage.dev/description: Dynamically Detected Homepage
    gethomepage.dev/group: Operations
    gethomepage.dev/icon: homepage.png
    gethomepage.dev/name: Homepage
spec:
  rules:
    - host: homepage.example.com
      http:
        paths:
          - backend:
              service:
                name: homepage
                port:
                  number: 3000
            path: /
            pathType: Prefix
Service Widgets
To manually configure a Service Widget the namespace and app fields must
be configured on the service entry.
- Home Automation
    - Home-Assistant:
        icon: home-assistant.png
        href: https://home.example.com
        description: Home Automation
        app: home-assistant
        namespace: home
This works by creating a label selector app.kubernetes.io/name=home-assistant,
which typically will be the same both for the ingress and the deployment. However,
some deployments can be complex and will not conform to this rule. In such
cases the podSelector variable can bridge the gap. Any field selector can
be used in it which allows for some powerful selection capabilities.
For instance, it can be utilized to roll multiple underlying deployments under one application to see a high-level aggregate:
- Comms
    - Element Chat:
        icon: matrix-light.png
        href: https://chat.example.com
        description: Matrix Synapse Powered Chat
        app: matrix-element
        namespace: comms
        podSelector: >-
            app.kubernetes.io/instance in (
                matrix-element,
                matrix-media-repo,
                matrix-media-repo-postgresql,
                matrix-synapse
            )
Longhorn Widget
There is a widget for showing storage stats from Longhorn.
Configure it from the widgets.yaml.
- longhorn:
    # Show the expanded
    expanded: true
    # Shows a node representing the aggregate values
    total: true
    # Shows the node names as labels
    labels: true
    # Show the nodes
    nodes: true
    # An explicit list of nodes to show. All are shown by default if "nodes" is true
    include:
      - node1
      - node2
Testing
Refer to the k3d readme.