From 6b895050b08b17dcef9caadde4284fec5c40d488 Mon Sep 17 00:00:00 2001 From: Kjeld Schouten-Lebbing Date: Mon, 23 Aug 2021 22:24:58 +0200 Subject: [PATCH] Add initial work on external-service App (#791) * Add initial work on external-service support * remove targetport setting from external-service and allow setting the port * add external service icon --- charts/incubator/external-service/.helmignore | 24 ++ charts/incubator/external-service/CONFIG.md | 0 charts/incubator/external-service/Chart.yaml | 26 ++ charts/incubator/external-service/README.md | 0 .../external-service/SCALE/item.yaml | 3 + .../external-service/SCALE/ix_values.yaml | 15 ++ .../external-service/SCALE/questions.yaml | 234 ++++++++++++++++++ .../incubator/external-service/app-readme.md | 0 .../external-service/templates/common.yaml | 1 + charts/incubator/external-service/values.yaml | 15 ++ docs/_static/img/external-service-icon.png | Bin 0 -> 6769 bytes 11 files changed, 318 insertions(+) create mode 100644 charts/incubator/external-service/.helmignore create mode 100644 charts/incubator/external-service/CONFIG.md create mode 100644 charts/incubator/external-service/Chart.yaml create mode 100644 charts/incubator/external-service/README.md create mode 100644 charts/incubator/external-service/SCALE/item.yaml create mode 100644 charts/incubator/external-service/SCALE/ix_values.yaml create mode 100644 charts/incubator/external-service/SCALE/questions.yaml create mode 100644 charts/incubator/external-service/app-readme.md create mode 100644 charts/incubator/external-service/templates/common.yaml create mode 100644 charts/incubator/external-service/values.yaml create mode 100644 docs/_static/img/external-service-icon.png diff --git a/charts/incubator/external-service/.helmignore b/charts/incubator/external-service/.helmignore new file mode 100644 index 00000000000..e559de0a012 --- /dev/null +++ b/charts/incubator/external-service/.helmignore @@ -0,0 +1,24 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ +# OWNERS file for Kubernetes +OWNERS diff --git a/charts/incubator/external-service/CONFIG.md b/charts/incubator/external-service/CONFIG.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/charts/incubator/external-service/Chart.yaml b/charts/incubator/external-service/Chart.yaml new file mode 100644 index 00000000000..d00dd7eb506 --- /dev/null +++ b/charts/incubator/external-service/Chart.yaml @@ -0,0 +1,26 @@ +apiVersion: v2 +appVersion: auto +dependencies: +- name: common + repository: https://truecharts.org/ + version: 6.8.4 +deprecated: false +description: Allow external services to be used like Apps. +home: https://github.com/truecharts/apps/tree/master/charts/stable/external-service +icon: https://truecharts.org/_static/img/external-service-icon.png +keywords: +- external-service +- reverse-proxy +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: truecharts.org +- email: kjeld@schouten-lebbing.nl + name: Ornias1993 + url: truecharts.org +name: external-service +sources: +- https://github.com/truecharts/apps/tree/master/charts/stable/external-service +type: application +version: 0.0.1 diff --git a/charts/incubator/external-service/README.md b/charts/incubator/external-service/README.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/charts/incubator/external-service/SCALE/item.yaml b/charts/incubator/external-service/SCALE/item.yaml new file mode 100644 index 00000000000..da5c829081e --- /dev/null +++ b/charts/incubator/external-service/SCALE/item.yaml @@ -0,0 +1,3 @@ +categories: + - networking +icon_url: https://truecharts.org/_static/img/external-service-icon.png diff --git a/charts/incubator/external-service/SCALE/ix_values.yaml b/charts/incubator/external-service/SCALE/ix_values.yaml new file mode 100644 index 00000000000..64d5a513ed3 --- /dev/null +++ b/charts/incubator/external-service/SCALE/ix_values.yaml @@ -0,0 +1,15 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +# Disable Deployment +controller: + enabled: false + + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/charts/incubator/external-service/SCALE/questions.yaml b/charts/incubator/external-service/SCALE/questions.yaml new file mode 100644 index 00000000000..2a6e8098138 --- /dev/null +++ b/charts/incubator/external-service/SCALE/questions.yaml @@ -0,0 +1,234 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Controller" + description: "Configure workload deployment" + - name: "Container Configuration" + description: "additional container configuration" + - name: "App Configuration" + description: "App specific config options" + - name: "Networking and Services" + description: "Configure Network and Services for container" + - name: "Storage and Persistence" + description: "Persist and share data that is separate from the container" + - name: "Ingress" + description: "Ingress Configuration" + - name: "Security and Permissions" + description: "Configure security context and permissions" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Advanced" + description: "Advanced Configuration" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service Type" + description: "ExternalIP gets connected to using an IP and port, ExternalName gets connected to using a domain name" + schema: + type: string + default: "ExternalIP" + enum: + - value: "ExternalName" + description: "ExternalName" + - value: "ExternalIP" + description: "ExternalIP" + - variable: externalIP + label: "External Service Domainname" + description: "Domainname of External service" + schema: + show_if: [["type", "=", "ExternalName"]] + type: string + default: "1.1.1.1" + - variable: externalIP + label: "External Service IP" + description: "IP of External service" + schema: + show_if: [["type", "=", "ExternalIP"]] + type: string + default: "1.1.1.1" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + type: dict + attrs: + - variable: main + label: "Main Service Port Configuration" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: port + label: "Container Port" + schema: + type: int + default: 80 + editable: false + hidden: false + + - variable: ingress + label: "" + group: "Ingress" + schema: + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "HostName" + schema: + type: string + default: "" + required: true + - variable: paths + label: "Paths" + schema: + type: list + default: [] + items: + - variable: pathEntry + label: "Host" + 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" + - variable: tls + label: "TLS-Settings" + schema: + type: list + default: [] + items: + - variable: tlsEntry + label: "Host" + schema: + type: dict + attrs: + - variable: hosts + label: "Certificate Hosts" + schema: + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: string + default: "" + required: true + - variable: scaleCert + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + $ref: + - "definitions/certificate" + - variable: entrypoint + label: "Traefik Entrypoint" + description: "Entrypoint used by Traefik when using Traefik as Ingress Provider" + schema: + type: string + default: "websecure" + required: true + - variable: middlewares + label: "Traefik Middlewares" + description: "Add previously created Traefik Middlewares to this Ingress" + schema: + type: list + default: [] + items: + - variable: name + label: "Name" + schema: + type: string + default: "" + required: true diff --git a/charts/incubator/external-service/app-readme.md b/charts/incubator/external-service/app-readme.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/charts/incubator/external-service/templates/common.yaml b/charts/incubator/external-service/templates/common.yaml new file mode 100644 index 00000000000..a6613c2ce21 --- /dev/null +++ b/charts/incubator/external-service/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/charts/incubator/external-service/values.yaml b/charts/incubator/external-service/values.yaml new file mode 100644 index 00000000000..337035f6b5b --- /dev/null +++ b/charts/incubator/external-service/values.yaml @@ -0,0 +1,15 @@ +# Default values for Jackett. + +# Disable Deployment +controller: + enabled: false + +service: + main: + enabled: true + type: ExternalIP + externalIP: "1.1.1.1" + ports: + main: + Type: HTTPS + port: 443 diff --git a/docs/_static/img/external-service-icon.png b/docs/_static/img/external-service-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e34878f499860080017a5e62749b26ec36c7dc30 GIT binary patch literal 6769 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 ezTnZC7X{