diff --git a/charts/flaresolverr/Chart.lock b/charts/flaresolverr/Chart.lock new file mode 100644 index 00000000..b961c52e --- /dev/null +++ b/charts/flaresolverr/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://rubxkube.github.io/common-charts + version: v0.3.12 +digest: sha256:272c874efcb3f6481aab554c8d6f1ea7d06aba9b629c988349a7800de2b46ecc +generated: "2024-12-16T18:20:18.432903+01:00" diff --git a/charts/flaresolverr/Chart.yaml b/charts/flaresolverr/Chart.yaml new file mode 100644 index 00000000..0402ffbe --- /dev/null +++ b/charts/flaresolverr/Chart.yaml @@ -0,0 +1,23 @@ +--- +apiVersion: v2 +type: application +name: flaresolverr +description: "FlareSolverr is a proxy server that solves Cloudflare's Javascript challenges." +version: 0.0.1 +appVersion: "v3.3.21" +# icon: +maintainers: + - name: QJOLY + email: github@une-tasse-de.cafe +kubeVersion: ">= 1.18" +home: https://github.com/FlareSolverr/FlareSolverr +keywords: + - FlareSolverr + - Cloudflare + - Proxy +sources: + - https://github.com/FlareSolverr/FlareSolverr +dependencies: + - name: common + repository: https://rubxkube.github.io/common-charts + version: v0.3.12 diff --git a/charts/flaresolverr/README.md b/charts/flaresolverr/README.md new file mode 100644 index 00000000..cb837fd5 --- /dev/null +++ b/charts/flaresolverr/README.md @@ -0,0 +1,93 @@ +# flaresolverr + +![Version: 0.0.1](https://img.shields.io/badge/Version-0.0.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v3.3.21](https://img.shields.io/badge/AppVersion-v3.3.21-informational?style=flat-square) + +FlareSolverr is a proxy server that solves Cloudflare's Javascript challenges. + +**Homepage:** + +## Maintainers + +| Name | Email | Url | +| ---- | ------ | --- | +| QJOLY | | | + +## Source Code + +* + +## Requirements + +Kubernetes: `>= 1.18` + +| Repository | Name | Version | +|------------|------|---------| +| https://rubxkube.github.io/common-charts | common | v0.3.12 | + +## Values + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| common.deployment.cpuLimit | string | `nil` | | +| common.deployment.cpuRequest | string | `nil` | | +| common.deployment.memoryLimit | string | `nil` | | +| common.deployment.memoryRequest | string | `nil` | | +| common.deployment.port | int | `8191` | | +| common.deployment.strategy.rollingUpdate.maxSurge | string | `"25%"` | | +| common.deployment.strategy.rollingUpdate.maxUnavailable | string | `"25%"` | | +| common.deployment.strategy.type | string | `"RollingUpdate"` | | +| common.hpa.avgCpuUtilization | int | `50` | | +| common.hpa.enabled | bool | `false` | | +| common.hpa.maxReplicas | int | `2` | | +| common.hpa.minReplicas | int | `1` | | +| common.image.pullPolicy | string | `"Always"` | | +| common.image.repository | string | `"ghcr.io/flaresolverr/flaresolverr"` | | +| common.image.repositorySettings.isPrivate | bool | `false` | | +| common.image.repositorySettings.secretName | string | `nil` | | +| common.image.tag | string | `"v3.3.21"` | | +| common.ingress.annotations | object | `{}` | | +| common.ingress.enabled | bool | `false` | | +| common.ingress.extraLabels | object | `{}` | | +| common.ingress.hostName | string | `"toto.lan"` | | +| common.ingress.ingressClassName | string | `"istio"` | | +| common.ingress.tls.enabled | bool | `false` | | +| common.ingress.tls.secretName | string | `"secret-flaresolverr-tls"` | | +| common.livenessProbe.failureThreshold | int | `1` | | +| common.livenessProbe.initialDelaySeconds | int | `30` | | +| common.livenessProbe.periodSeconds | int | `60` | | +| common.livenessProbe.tcpSocket.port | int | `8191` | | +| common.livenessProbe.timeoutSeconds | int | `3` | | +| common.livenessProbeEnabled | bool | `true` | | +| common.name | string | `"flaresolverr"` | | +| common.persistence.enabled | bool | `false` | | +| common.persistence.volumes[0].containerMount | string | `"/config/"` | | +| common.persistence.volumes[0].name | string | `"config"` | | +| common.persistence.volumes[0].pvcClaim | string | `""` | | +| common.persistence.volumes[0].size | string | `"2Gi"` | | +| common.persistence.volumes[0].storageClassName | string | `""` | | +| common.persistence.volumes[1].containerMount | string | `"/downloads/"` | | +| common.persistence.volumes[1].name | string | `"downloads"` | | +| common.persistence.volumes[1].pvcClaim | string | `""` | | +| common.persistence.volumes[1].size | string | `"1Gi"` | | +| common.persistence.volumes[1].storageClassName | string | `""` | | +| common.readinessProbe.failureThreshold | int | `2` | | +| common.readinessProbe.initialDelaySeconds | int | `30` | | +| common.readinessProbe.periodSeconds | int | `30` | | +| common.readinessProbe.tcpSocket.port | int | `8191` | | +| common.readinessProbe.timeoutSeconds | int | `3` | | +| common.readinessProbeEnabled | bool | `true` | | +| common.service.servicePort | int | `8191` | | +| common.service.type | string | `"ClusterIP"` | | +| common.startupProbe.failureThreshold | int | `20` | | +| common.startupProbe.httpGet.path | string | `"/"` | | +| common.startupProbe.httpGet.port | int | `8191` | | +| common.startupProbe.periodSeconds | int | `10` | | +| common.startupProbe.timeoutSeconds | int | `1` | | +| common.startupProbeEnabled | bool | `false` | | +| common.tests.classicHttp.enabled | bool | `false` | | +| common.tests.curlHostHeader.enabled | bool | `true` | | +| common.tests.curlHostHeader.path | string | `"/"` | | +| common.variables.nonSecret.LOG_LEVEL | string | `"info"` | | +| common.variables.secret | object | `{}` | | +| define | int | `8191` | | + diff --git a/charts/flaresolverr/values.yaml b/charts/flaresolverr/values.yaml new file mode 100644 index 00000000..1df6bc88 --- /dev/null +++ b/charts/flaresolverr/values.yaml @@ -0,0 +1,107 @@ +--- +define: &containerPort 8191 + +common: + name: "flaresolverr" + service: + servicePort: *containerPort + type: ClusterIP + + deployment: + port: *containerPort + memoryRequest: null + cpuRequest: null + memoryLimit: null + cpuLimit: null + strategy: + type: RollingUpdate + rollingUpdate: + maxUnavailable: 25% + maxSurge: 25% + + # container + image: + repositorySettings: + isPrivate: false + secretName: null + repository: ghcr.io/flaresolverr/flaresolverr + tag: v3.3.21 + pullPolicy: Always + + # ingress + ingress: + enabled: false + hostName: toto.lan + extraLabels: {} + annotations: + {} + # nginx.ingress.kubernetes.io/proxy-body-size: 100m + tls: + enabled: false + secretName: "secret-flaresolverr-tls" + # For Ingress CRD + ingressClassName: istio + + # env variables + variables: + secret: {} + nonSecret: + LOG_LEVEL: info + + # horizontal autoscaler + hpa: + enabled: false + minReplicas: 1 + maxReplicas: 2 + avgCpuUtilization: 50 + + # startupProbe + startupProbeEnabled: false + startupProbe: + httpGet: + path: "/" + port: *containerPort + periodSeconds: 10 + failureThreshold: 20 + timeoutSeconds: 1 + + # readinessProbe + readinessProbeEnabled: true + readinessProbe: + tcpSocket: + port: *containerPort + initialDelaySeconds: 30 + periodSeconds: 30 + failureThreshold: 2 + timeoutSeconds: 3 + + # livenessProbe + livenessProbeEnabled: true + livenessProbe: + tcpSocket: + port: *containerPort + initialDelaySeconds: 30 + periodSeconds: 60 + failureThreshold: 1 + timeoutSeconds: 3 + + persistence: + enabled: false + volumes: + - name: "config" + storageClassName: "" # leave empty if you want to use default + size: "2Gi" + pvcClaim: "" # Fill only if you want to use existing pvc + containerMount: "/config/" + - name: "downloads" # OPTIONAL + storageClassName: "" # leave empty if you want to use default + size: "1Gi" + pvcClaim: "" # Fill only if you want to use existing pvc + containerMount: "/downloads/" + + tests: + classicHttp: # default helm test method + enabled: false + curlHostHeader: # curl using ingress.hostName as Host in header + enabled: true + path: "/"