Compare commits
84 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b68fdb8e96 | |||
| d2199fa835 | |||
| 78562eb115 | |||
| ccb56cb0d5 | |||
| 112dc5e06d | |||
| b62370b732 | |||
| 6629b8f029 | |||
| 92bcd1d7c2 | |||
| 6c8bf0ba85 | |||
| 744c165222 | |||
| 44dbe92cfe | |||
| 611020678d | |||
| 3b654ae1c1 | |||
| 923b95ce24 | |||
| 1c54a8d8e7 | |||
| f69db06964 | |||
| c84527a1f6 | |||
| 11bd1b9f1b | |||
| 589e369c17 | |||
| 189d8ff739 | |||
| 9f2b3b8a7a | |||
| 2f806a4f10 | |||
| d9695cb6f7 | |||
|
|
2405aaa735 | ||
|
|
f65f515e0d | ||
| bdf77a8489 | |||
| 2a5e822c82 | |||
| d237fc9a37 | |||
| bab1889a84 | |||
| 9fb0327bbf | |||
| 36d9c33d95 | |||
| e82b7231e4 | |||
| c6f1d78616 | |||
| 7d6184209f | |||
| f36430047d | |||
| 94c231517a | |||
| 375c41d7c6 | |||
| de138ba127 | |||
| ad18024c0e | |||
|
|
870b7c91d6 | ||
| eacffc611e | |||
| 5ec284af84 | |||
| a4f665b963 | |||
|
|
c97ec4ab80 | ||
| 7669ea43fc | |||
|
|
0dc07a3f29 | ||
|
|
323ba9fcc7 | ||
| 786f551392 | |||
|
|
05545f5a1b | ||
|
|
6965ed2b64 | ||
| 07f67d7b34 | |||
|
|
bb3e08a92b | ||
| 56faf42f86 | |||
| 5dc91fba4c | |||
| 1c6adf4bf1 | |||
| 3edbbd170d | |||
| 75a0b30ccd | |||
| 5cd5b19a1b | |||
| bef5977a6d | |||
| 82b398345d | |||
| b8dcf5d9a9 | |||
|
|
07fe0bbf6f | ||
|
|
066a896ed8 | ||
| 6cf9644c40 | |||
| 018797e44b | |||
| 589869b4f1 | |||
| 45a19e2867 | |||
| 4cd93bad7a | |||
| e40a396fdc | |||
|
|
45f0a822b4 | ||
|
|
5adc63acda | ||
|
|
9a833aa08e | ||
|
|
59506de582 | ||
|
|
ee806a5159 | ||
|
|
563827f1e5 | ||
|
|
1391248697 | ||
|
|
70bcaf7a4e | ||
|
|
980c4c6067 | ||
|
|
25f8884f1e | ||
|
|
caee10c44f | ||
| 665a1eddbc | |||
|
|
6491806a2f | ||
|
|
5e00189cbe | ||
|
|
b6ced93554 |
31
Containerfile
Normal file
31
Containerfile
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
# Base on latest UBI image
|
||||||
|
FROM harbor.ervine.dev/public/x86_64/ubi:9.6-1760340943
|
||||||
|
|
||||||
|
LABEL maintainer="Jonathan Ervine docker@ervine.org"
|
||||||
|
|
||||||
|
# Install updates
|
||||||
|
ENV LANG='en_US.UTF-8' \
|
||||||
|
LANGUAGE='en_US.UTF-8' \
|
||||||
|
TERM='xterm' \
|
||||||
|
VERSION='3'
|
||||||
|
|
||||||
|
RUN dnf update -y && \
|
||||||
|
dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm && \
|
||||||
|
dnf install -y epel-release epel-next-release && \
|
||||||
|
dnf install -y libicu libmediainfo ca-certificates mono-core zip curl libgdiplus --allowerasing && \
|
||||||
|
update-ca-trust && \
|
||||||
|
dnf clean all
|
||||||
|
|
||||||
|
RUN curl -sLo sonarr.tar.gz https://github.com/Sonarr/Sonarr/releases/download/v4.0.16.2944/Sonarr.main.4.0.16.2944.linux-x64.tar.gz && \
|
||||||
|
sleep 30 && \
|
||||||
|
tar zxvf sonarr.tar.gz && \
|
||||||
|
rm -rf sonarr.tar.gz && \
|
||||||
|
groupadd -g 1027 sonarr && \
|
||||||
|
useradd -u 1027 -g sonarr -M sonarr && \
|
||||||
|
chown -R sonarr:sonarr /Sonarr
|
||||||
|
|
||||||
|
EXPOSE 8989
|
||||||
|
|
||||||
|
USER sonarr
|
||||||
|
|
||||||
|
CMD [ "/Sonarr/Sonarr", "--nobrowser", "--data=/config" ]
|
||||||
41
Dockerfile
41
Dockerfile
@ -1,38 +1,31 @@
|
|||||||
# Base on latest (edge) alpine image
|
# Base on latest UBI image
|
||||||
FROM harbor.ervine.dev/library/x86_64/alpine/alpine-3.11
|
FROM harbor.ervine.dev/public/x86_64/ubi:9.3-1552
|
||||||
|
|
||||||
MAINTAINER “Jonathan Ervine” <docker@ervine.org>
|
LABEL maintainer="Jonathan Ervine docker@ervine.org"
|
||||||
|
|
||||||
# Install updates
|
# Install updates
|
||||||
ENV LANG='en_US.UTF-8' \
|
ENV LANG='en_US.UTF-8' \
|
||||||
LANGUAGE='en_US.UTF-8' \
|
LANGUAGE='en_US.UTF-8' \
|
||||||
TERM='xterm' \
|
TERM='xterm' \
|
||||||
VERSION='develop' \
|
VERSION='3'
|
||||||
SONARR_USER='mediaservice' \
|
|
||||||
SONARR_GROUP='mediaservice' \
|
|
||||||
SONARR_UID='1003' \
|
|
||||||
SONARR_GID='1003'
|
|
||||||
|
|
||||||
RUN echo http://dl-4.alpinelinux.org/alpine/edge/testing >> /etc/apk/repositories && \
|
RUN dnf update -y && \
|
||||||
apk -U update && \
|
dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm && \
|
||||||
apk -U upgrade && \
|
dnf install -y epel-release epel-next-release && \
|
||||||
apk -U add libmediainfo ca-certificates mono curl && \
|
dnf install -y libicu libmediainfo ca-certificates mono-core zip curl libgdiplus --allowerasing && \
|
||||||
apk del make gcc g++ && \
|
update-ca-trust && \
|
||||||
rm -rf /tmp/src && \
|
dnf clean all
|
||||||
rm -rf /var/cache/apk/*
|
|
||||||
|
|
||||||
ADD start.sh /usr/local/bin/start.sh
|
RUN curl -sLo sonarr.tar.gz https://github.com/Sonarr/Sonarr/releases/download/v4.0.1.929/Sonarr.main.4.0.1.929.linux-x64.tar.gz && \
|
||||||
RUN chmod 755 /usr/local/bin/start.sh
|
sleep 30 && \
|
||||||
|
|
||||||
RUN curl -o sonarr.tar.gz https://download.sonarr.tv/v3/phantom-develop/3.0.3.748/Sonarr.phantom-develop.3.0.3.748.linux.tar.gz -o sonarr.tar.gz && \
|
|
||||||
tar zxvf sonarr.tar.gz && \
|
tar zxvf sonarr.tar.gz && \
|
||||||
rm -rf sonarr.tar.gz && \
|
rm -rf sonarr.tar.gz && \
|
||||||
addgroup -g $SONARR_GID $SONARR_GROUP && \
|
groupadd -g 1027 sonarr && \
|
||||||
adduser -D -u $SONARR_UID -G $SONARR_GROUP -H $SONARR_USER && \
|
useradd -u 1027 -g sonarr -M sonarr && \
|
||||||
chown -R $SONARR_USER:$SONARR_GROUP /Sonarr
|
chown -R sonarr:sonarr /Sonarr
|
||||||
|
|
||||||
EXPOSE 8989
|
EXPOSE 8989
|
||||||
|
|
||||||
USER $SONARR_USER
|
USER sonarr
|
||||||
|
|
||||||
CMD [ "/usr/local/bin/start.sh" ]
|
CMD [ "/Sonarr/Sonarr", "--nobrowser", "--data=/config" ]
|
||||||
|
|||||||
56
Jenkinsfile
vendored
56
Jenkinsfile
vendored
@ -1,26 +1,38 @@
|
|||||||
node("docker-node") {
|
|
||||||
docker.withRegistry('https://harbor.ervine.dev', 'jenkins-to-harbor') {
|
|
||||||
|
|
||||||
git branch: "v3-dev", url: "ssh://git@git.ervine.org:2222/jonny/x86_64-alpine-sonarr", credentialsId: 'jenkins-to-git'
|
|
||||||
|
|
||||||
sh "git rev-parse HEAD > .git/commit-id"
|
|
||||||
def commit_id = readFile('.git/commit-id').trim()
|
|
||||||
println commit_id
|
|
||||||
|
|
||||||
try {
|
podTemplate(yaml: """
|
||||||
stage "build"
|
kind: Pod
|
||||||
def app = docker.build "library/x86_64/alpine/sonarr"
|
spec:
|
||||||
|
containers:
|
||||||
stage "publish"
|
- name: kaniko
|
||||||
app.push("v3.0.3.748")
|
image: gcr.io/kaniko-project/executor@sha256:f652f28537fa76e8f4f9393de13a064f0206003c451ce2ad6e4359fd5a21acbc
|
||||||
app.push("v3")
|
imagePullPolicy: Always
|
||||||
|
command:
|
||||||
|
- /busybox/cat
|
||||||
|
tty: true
|
||||||
|
volumeMounts:
|
||||||
|
- name: jenkins-docker-cfg
|
||||||
|
mountPath: /kaniko/.docker
|
||||||
|
volumes:
|
||||||
|
- name: jenkins-docker-cfg
|
||||||
|
projected:
|
||||||
|
sources:
|
||||||
|
- secret:
|
||||||
|
name: regcred
|
||||||
|
items:
|
||||||
|
- key: .dockerconfigjson
|
||||||
|
path: config.json
|
||||||
|
"""
|
||||||
|
) {
|
||||||
|
|
||||||
stage('Deploy on K8s'){
|
node(POD_LABEL) {
|
||||||
sh "/usr/local/bin/kubectl -n media delete po sonarr3-0"
|
stage('Build with Kaniko') {
|
||||||
}
|
git url: 'ssh://git@git.ervine.org/jonny/x86_64-alpine-sonarr', credentialsId: 'jenkins2git'
|
||||||
}
|
container('kaniko') {
|
||||||
catch (err) {
|
sh '/kaniko/executor --force -f `pwd`/Containerfile -c `pwd` --cache=false --destination=harbor.ervine.dev/public/x86_64/ubi/sonarr:v4.0.16.2944'
|
||||||
currentBuild.result = 'FAILURE'
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
stage('Notify gchat') {
|
||||||
|
googlechatnotification (url: 'https://chat.googleapis.com/v1/spaces/AAAA-nNKzdA/messages?key=AIzaSyDdI0hCZtE6vySjMm-WEfRq3CPzqKqqsHI&token=FySO2Zy2wfNJ7QKoqT9zy0uzNJF8bwj74ansor3BTu0%3D', message: "Sonarr 4.0.16.2944 on RHEL UBI has built")
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
22
chart/sonarr/.helmignore
Normal file
22
chart/sonarr/.helmignore
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# 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/
|
||||||
23
chart/sonarr/Chart.yaml
Normal file
23
chart/sonarr/Chart.yaml
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: sonarr
|
||||||
|
description: A Helm chart for Kubernetes
|
||||||
|
|
||||||
|
# A chart can be either an 'application' or a 'library' chart.
|
||||||
|
#
|
||||||
|
# Application charts are a collection of templates that can be packaged into versioned archives
|
||||||
|
# to be deployed.
|
||||||
|
#
|
||||||
|
# Library charts provide useful utilities or functions for the chart developer. They're included as
|
||||||
|
# a dependency of application charts to inject those utilities and functions into the rendering
|
||||||
|
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
|
||||||
|
type: application
|
||||||
|
|
||||||
|
# This is the chart version. This version number should be incremented each time you make changes
|
||||||
|
# to the chart and its templates, including the app version.
|
||||||
|
version: 0.5.0
|
||||||
|
|
||||||
|
# This is the version number of the application being deployed. This version number should be
|
||||||
|
# incremented each time you make changes to the application.
|
||||||
|
appVersion: v3.0.9.1549
|
||||||
|
|
||||||
|
icon: https://git.ervine.org/jonny/x86_64-alpine-sonarr/raw/branch/master/sonarr.png
|
||||||
21
chart/sonarr/templates/NOTES.txt
Normal file
21
chart/sonarr/templates/NOTES.txt
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
1. Get the application URL by running these commands:
|
||||||
|
{{- if .Values.ingress.enabled }}
|
||||||
|
{{- range $host := .Values.ingress.hosts }}
|
||||||
|
{{- range .paths }}
|
||||||
|
http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- else if contains "NodePort" .Values.service.type }}
|
||||||
|
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "sonarr.fullname" . }})
|
||||||
|
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||||
|
echo http://$NODE_IP:$NODE_PORT
|
||||||
|
{{- else if contains "LoadBalancer" .Values.service.type }}
|
||||||
|
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
||||||
|
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "sonarr.fullname" . }}'
|
||||||
|
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "sonarr.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
|
||||||
|
echo http://$SERVICE_IP:{{ .Values.service.port }}
|
||||||
|
{{- else if contains "ClusterIP" .Values.service.type }}
|
||||||
|
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "sonarr.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
|
||||||
|
echo "Visit http://127.0.0.1:8080 to use your application"
|
||||||
|
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
|
||||||
|
{{- end }}
|
||||||
63
chart/sonarr/templates/_helpers.tpl
Normal file
63
chart/sonarr/templates/_helpers.tpl
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
{{/* vim: set filetype=mustache: */}}
|
||||||
|
{{/*
|
||||||
|
Expand the name of the chart.
|
||||||
|
*/}}
|
||||||
|
{{- define "sonarr.name" -}}
|
||||||
|
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create a default fully qualified app name.
|
||||||
|
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||||
|
If release name contains chart name it will be used as a full name.
|
||||||
|
*/}}
|
||||||
|
{{- define "sonarr.fullname" -}}
|
||||||
|
{{- if .Values.fullnameOverride -}}
|
||||||
|
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||||
|
{{- if contains $name .Release.Name -}}
|
||||||
|
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create chart name and version as used by the chart label.
|
||||||
|
*/}}
|
||||||
|
{{- define "sonarr.chart" -}}
|
||||||
|
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Common labels
|
||||||
|
*/}}
|
||||||
|
{{- define "sonarr.labels" -}}
|
||||||
|
helm.sh/chart: {{ include "sonarr.chart" . }}
|
||||||
|
{{ include "sonarr.selectorLabels" . }}
|
||||||
|
{{- if .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||||
|
{{- end }}
|
||||||
|
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Selector labels
|
||||||
|
*/}}
|
||||||
|
{{- define "sonarr.selectorLabels" -}}
|
||||||
|
app.kubernetes.io/name: {{ include "sonarr.name" . }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Create the name of the service account to use
|
||||||
|
*/}}
|
||||||
|
{{- define "sonarr.serviceAccountName" -}}
|
||||||
|
{{- if .Values.serviceAccount.create -}}
|
||||||
|
{{ default (include "sonarr.fullname" .) .Values.serviceAccount.name }}
|
||||||
|
{{- else -}}
|
||||||
|
{{ default "default" .Values.serviceAccount.name }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
41
chart/sonarr/templates/ingress.yaml
Normal file
41
chart/sonarr/templates/ingress.yaml
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
{{- if .Values.ingress.enabled -}}
|
||||||
|
{{- $fullName := include "sonarr.fullname" . -}}
|
||||||
|
{{- $svcPort := .Values.service.port -}}
|
||||||
|
{{- if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||||
|
apiVersion: networking.k8s.io/v1beta1
|
||||||
|
{{- else -}}
|
||||||
|
apiVersion: extensions/v1beta1
|
||||||
|
{{- end }}
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: {{ $fullName }}
|
||||||
|
labels:
|
||||||
|
{{- include "sonarr.labels" . | nindent 4 }}
|
||||||
|
{{- with .Values.ingress.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
{{- if .Values.ingress.tls }}
|
||||||
|
tls:
|
||||||
|
{{- range .Values.ingress.tls }}
|
||||||
|
- hosts:
|
||||||
|
{{- range .hosts }}
|
||||||
|
- {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
secretName: {{ .secretName }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
rules:
|
||||||
|
{{- range .Values.ingress.hosts }}
|
||||||
|
- host: {{ .host | quote }}
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
{{- range .paths }}
|
||||||
|
- path: {{ . }}
|
||||||
|
backend:
|
||||||
|
serviceName: {{ $fullName }}
|
||||||
|
servicePort: {{ $svcPort }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
19
chart/sonarr/templates/service.yaml
Normal file
19
chart/sonarr/templates/service.yaml
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: {{ include "sonarr.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "sonarr.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
type: {{ .Values.service.type }}
|
||||||
|
ports:
|
||||||
|
- port: {{ .Values.service.port }}
|
||||||
|
targetPort: 8989
|
||||||
|
protocol: TCP
|
||||||
|
name: http
|
||||||
|
- port: 9707
|
||||||
|
targetPort: 9707
|
||||||
|
protocol: TCP
|
||||||
|
name: sonarr-metrics
|
||||||
|
selector:
|
||||||
|
{{- include "sonarr.selectorLabels" . | nindent 4 }}
|
||||||
8
chart/sonarr/templates/serviceaccount.yaml
Normal file
8
chart/sonarr/templates/serviceaccount.yaml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
{{- if .Values.serviceAccount.create -}}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: {{ include "sonarr.serviceAccountName" . }}
|
||||||
|
labels:
|
||||||
|
{{ include "sonarr.labels" . | nindent 4 }}
|
||||||
|
{{- end -}}
|
||||||
93
chart/sonarr/templates/statefulset.yaml
Normal file
93
chart/sonarr/templates/statefulset.yaml
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: StatefulSet
|
||||||
|
metadata:
|
||||||
|
name: {{ include "sonarr.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "sonarr.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
replicas: {{ .Values.replicaCount }}
|
||||||
|
serviceName: {{ include "sonarr.fullname" . }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "sonarr.selectorLabels" . | nindent 6 }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "sonarr.selectorLabels" . | nindent 8 }}
|
||||||
|
spec:
|
||||||
|
{{- with .Values.imagePullSecrets }}
|
||||||
|
imagePullSecrets:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
serviceAccountName: {{ include "sonarr.serviceAccountName" . }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
||||||
|
containers:
|
||||||
|
- args:
|
||||||
|
- exportarr
|
||||||
|
- sonarr
|
||||||
|
name: sonarr-metrics
|
||||||
|
image: ghcr.io/onedr0p/exportarr:latest
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
ports:
|
||||||
|
- name: sonarr-metrics
|
||||||
|
containerPort: 9707
|
||||||
|
protocol: TCP
|
||||||
|
env:
|
||||||
|
- name: PORT
|
||||||
|
value: "9707"
|
||||||
|
- name: URL
|
||||||
|
value: "http://127.0.0.1:8989"
|
||||||
|
- name: ENABLE_EPISODE_QUALITY_METRICS
|
||||||
|
value: "true"
|
||||||
|
- name: APIKEY
|
||||||
|
value: "{{ .Values.metrics.apikey }}"
|
||||||
|
- name: {{ .Chart.Name }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.securityContext | nindent 12 }}
|
||||||
|
image: "{{ .Values.image.repository }}:{{ .Chart.AppVersion }}"
|
||||||
|
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||||
|
ports:
|
||||||
|
- name: sonarr
|
||||||
|
containerPort: 8989
|
||||||
|
protocol: TCP
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: 8989
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: 8989
|
||||||
|
resources:
|
||||||
|
{{- toYaml .Values.resources | nindent 12 }}
|
||||||
|
volumeMounts:
|
||||||
|
- name: sonarr-config
|
||||||
|
mountPath: /config
|
||||||
|
- name: sonarr-media
|
||||||
|
mountPath: /tv
|
||||||
|
subPath: tv
|
||||||
|
- name: sonarr-media
|
||||||
|
mountPath: /tv-kids
|
||||||
|
subPath: tv-kids
|
||||||
|
volumes:
|
||||||
|
- emptyDir: {}
|
||||||
|
name: sonarr-local-config
|
||||||
|
- name: sonarr-media
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: {{ .Values.mediaPvc }}
|
||||||
|
- name: sonarr-config
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: {{ .Values.config.configPvc }}
|
||||||
|
{{- with .Values.nodeSelector }}
|
||||||
|
nodeSelector:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
15
chart/sonarr/templates/tests/test-connection.yaml
Normal file
15
chart/sonarr/templates/tests/test-connection.yaml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Pod
|
||||||
|
metadata:
|
||||||
|
name: "{{ include "sonarr.fullname" . }}-test-connection"
|
||||||
|
labels:
|
||||||
|
{{ include "sonarr.labels" . | nindent 4 }}
|
||||||
|
annotations:
|
||||||
|
"helm.sh/hook": test-success
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: wget
|
||||||
|
image: busybox
|
||||||
|
command: ['wget']
|
||||||
|
args: ['{{ include "sonarr.fullname" . }}:{{ .Values.service.port }}']
|
||||||
|
restartPolicy: Never
|
||||||
73
chart/sonarr/values.yaml
Normal file
73
chart/sonarr/values.yaml
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
# Default values for sonarr.
|
||||||
|
# This is a YAML-formatted file.
|
||||||
|
# Declare variables to be passed into your templates.
|
||||||
|
|
||||||
|
replicaCount: 1
|
||||||
|
|
||||||
|
image:
|
||||||
|
repository: harbor.ervine.dev/public/x86_64/alpine/sonarr
|
||||||
|
tag: v3.0.9.1549
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
|
||||||
|
imagePullSecrets: []
|
||||||
|
nameOverride: ""
|
||||||
|
fullnameOverride: ""
|
||||||
|
|
||||||
|
serviceAccount:
|
||||||
|
# Specifies whether a service account should be created
|
||||||
|
create: true
|
||||||
|
# The name of the service account to use.
|
||||||
|
# If not set and create is true, a name is generated using the fullname template
|
||||||
|
name:
|
||||||
|
|
||||||
|
podSecurityContext: {}
|
||||||
|
# fsGroup: 2000
|
||||||
|
|
||||||
|
securityContext:
|
||||||
|
# capabilities:
|
||||||
|
# drop:
|
||||||
|
# - ALL
|
||||||
|
readOnlyRootFilesystem: true
|
||||||
|
runAsNonRoot: true
|
||||||
|
runAsUser: 1027
|
||||||
|
|
||||||
|
service:
|
||||||
|
type: ClusterIP
|
||||||
|
port: 8989
|
||||||
|
|
||||||
|
ingress:
|
||||||
|
enabled: false
|
||||||
|
annotations: {}
|
||||||
|
# kubernetes.io/ingress.class: nginx
|
||||||
|
# kubernetes.io/tls-acme: "true"
|
||||||
|
hosts:
|
||||||
|
- host: chart-example.local
|
||||||
|
paths: []
|
||||||
|
tls: []
|
||||||
|
# - secretName: chart-example-tls
|
||||||
|
# hosts:
|
||||||
|
# - chart-example.local
|
||||||
|
|
||||||
|
resources:
|
||||||
|
# We usually recommend not to specify default resources and to leave this as a conscious
|
||||||
|
# choice for the user. This also increases chances charts run on environments with little
|
||||||
|
# resources, such as Minikube. If you do want to specify resources, uncomment the following
|
||||||
|
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
|
||||||
|
# limits:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 128Mi
|
||||||
|
requests:
|
||||||
|
cpu: 20m
|
||||||
|
memory: 64Mi
|
||||||
|
|
||||||
|
nodeSelector:
|
||||||
|
location: livingRoom
|
||||||
|
|
||||||
|
tolerations: []
|
||||||
|
|
||||||
|
affinity: {}
|
||||||
|
|
||||||
|
config:
|
||||||
|
configPvc: sonarr-config
|
||||||
|
|
||||||
|
mediaPvc: sonarr-hermes-media-pvc
|
||||||
BIN
sonarr.png
Normal file
BIN
sonarr.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
7
start.sh
7
start.sh
@ -2,5 +2,8 @@
|
|||||||
##
|
##
|
||||||
## Script to start the sonarr server
|
## Script to start the sonarr server
|
||||||
##
|
##
|
||||||
until [ -f "/config/sonarr.db" ]; do sleep 1; done
|
echo "This has been deprecated"
|
||||||
/usr/bin/mono --debug /Sonarr/Sonarr.exe --nobrowser --data=/config
|
addgroup -g $GID $USER
|
||||||
|
adduser -D -u $UID -G $USER -H $USER
|
||||||
|
until [ -f "/config/nzbdrone.db" ]; do sleep 1; done
|
||||||
|
/usr/bin/mono --debug /NzbDrone/NzbDrone.exe --nobrowser --data=/config
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user