From bd40fca54e67c68e458b19abca3608f650d39bbf Mon Sep 17 00:00:00 2001 From: TrueCharts-Bot Date: Sat, 2 Jul 2022 13:00:32 +0000 Subject: [PATCH] Commit new App releases for TrueCharts Signed-off-by: TrueCharts-Bot --- incubator/cloudflareddns/0.0.1/CHANGELOG.md | 10 + incubator/cloudflareddns/0.0.1/Chart.lock | 6 + incubator/cloudflareddns/0.0.1/Chart.yaml | 32 + incubator/cloudflareddns/0.0.1/README.md | 38 + incubator/cloudflareddns/0.0.1/app-readme.md | 3 + .../0.0.1/charts/common-10.1.4.tgz | Bin 0 -> 46955 bytes incubator/cloudflareddns/0.0.1/ix_values.yaml | 52 + incubator/cloudflareddns/0.0.1/questions.yaml | 2039 +++++++++++++++++ incubator/cloudflareddns/0.0.1/security.md | 25 + .../0.0.1/templates/common.yaml | 1 + incubator/cloudflareddns/0.0.1/values.yaml | 0 incubator/cloudflareddns/item.yaml | 5 + 12 files changed, 2211 insertions(+) create mode 100644 incubator/cloudflareddns/0.0.1/CHANGELOG.md create mode 100644 incubator/cloudflareddns/0.0.1/Chart.lock create mode 100644 incubator/cloudflareddns/0.0.1/Chart.yaml create mode 100644 incubator/cloudflareddns/0.0.1/README.md create mode 100644 incubator/cloudflareddns/0.0.1/app-readme.md create mode 100644 incubator/cloudflareddns/0.0.1/charts/common-10.1.4.tgz create mode 100644 incubator/cloudflareddns/0.0.1/ix_values.yaml create mode 100644 incubator/cloudflareddns/0.0.1/questions.yaml create mode 100644 incubator/cloudflareddns/0.0.1/security.md create mode 100644 incubator/cloudflareddns/0.0.1/templates/common.yaml create mode 100644 incubator/cloudflareddns/0.0.1/values.yaml create mode 100644 incubator/cloudflareddns/item.yaml diff --git a/incubator/cloudflareddns/0.0.1/CHANGELOG.md b/incubator/cloudflareddns/0.0.1/CHANGELOG.md new file mode 100644 index 00000000000..d5098b9bc04 --- /dev/null +++ b/incubator/cloudflareddns/0.0.1/CHANGELOG.md @@ -0,0 +1,10 @@ +# Changelog
+ + + +### cloudflareddns-0.0.1 (2022-07-02) + +#### Feat + +* Add CloudflareDDNS to incubator ([#3037](https://github.com/truecharts/apps/issues/3037)) + diff --git a/incubator/cloudflareddns/0.0.1/Chart.lock b/incubator/cloudflareddns/0.0.1/Chart.lock new file mode 100644 index 00000000000..1f63d83ac30 --- /dev/null +++ b/incubator/cloudflareddns/0.0.1/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.1.4 +digest: sha256:0f159b86b96bd27bd8d967476e26de9a2a6db995faf0c091cbf1281ee4c4e3a2 +generated: "2022-07-02T12:54:11.632640633Z" diff --git a/incubator/cloudflareddns/0.0.1/Chart.yaml b/incubator/cloudflareddns/0.0.1/Chart.yaml new file mode 100644 index 00000000000..23e7c74c7a3 --- /dev/null +++ b/incubator/cloudflareddns/0.0.1/Chart.yaml @@ -0,0 +1,32 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: cloudflareddns +version: 0.0.1 +appVersion: "latest" +description: Update your Cloudflare DNS records using dynamically +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/charts/stable/cloudflareddns +icon: https://truecharts.org/_static/img/appicons/cloudflareddns.png +keywords: + - ddns + - cloudflare + - cloudflareddns +sources: + - https://github.com/hotio/cloudflareddns + - https://hotio.dev/containers/cloudflareddns/ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.1.4 + # condition: +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +annotations: + truecharts.org/catagories: | + - incubator + - networking + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/cloudflareddns/0.0.1/README.md b/incubator/cloudflareddns/0.0.1/README.md new file mode 100644 index 00000000000..1e042297104 --- /dev/null +++ b/incubator/cloudflareddns/0.0.1/README.md @@ -0,0 +1,38 @@ +# Introduction + +Update your Cloudflare DNS records using dynamically + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.1.4 | + +## Installing the Chart + +To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/02-Installing-an-App/). + +## Upgrading, Rolling Back and Uninstalling the Chart + +To upgrade, rollback or delete this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/04-Upgrade-rollback-delete-an-App/). + +## Support + +- Please check our [quick-start guides](https://truecharts.org/manual/Quick-Start%20Guides/01-Adding-TrueCharts/) first. +- See the [Wiki](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +--- +All Rights Reserved - The TrueCharts Project diff --git a/incubator/cloudflareddns/0.0.1/app-readme.md b/incubator/cloudflareddns/0.0.1/app-readme.md new file mode 100644 index 00000000000..92a534343b1 --- /dev/null +++ b/incubator/cloudflareddns/0.0.1/app-readme.md @@ -0,0 +1,3 @@ +Update your Cloudflare DNS records using dynamically + +This App is supplied by TrueCharts, for more information please visit https://truecharts.org diff --git a/incubator/cloudflareddns/0.0.1/charts/common-10.1.4.tgz b/incubator/cloudflareddns/0.0.1/charts/common-10.1.4.tgz new file mode 100644 index 0000000000000000000000000000000000000000..7e93856d5c1ea38420d154f2f39aac947423ad78 GIT binary patch literal 46955 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 Toy-3p00960M&SO^0KNnOBO&e< literal 0 HcmV?d00001 diff --git a/incubator/cloudflareddns/0.0.1/ix_values.yaml b/incubator/cloudflareddns/0.0.1/ix_values.yaml new file mode 100644 index 00000000000..ba3e563eb0c --- /dev/null +++ b/incubator/cloudflareddns/0.0.1/ix_values.yaml @@ -0,0 +1,52 @@ +image: + repository: ghcr.io/hotio/cloudflareddns + pullPolicy: IfNotPresent + tag: latest@sha256:5a5d15f77847de9b01c0c607a7c40353f44dae650e689cea00a4c0eea572778f + +securityContext: + runAsNonRoot: false + readOnlyRootFilesystem: false + +podSecurityContext: + runAsUser: 0 + runAsGroup: 0 + +secretEnv: + CF_APITOKEN: "" + CF_APIKEY: "" + CF_APITOKEN_ZONE: "" + +env: + DETECTION_MODE: '{{ ternary .Values.DETECT_MODE .Values.DETECT_OVERRIDE (eq .Values.DETECT_OVERRIDE "") }}' + # Use Defined + INTERVAL: 300 + DETECT_MODE: "dig-whoami.cloudflare" + DETECT_OVERRIDE: "" + LOG_LEVEL: 3 + cloudflareddns: "" + CF_USER: "your.cf.email@example.com" + CF_HOSTS: "test.example.com;test.foobar.com;test2.foobar.com" + CF_ZONES: "example.com;foobar.com;foobar.com" + CF_RECORDTYPES: "A;A;AAAA" + +probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false + +service: + main: + enabled: false + ports: + main: + enabled: false + +persistence: + config: + enabled: true + mountPath: "/config" + varrun: + enabled: true diff --git a/incubator/cloudflareddns/0.0.1/questions.yaml b/incubator/cloudflareddns/0.0.1/questions.yaml new file mode 100644 index 00000000000..794602dca72 --- /dev/null +++ b/incubator/cloudflareddns/0.0.1/questions.yaml @@ -0,0 +1,2039 @@ +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: "Middlewares" + description: "Traefik Middlewares" + - name: "Metrics" + description: "Metrics" + - name: "Addons" + description: "Addon Configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: {} +questions: + - variable: global + label: "global settings" + group: "Controller" + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: "flag this is SCALE" + schema: + type: boolean + default: true + hidden: true + + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" + - variable: expert + label: "Show Expert Configuration Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: "Extra Args" + schema: + type: list + default: [] + items: + - variable: arg + label: "arg" + schema: + type: string + - variable: labelsList + label: "Controller Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: " Controller Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: secretEnv + group: "Container Configuration" + label: "Image Secrets" + schema: + additional_attrs: true + type: dict + attrs: + - variable: CF_APITOKEN + label: "CF_APITOKEN" + schema: + type: string + private: true + default: "" + - variable: CF_APIKEY + label: "CF_APIKEY" + schema: + type: string + private: true + default: "" + - variable: CF_APITOKEN_ZONE + label: "CF_APITOKEN_ZONE" + schema: + type: string + private: true + default: "" + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: INTERVAL + label: "INTERVAL" + description: "Update your DDNS interval in seconds" + schema: + type: int + default: 300 + - variable: LOG_LEVEL + label: "LOG_LEVEL" + description: "Level of detail your logs need" + schema: + type: int + default: 3 + - variable: DETECT_MODE + label: "DETECTION_MODE" + description: "How you want to get your WAN IP" + schema: + type: string + default: "dig-whoami.cloudflare" + enum: + - value: "dig-whoami.cloudflare" + description: "dig-whoami.cloudflare" + - value: "curl-ifconfig.co" + description: "curl-ifconfig.co" + - value: "curl-icanhazip.com" + description: "curl-icanhazip.com" + - value: "curl-wtfismyip.com" + description: "curl-wtfismyip.com" + - value: "curl-showmyip.ca" + description: "curl-showmyip.ca" + - value: "curl-da.gd" + description: "curl-da.gd" + - value: "curl-seeip.org" + description: "curl-seeip.org" + - value: "dig-google.com" + description: "dig-google.com" + - value: "dig-opendns.com" + description: "dig-opendns.com" + - variable: DETECT_OVERRIDE + label: "DETECTION_MODE_OVERRIDE" + description: "If you want to set DETECTION_MODE to 'local:eth0' for a local interface, this will override the dropdown selection" + schema: + type: string + default: "local:eth0" + - variable: CF_USER + label: "CF_USER" + description: "Cloudflare Username" + schema: + type: string + default: "your.cf.email@example.com" + - variable: CF_HOSTS + label: "CF_HOSTS" + description: "Cloudflare Hosts (Domains)" + schema: + type: string + default: "test.example.com;test.foobar.com" + - variable: CF_RECORDTYPES + label: "CF_RECORDTYPES" + description: "Cloudflare DNS Zones" + schema: + type: string + default: "A;A;AAAA" + - variable: TZ + label: "Timezone" + group: "Container Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: envList + label: "Image environment" + group: "Container Configuration" + schema: + type: list + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: expertpodconf + group: "Container Configuration" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: "Enable TTY" + description: "Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: stdin + label: "Enable STDIN" + description: "Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled." + group: "Workload Details" + schema: + type: boolean + default: false + - variable: termination + group: "Container Configuration" + label: "Termination settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: "Grace Period Seconds" + schema: + type: int + default: 10 + - variable: podLabelsList + group: "Container Configuration" + label: "Pod Labels" + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: podAnnotationsList + group: "Container Configuration" + label: "Pod Annotations" + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + + - variable: serviceList + label: "Add Manual Custom Services" + group: "Networking and Services" + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: "Custom Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "Simple" + enum: + - value: "Simple" + description: "Simple" + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: portsList + label: "Additional Service Ports" + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: "Custom ports" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the port" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Port Name" + schema: + type: string + default: "" + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: targetPort + label: "Target Port" + description: "This port exposes the container port on the service" + schema: + type: int + required: true + - variable: port + label: "Container Port" + schema: + type: int + required: true + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort" + schema: + type: int + min: 9000 + max: 65535 + + - variable: persistence + label: "Integrated Persistent Storage" + description: "Integrated Persistent Storage" + group: "Storage and Persistence" + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: persistenceList + label: "Additional app storage" + group: "Storage and Persistence" + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: "Custom Storage" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name (optional)" + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simpleHP" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" + - value: "nfs" + description: "NFS Share" + - variable: server + label: "NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: "Path on NFS server" + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: true + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPathSimple + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" + - variable: size + label: "Size quotum of storage" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "999Gi" + - variable: hostPathType + label: "(Advanced) hostPath Type" + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "DirectoryOrCreate" + description: "DirectoryOrCreate" + - value: "Directory" + description: "Directory" + - value: "FileOrCreate" + description: "FileOrCreate" + - value: "File" + description: "File" + - value: "Socket" + description: "Socket" + - value: "CharDevice" + description: "CharDevice" + - value: "BlockDevice" + description: "BlockDevice" + - variable: storageClass + label: "(Advanced) storageClass" + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "SCALE-ZFS" + - variable: accessMode + label: "(Advanced) Access Mode" + description: "Allow or disallow multiple PVC's writhing to the same PV" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: advanced + label: "Show Advanced Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: ingressList + label: "Add Manual Custom Ingresses" + group: "Ingress" + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: "Custom Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable Ingress" + schema: + type: boolean + default: true + hidden: true + - variable: name + label: "Name" + schema: + type: string + default: "" + - variable: ingressClassName + label: "IngressClass Name" + schema: + type: string + default: "" + - variable: labelsList + label: "Labels" + schema: + type: list + default: [] + items: + - variable: labelItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: annotationsList + label: "Annotations" + schema: + type: list + default: [] + items: + - variable: annotationItem + label: "Label" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + - variable: hosts + label: "Hosts" + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Host" + schema: + additional_attrs: true + 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: + additional_attrs: true + 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: service + label: "Linked Service" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Service Name" + schema: + type: string + default: "" + - variable: port + label: "Service Port" + schema: + type: int + - variable: tls + label: "TLS-Settings" + schema: + type: list + default: [] + items: + - variable: tlsEntry + label: "Host" + schema: + additional_attrs: true + 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 + + - variable: security + label: "Container Security Settings" + group: "Security and Permissions" + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: "Change PUID / UMASK values" + description: "By enabling this you override default set values." + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: "Process User ID - PUID" + description: "When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps" + schema: + type: int + default: 568 + - variable: UMASK + label: "UMASK" + description: "When supported by the container, this sets the UMASK for tha App. Not supported by all Apps" + schema: + type: string + default: "002" + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: capabilities + label: "Capabilities" + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: "Drop Capability" + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: "Add Capability" + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" + - variable: supplementalGroups + label: "supplemental Groups" + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: "supplemental Group" + schema: + type: int + + + - variable: advancedresources + label: "Set Custom Resource Limits/Requests (Advanced)" + group: "Resources and Devices" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: "Advanced Limit Resource Consumption" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "4000m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "8Gi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: "CPU" + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "10m" + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/indepth/validation/" + schema: + type: string + default: "50Mi" + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + + - variable: deviceList + label: "Mount USB devices" + group: "Resources and Devices" + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: "Device" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + - variable: type + label: "(Advanced) Type of Storage" + description: "Sets the persistence type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: readOnly + label: "readOnly" + schema: + type: boolean + default: false + - variable: hostPath + label: "Host Device Path" + description: "Path to the device on the host system" + schema: + type: path + - variable: mountPath + label: "Container Device Path" + description: "Path inside the container the device is mounted" + schema: + type: string + default: "/dev/ttyACM0" + + # Specify GPU configuration + - variable: scaleGPU + label: "GPU Configuration" + group: "Resources and Devices" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + +# - variable: autoscaling +# group: "Advanced" +# label: "(Advanced) Horizontal Pod Autoscaler" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: "Target" +# description: "deployment name, defaults to main deployment" +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: "Minimum Replicas" +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: "Maximum Replicas" +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: "Target CPU Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: "Target Memory Utilization Percentage" +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: "Advanced" +# label: "(Advanced) Network Policy" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: "enabled" +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: "Policy Type" +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: "Default" +# - value: "ingress" +# description: "Ingress" +# - value: "egress" +# description: "Egress" +# - value: "ingress-egress" +# description: "Ingress and Egress" +# - variable: egress +# label: "Egress" +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: "To" +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" +# - variable: ingress +# label: "Ingress" +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: "From" +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: "ipBlock" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: "cidr" +# schema: +# type: string +# default: "" +# - variable: except +# label: "except" +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: "namespaceSelector" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: "matchExpressions" +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: "Key" +# schema: +# type: string +# - variable: operator +# label: "operator" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "In" +# description: "In" +# - value: "NotIn" +# description: "NotIn" +# - value: "Exists " +# description: "Exists " +# - value: "DoesNotExist " +# description: "DoesNotExist " +# - variable: values +# label: "values" +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: "Ports" +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: "port" +# schema: +# type: int +# - variable: endPort +# label: "port" +# schema: +# type: int +# - variable: protocol +# label: "Protocol" +# schema: +# type: string +# default: "TCP" +# enum: +# - value: "TCP" +# description: "TCP" +# - value: "UDP" +# description: "UDP" +# - value: "SCTP" +# description: "SCTP" + + + - variable: addons + group: "Addons" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: vpn + label: "VPN" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "disabled" + - value: "openvpn" + description: "OpenVPN" + - value: "wireguard" + description: "Wireguard" + - variable: openvpn + label: "OpenVPN Settings" + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: "authentication username" + description: "authentication username, optional" + schema: + type: string + default: "" + - variable: password + label: "authentication password" + description: "authentication credentials" + schema: + type: string + default: "" + required: true + - variable: killSwitch + label: "Enable killswitch" + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: "Killswitch Excluded IPv4 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: "IPv4 Network" + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: "Killswitch Excluded IPv6 networks" + description: "list of killswitch excluded ipv4 addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: "IPv6 Network" + schema: + type: string + required: true + + - variable: configFile + label: "VPN Config File Location" + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "type" + schema: + type: string + default: "hostPath" + hidden: true + - variable: hostPathType + label: "hostPathType" + schema: + type: string + default: "File" + hidden: true + - variable: noMount + label: "noMount" + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: "Full path to file" + description: "path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + required: true + - variable: envList + label: "VPN environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + - variable: codeserver + label: "Codeserver" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: "Git Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: "Raw SSH private key" + label: "deployKey" + schema: + type: string + - variable: deployKeyBase64 + description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence" + label: "deployKeyBase64" + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Service Type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System, Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - value: "LoadBalancer" + description: "LoadBalancer" + - variable: loadBalancerIP + label: "LoadBalancer IP" + description: "LoadBalancerIP" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: list + default: [] + items: + - variable: externalIP + label: "External IP" + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: nodePort + description: "leave empty to disable" + label: "nodePort" + schema: + type: int + default: 36107 + - variable: envList + label: "Codeserver environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + - variable: promtail + label: "Promtail" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: "Loki URL" + schema: + type: string + required: true + - variable: logs + label: "Log Paths" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: path + label: "Path" + schema: + type: string + required: true + - variable: args + label: "Promtail ecommand line arguments" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: "Arg" + schema: + type: string + required: true + - variable: envList + label: "Promtail environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true + + + + + - variable: netshoot + label: "Netshoot" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: "enabled" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: "Netshoot environment Variables" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: "Environment Variable" + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + required: true diff --git a/incubator/cloudflareddns/0.0.1/security.md b/incubator/cloudflareddns/0.0.1/security.md new file mode 100644 index 00000000000..ac974cb2c40 --- /dev/null +++ b/incubator/cloudflareddns/0.0.1/security.md @@ -0,0 +1,25 @@ +--- +hide: + - toc +--- + +# Security Overview + + + +## Helm-Chart + +##### Scan Results + + + +| No Misconfigurations found | +|:---------------------------------| + +## Containers + +##### Detected Containers + + +##### Scan Results + diff --git a/incubator/cloudflareddns/0.0.1/templates/common.yaml b/incubator/cloudflareddns/0.0.1/templates/common.yaml new file mode 100644 index 00000000000..c1a366e1cf0 --- /dev/null +++ b/incubator/cloudflareddns/0.0.1/templates/common.yaml @@ -0,0 +1 @@ +{{ include "tc.common.loader.all" . }} diff --git a/incubator/cloudflareddns/0.0.1/values.yaml b/incubator/cloudflareddns/0.0.1/values.yaml new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/cloudflareddns/item.yaml b/incubator/cloudflareddns/item.yaml new file mode 100644 index 00000000000..63cdf44cd8e --- /dev/null +++ b/incubator/cloudflareddns/item.yaml @@ -0,0 +1,5 @@ +icon_url: https://truecharts.org/_static/img/appicons/cloudflareddns.png +categories: +- incubator +- networking +