mirror of
https://github.com/karl0ss/homepage.git
synced 2025-04-29 12:03:41 +01:00
Enhancement: support instanceName
filtering for kubernetes deployment (#2488)
--------- Co-authored-by: shamoon <4887959+shamoon@users.noreply.github.com>
This commit is contained in:
parent
30e4a2ae3a
commit
eea20defb1
@ -79,6 +79,7 @@ metadata:
|
|||||||
gethomepage.dev/widget.url: "https://emby.example.com"
|
gethomepage.dev/widget.url: "https://emby.example.com"
|
||||||
gethomepage.dev/pod-selector: ""
|
gethomepage.dev/pod-selector: ""
|
||||||
gethomepage.dev/weight: 10 # optional
|
gethomepage.dev/weight: 10 # optional
|
||||||
|
gethomepage.dev/instance: "public" # optional
|
||||||
spec:
|
spec:
|
||||||
rules:
|
rules:
|
||||||
- host: emby.example.com
|
- host: emby.example.com
|
||||||
@ -95,6 +96,8 @@ spec:
|
|||||||
|
|
||||||
When the Kubernetes cluster connection has been properly configured, this service will be automatically discovered and added to your Homepage. **You do not need to specify the `namespace` or `app` values, as they will be automatically inferred.**
|
When the Kubernetes cluster connection has been properly configured, this service will be automatically discovered and added to your Homepage. **You do not need to specify the `namespace` or `app` values, as they will be automatically inferred.**
|
||||||
|
|
||||||
|
If you are using multiple instances of homepage, an `instance` annotation can be specified to limit services to a specific instance. If no instance is provided, the service will be visible on all instances.
|
||||||
|
|
||||||
### Traefik IngressRoute support
|
### Traefik IngressRoute support
|
||||||
|
|
||||||
Homepage can also read ingresses defined using the Traefik IngressRoute custom resource definition. Due to the complex nature of Traefik routing rules, it is required for the `gethomepage.dev/href` annotation to be set:
|
Homepage can also read ingresses defined using the Traefik IngressRoute custom resource definition. Due to the complex nature of Traefik routing rules, it is required for the `gethomepage.dev/href` annotation to be set:
|
||||||
@ -116,6 +119,7 @@ metadata:
|
|||||||
gethomepage.dev/widget.url: "https://emby.example.com"
|
gethomepage.dev/widget.url: "https://emby.example.com"
|
||||||
gethomepage.dev/pod-selector: ""
|
gethomepage.dev/pod-selector: ""
|
||||||
gethomepage.dev/weight: 10 # optional
|
gethomepage.dev/weight: 10 # optional
|
||||||
|
gethomepage.dev/instance: "public" # optional
|
||||||
spec:
|
spec:
|
||||||
entryPoints:
|
entryPoints:
|
||||||
- websecure
|
- websecure
|
||||||
|
@ -169,6 +169,7 @@ export async function checkCRD(kc, name) {
|
|||||||
export async function servicesFromKubernetes() {
|
export async function servicesFromKubernetes() {
|
||||||
const ANNOTATION_BASE = "gethomepage.dev";
|
const ANNOTATION_BASE = "gethomepage.dev";
|
||||||
const ANNOTATION_WIDGET_BASE = `${ANNOTATION_BASE}/widget.`;
|
const ANNOTATION_WIDGET_BASE = `${ANNOTATION_BASE}/widget.`;
|
||||||
|
const { instanceName } = getSettings();
|
||||||
|
|
||||||
checkAndCopyConfig("kubernetes.yaml");
|
checkAndCopyConfig("kubernetes.yaml");
|
||||||
|
|
||||||
@ -238,7 +239,10 @@ export async function servicesFromKubernetes() {
|
|||||||
const services = ingressList.items
|
const services = ingressList.items
|
||||||
.filter(
|
.filter(
|
||||||
(ingress) =>
|
(ingress) =>
|
||||||
ingress.metadata.annotations && ingress.metadata.annotations[`${ANNOTATION_BASE}/enabled`] === "true",
|
ingress.metadata.annotations &&
|
||||||
|
ingress.metadata.annotations[`${ANNOTATION_BASE}/enabled`] === "true" &&
|
||||||
|
(!ingress.metadata.annotations[`${ANNOTATION_BASE}/instance`] ||
|
||||||
|
ingress.metadata.annotations[`${ANNOTATION_BASE}/instance`] === instanceName),
|
||||||
)
|
)
|
||||||
.map((ingress) => {
|
.map((ingress) => {
|
||||||
let constructedService = {
|
let constructedService = {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user