ExternalService and Entrypoint-Disable Support (#256)

* Setup externalService processing and enhance Traefik

* Simplify Ingress

* Simplify External Services

* Adjust Service and Portal settings accordingly

* Fix some newly introduced bugs

* Adapt docs
This commit is contained in:
Kjeld Schouten-Lebbing
2021-03-12 16:56:04 +01:00
committed by kjeld Schouten-Lebbing
parent fcc43dbcdf
commit 1257de6408
93 changed files with 1688 additions and 2395 deletions
+160 -64
View File
@@ -70,20 +70,6 @@ We try to maintain as much of a standardised questions.yaml format as possible,
editable: false
type: string
default: ""
# - variable: servicePort
# label: "Service Port to proxy to"
# schema:
# hidden: true
# editable: false
# type: int
# default: 80
- variable: serviceKind
label: "Service Kind to proxy to"
schema:
hidden: true
editable: false
type: string
default: ""
- variable: entrypoint
label: "Select Entrypoint"
schema:
@@ -109,29 +95,13 @@ We try to maintain as much of a standardised questions.yaml format as possible,
required: true
schema:
type: string
- variable: paths
label: "paths"
- variable: path
label: "path"
schema:
type: list
default: []
items:
- variable: path
label: "Path"
schema:
type: dict
attrs:
- variable: path
label: "path"
schema:
type: string
required: true
default: "/"
- variable: pathType
label: "pathType"
schema:
type: string
required: true
default: "prefix"
type: string
required: true
hidden: true
default: "/"
- variable: certType
label: "Select Certificate Type"
schema:
@@ -189,20 +159,6 @@ We try to maintain as much of a standardised questions.yaml format as possible,
editable: false
type: string
default: ""
# - variable: servicePort
# label: "Service Port to proxy to"
# schema:
# hidden: true
# editable: false
# type: int
# default: 80
- variable: serviceKind
label: "Service Kind to proxy to"
schema:
hidden: true
editable: false
type: string
default: ""
- variable: entrypoint
label: "Select Entrypoint"
schema:
@@ -244,20 +200,6 @@ We try to maintain as much of a standardised questions.yaml format as possible,
editable: false
type: string
default: ""
# - variable: servicePort
# label: "Service Port to proxy to"
# schema:
# hidden: true
# editable: false
# type: int
# default: 80
- variable: serviceKind
label: "Service Kind to proxy to"
schema:
hidden: true
editable: false
type: string
default: ""
- variable: entrypoint
label: "Select Entrypoint"
schema:
@@ -268,3 +210,157 @@ We try to maintain as much of a standardised questions.yaml format as possible,
- value: "torrent-udp"
description: "Torrent-UDP: port 51413"
```
### Other Ingress options
There are a few other options that are rarely (if ever) used.
##### servicePort
```
- variable: servicePort
label: "Service Port to proxy to"
schema:
hidden: true
editable: false
type: int
default: 80
```
##### serviceKind
```
- variable: serviceKind
label: "Service Kind to proxy to"
schema:
hidden: true
editable: false
type: string
default: ""
```
### External Services
The externalServices option, is actually mostly an Ingress "under the hood" which just creates a very small (minimal) service.
```
- variable: externalServices
label: "(Advanced) Add External Services"
group: "Advanced"
schema:
type: list
default: []
items:
- variable: externalService
label: "External Service"
schema:
type: dict
attrs:
- variable: enabled
label: "Enable Web Reverse Proxy"
schema:
type: boolean
hidden: true
editable: false
default: true
- variable: type
label: "Reverse Proxy Type"
schema:
type: string
default: "HTTP"
hidden: true
editable: false
required: true
- variable: serviceName
label: "Service name to proxy to"
schema:
hidden: true
editable: false
type: string
default: ""
- variable: serviceTarget
label: "IP Adress of the external service"
schema:
hidden: false
editable: true
required: true
type: string
default: "192.168.0.0"
- variable: servicePort
label: "External Service Port"
description: "The port on the external service you want to proxy"
schema:
hidden: false
required: true
editable: true
type: int
default: 80
- variable: serviceType
label: "Connection Type"
description: "Connection Type between Traefik and the external service"
schema:
hidden: false
editable: true
required: true
default: "HTTP"
type: string
enum:
- value: "HTTP"
description: "HTTP"
- value: "HTTPS"
description: "HTTPS"
- variable: serviceKind
label: "Service Kind to proxy to"
schema:
hidden: true
editable: false
type: string
default: ""
- variable: entrypoint
label: "Select Entrypoint"
schema:
type: string
default: "websecure"
required: true
enum:
- value: "websecure"
description: "Websecure: HTTPS/TLS port 443"
- variable: host
label: "Domain Name"
required: true
schema:
type: string
- variable: path
label: "path"
schema:
type: string
required: true
hidden: false
default: "/"
- variable: certType
label: "Select Certificate Type"
schema:
type: string
default: "selfsigned"
enum:
- value: ""
description: "No Encryption/TLS/Certificates"
- value: "selfsigned"
description: "Self-Signed Certificate"
- value: "ixcert"
description: "TrueNAS SCALE Certificate"
- variable: certificate
label: "Select TrueNAS SCALE Certificate"
schema:
type: int
show_if: [["certType", "=", "ixcert"]]
$ref:
- "definitions/certificate"
- variable: authForwardURL
label: "Forward Authentication URL"
schema:
type: string
default: ""
```
+3 -11
View File
@@ -4,9 +4,9 @@ After installation almost every app should have a "portal" button. This button i
##### questions.yaml example
Every questions.yaml file should contain the following snippets to enable the portal button. Please be aware to change `"https"` to `"http"` if your application uses http instead of https when running using "NodePort".
Every questions.yaml file should contain the following snippets to enable the portal button. Please be aware to change `"http"` to `"https"` in services.main.port.protocol if your application uses http instead of https when running using "NodePort".
Also please be aware that the portal only(!) points towards the main service and main ingress.
Also please be aware that the portal only(!) points towards the main service, main service port and main ingress.
```
portals:
@@ -17,7 +17,7 @@ portals:
- "$kubernetes-resource_configmap_portal_host"
ports:
- "$kubernetes-resource_configmap_portal_port"
path: "/"
path: "/"
questions:
@@ -36,14 +36,6 @@ questions:
editable: false
type: boolean
default: true
- variable: nodePortProtocol
label: "Protocol when using NodePort"
description: "Enter the protocol to use when using nodeport"
schema:
hidden: true
editable: false
type: string
default: "https"
```
+6 -6
View File
@@ -64,13 +64,13 @@ Please keep in mind that every App is different, some just have one service (whi
label: "Port Type"
schema:
type: string
default: "TCP"
hidden: true
default: "HTTP"
hidden: false
enum:
- value: TCP
description: "TCP"
- value: "UDP"
description: "UDP"
- value: HTTP
description: "HTTP"
- value: "HTTPS"
description: "HTTPS"
- variable: port
label: "container port"
schema: