Compare commits

...

4 Commits

Author SHA1 Message Date
0be01806dd fix middleware 2024-02-13 06:41:13 -07:00
639f7a4031 change to use ingress routes 2024-02-13 06:39:52 -07:00
ba3e6551e2 fix ingress class name 2024-02-13 06:15:56 -07:00
d12db5479a fix typo 2024-02-13 06:06:50 -07:00
7 changed files with 79 additions and 98 deletions

View File

@@ -1,6 +1,6 @@
apiVersion: v2
name: home-assistant
version: 0.0.1
version: 0.0.5
description: Chart for Home Assistant
keywords:
- home-automation

View File

@@ -10,6 +10,7 @@ This chart bootstraps a [Home-Assistant](https://github.com/benphelps/homepage)
- Kubernetes
- Helm
- Traefik v2 / IngressRoute
- Authentik / Auth
## Parameters

View File

@@ -0,0 +1,62 @@
{{- if .Values.ingressRoute.enabled }}
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: home-assistant
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: home-assistant
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: home-assistant
app.kubernetes.io/managed-by: helm
spec:
entryPoints:
- websecure
routes:
- kind: Rule
match: "Host(`{{ .Values.ingressRoute.host }}`)"
middlewares:
- name: authentik
namespace: {{ .Release.Namespace }}
priority: 10
services:
- kind: Service
name: home-assistant
port: {{ .Values.service.http.port }}
- kind: Rule
match: "Host(`{{ .Values.ingressRoute.host }}`) && PathPrefix(`/outpost.goauthentik.io/`)"
priority: 15
services:
- kind: Service
name: {{ .Values.ingressRoute.authentik.outpost }}
port: {{ .Values.ingressRoute.authentik.port }}
{{- end }}
---
{{- if and .Values.codeserver.ingressRoute.enabled .Values.codeserver.enabled }}
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: home-assistant-codeserver
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: home-assistant
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: home-assistant
app.kubernetes.io/managed-by: helm
spec:
entryPoints:
- websecure
routes:
- kind: Rule
match: "Host(`{{ .Values.codeserver.ingressRoute.host }}`)"
priority: 10
services:
- kind: Service
name: codeserver-http
port: {{ .Values.codeserver.service.http.port }}
{{- end }}

View File

@@ -1,82 +0,0 @@
{{- if .Values.ingress.enabled }}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: home-assistant
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: home-assistant
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
app.kubernetes.io/managed-by: helm
annotations:
cert-manager.io/cluster-issuer: letsencrypt-issuer
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true"
spec:
ingressClassName: "{{ .Values.ingress.host }}"
tls:
- hosts:
- "{{ .Values.ingress.host }}"
secretName: "{{ .Release.Name }}-secret-tls"
rules:
- host: "{{ .Values.ingress.host }}"
http:
paths:
- path: /outpost.goauthentik.io/
pathType: Prefix
backend:
service:
name: "{{ .Values.ingress.authentik.outpost }}"
port:
number: {{ .Values.ingress.authentik.port }}
- host: "{{ .Values.ingress.host }}"
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: http
port:
number: {{ .Values.service.http.port }}
{{- end }}
---
{{- if and .Values.codeserver.ingress.enabled Values.codeserver.enabled }}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: codeserver-home-assistant
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: codeserver
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
app.kubernetes.io/managed-by: helm
annotations:
cert-manager.io/cluster-issuer: letsencrypt-issuer
traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true"
spec:
ingressClassName: "{{ .Values.codeserver.ingress.host }}"
tls:
- hosts:
- "{{ .Values.codeserver.ingress.host }}"
secretName: "codeserver-{{ .Release.Name }}-secret-tls"
rules:
- host: "{{ .Values.codeserver.ingress.host }}"
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: codeserver-http
port:
number: {{ .Values.codeserver.service.http.port }}
{{- end }}

View File

@@ -1,4 +1,4 @@
{{- if .Values.ingress.enabled }}
{{- if .Values.ingressRoute.enabled }}
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
@@ -13,7 +13,7 @@ metadata:
app.kubernetes.io/managed-by: helm
spec:
forwardAuth:
address: "http://{{ .Values.ingress.authentik.outpost }}.authentik:{{ .Values.ingress.authentik.port }}/outpost.goauthentik.io/auth/traefik"
address: "http://{{ .Values.ingressRoute.authentik.outpost }}.authentik:{{ .Values.ingressRoute.authentik.port }}/outpost.goauthentik.io/auth/traefik"
trustForwardHeader: true
authResponseHeaders:
- X-authentik-username

View File

@@ -13,23 +13,23 @@ metadata:
spec:
type: ClusterIP
ports:
- port: {{ .Values.service.http.port }}
targetPort: http
protocol: TCP
name: http
- port: {{ .Values.service.http.port }}
targetPort: http
protocol: TCP
name: http
selector:
app.kubernetes.io/name: home-assistant
app.kubernetes.io/instance: {{ .Release.Name }}
---
{{- if Values.codeserver.enabled }}
{{- if .Values.codeserver.enabled }}
apiVersion: v1
kind: Service
metadata:
name: home-assistant-codeserver
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: code-server
app.kubernetes.io/name: home-assistant
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
@@ -38,11 +38,11 @@ metadata:
spec:
type: ClusterIP
ports:
- port: {{ .Values.codeserver.service.http.port }}
targetPort: codeserver-http
protocol: TCP
name: codeserver-http
- port: {{ .Values.codeserver.service.http.port }}
targetPort: codeserver-http
protocol: TCP
name: codeserver-http
selector:
app.kubernetes.io/name: codeserver
app.kubernetes.io/name: home-assistant
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}

View File

@@ -18,7 +18,7 @@ deployment:
service:
http:
port: 8123
ingress:
ingressRoute:
enabled: true
host: homeassistant.alexlebens.net
authentik:
@@ -69,6 +69,6 @@ codeserver:
service:
http:
port: 8443
ingress:
ingressRoute:
enabled: true
host: codeserver.homeassistant.alexlebens.net