parent
36ed1022e3
commit
9a072cddde
@ -0,0 +1,143 @@
|
|||||||
|
# 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
|
||||||
|
|
||||||
|
```sh
|
||||||
|
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`.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
mode: default
|
||||||
|
```
|
||||||
|
|
||||||
|
## Widgets
|
||||||
|
|
||||||
|
The Kubernetes widget can show a high-level overview of the cluster,
|
||||||
|
individual nodes, or both.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- 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:
|
||||||
|
|
||||||
|
```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.
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- 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:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
- 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](https://longhorn.io).
|
||||||
|
Configure it from the `widgets.yaml`.
|
||||||
|
|
||||||
|
```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
|
||||||
|
```
|
Loading…
Reference in new issue