This commit is contained in:
2023-07-24 09:41:32 +02:00
parent e0a4e9118d
commit caa438e434
13 changed files with 280 additions and 265 deletions

View File

@@ -6,7 +6,7 @@ metadata:
namespace: vynil-ci namespace: vynil-ci
labels: labels:
app.kubernetes.io/name: memcached app.kubernetes.io/name: memcached
helm.sh/chart: memcached-6.3.14 helm.sh/chart: memcached-6.3.13
app.kubernetes.io/instance: gitea app.kubernetes.io/instance: gitea
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
@@ -22,7 +22,7 @@ spec:
metadata: metadata:
labels: labels:
app.kubernetes.io/name: memcached app.kubernetes.io/name: memcached
helm.sh/chart: memcached-6.3.14 helm.sh/chart: memcached-6.3.13
app.kubernetes.io/instance: gitea app.kubernetes.io/instance: gitea
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
annotations: annotations:
@@ -47,7 +47,7 @@ spec:
serviceAccountName: default serviceAccountName: default
containers: containers:
- name: memcached - name: memcached
image: docker.io/bitnami/memcached:1.6.19-debian-11-r7 image: docker.io/bitnami/memcached:1.6.19-debian-11-r3
imagePullPolicy: "IfNotPresent" imagePullPolicy: "IfNotPresent"
securityContext: securityContext:
runAsNonRoot: true runAsNonRoot: true

View File

@@ -5,12 +5,12 @@ metadata:
name: gitea name: gitea
annotations: annotations:
labels: labels:
helm.sh/chart: gitea-8.3.0 helm.sh/chart: gitea-8.0.3
app: gitea app: gitea
app.kubernetes.io/name: gitea app.kubernetes.io/name: gitea
app.kubernetes.io/instance: gitea app.kubernetes.io/instance: gitea
app.kubernetes.io/version: "1.19.3" app.kubernetes.io/version: "1.19.1"
version: "1.19.3" version: "1.19.1"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
replicas: 1 replicas: 1
@@ -22,15 +22,15 @@ spec:
template: template:
metadata: metadata:
annotations: annotations:
checksum/config: 27af0e4460a4b6fa0279e60d04c3d82609060dda7af59dd2051139acc1cdb203 checksum/config: 92a115496ca24d008eee552477c9d92637e4c5dafa30a3f43dbffed1ea616881
checksum/ldap_0: 9356e28431e375c7fc7d624460a9f41c243f14c3f9765c40aa2b13cf46203eaf checksum/ldap_0: 9356e28431e375c7fc7d624460a9f41c243f14c3f9765c40aa2b13cf46203eaf
labels: labels:
helm.sh/chart: gitea-8.3.0 helm.sh/chart: gitea-8.0.3
app: gitea app: gitea
app.kubernetes.io/name: gitea app.kubernetes.io/name: gitea
app.kubernetes.io/instance: gitea app.kubernetes.io/instance: gitea
app.kubernetes.io/version: "1.19.3" app.kubernetes.io/version: "1.19.1"
version: "1.19.3" version: "1.19.1"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
spec: spec:
@@ -38,7 +38,7 @@ spec:
fsGroup: 1000 fsGroup: 1000
initContainers: initContainers:
- name: init-directories - name: init-directories
image: "gitea/gitea:1.19.3" image: "gitea/gitea:1.19.1"
imagePullPolicy: Always imagePullPolicy: Always
command: ["/usr/sbin/init_directory_structure.sh"] command: ["/usr/sbin/init_directory_structure.sh"]
env: env:
@@ -70,7 +70,7 @@ spec:
cpu: 100m cpu: 100m
memory: 128Mi memory: 128Mi
- name: init-app-ini - name: init-app-ini
image: "gitea/gitea:1.19.3" image: "gitea/gitea:1.19.1"
imagePullPolicy: Always imagePullPolicy: Always
command: ["/usr/sbin/config_environment.sh"] command: ["/usr/sbin/config_environment.sh"]
env: env:
@@ -108,7 +108,7 @@ spec:
cpu: 100m cpu: 100m
memory: 128Mi memory: 128Mi
- name: configure-gitea - name: configure-gitea
image: "gitea/gitea:1.19.3" image: "gitea/gitea:1.19.1"
command: ["/usr/sbin/configure_gitea.sh"] command: ["/usr/sbin/configure_gitea.sh"]
imagePullPolicy: Always imagePullPolicy: Always
securityContext: securityContext:
@@ -163,7 +163,7 @@ spec:
terminationGracePeriodSeconds: 60 terminationGracePeriodSeconds: 60
containers: containers:
- name: gitea - name: gitea
image: "gitea/gitea:1.19.3" image: "gitea/gitea:1.19.1"
imagePullPolicy: Always imagePullPolicy: Always
env: env:
# SSH Port values have to be set here as well for openssh configuration # SSH Port values have to be set here as well for openssh configuration

View File

@@ -4,7 +4,7 @@ const SRC=src;
const DEST=dest; const DEST=dest;
fn pre_pack() { fn pre_pack() {
shell("helm repo add gitea-charts https://dl.gitea.io/charts/"); shell("helm repo add gitea-charts https://dl.gitea.io/charts/");
shell(`helm template gitea gitea-charts/gitea --namespace=vynil-ci --values values.yml >${global::SRC}/chart.yaml`); shell(`helm template gitea gitea-charts/gitea --version 8.0.3 --namespace=vynil-ci --values values.yml >${global::SRC}/chart.yaml`);
} }
fn post_pack() { fn post_pack() {
shell(`rm -f ${global::DEST}/v1_Pod_gitea-test-connection.yaml`); shell(`rm -f ${global::DEST}/v1_Pod_gitea-test-connection.yaml`);

View File

@@ -9,98 +9,30 @@ metadata:
A painless self-hosted Git service. A painless self-hosted Git service.
Gitea is a community managed lightweight code hosting solution written in Go. It is published under the MIT license. Gitea is a community managed lightweight code hosting solution written in Go. It is published under the MIT license.
options: options:
images: postgres:
default: default:
gitea: replicas: 1
pullPolicy: IfNotPresent storage: 10Gi
registry: docker.io version: '14'
repository: gitea/gitea
tag: 1.19.3
memcached:
registry: docker.io
repository: bitnami/memcached
tag: 1.6.19-debian-11-r7
examples: examples:
- gitea: - replicas: 1
pullPolicy: IfNotPresent storage: 10Gi
registry: docker.io version: '14'
repository: gitea/gitea
tag: 1.19.3
memcached:
registry: docker.io
repository: bitnami/memcached
tag: 1.6.19-debian-11-r7
properties: properties:
gitea: replicas:
default: default: 1
pullPolicy: IfNotPresent type: integer
registry: docker.io storage:
repository: gitea/gitea default: 10Gi
tag: 1.19.3 type: string
properties: version:
pullPolicy: default: '14'
default: IfNotPresent
enum:
- Always
- Never
- IfNotPresent
type: string
registry:
default: docker.io
type: string
repository:
default: gitea/gitea
type: string
tag:
default: 1.19.3
type: string
type: object
memcached:
default:
registry: docker.io
repository: bitnami/memcached
tag: 1.6.19-debian-11-r7
properties:
registry:
default: docker.io
type: string
repository:
default: bitnami/memcached
type: string
tag:
default: 1.6.19-debian-11-r7
type: string
type: object
type: object
load-balancer:
default:
ip: ''
examples:
- ip: ''
properties:
ip:
default: ''
type: string type: string
type: object type: object
webhook: domain-name:
default: default: your_company.com
allowed-hosts: private
skip-tls-verify: false
examples: examples:
- allowed-hosts: private - your_company.com
skip-tls-verify: false
properties:
allowed-hosts:
default: private
type: string
skip-tls-verify:
default: false
type: boolean
type: object
release:
default: 8.3.0
examples:
- 8.3.0
type: string type: string
push-create: push-create:
default: default:
@@ -122,6 +54,41 @@ options:
default: 'true' default: 'true'
type: string type: string
type: object type: object
theme:
default: gitea-modern
examples:
- gitea-modern
type: string
release:
default: 8.3.0
examples:
- 8.3.0
type: string
default-branch:
default: main
examples:
- main
type: string
webhook:
default:
allowed-hosts: private
skip-tls-verify: false
examples:
- allowed-hosts: private
skip-tls-verify: false
properties:
allowed-hosts:
default: private
type: string
skip-tls-verify:
default: false
type: boolean
type: object
replicas:
default: 1
examples:
- 1
type: integer
volume: volume:
default: default:
size: 10Gi size: 10Gi
@@ -132,71 +99,6 @@ options:
default: 10Gi default: 10Gi
type: string type: string
type: object type: object
default-branch:
default: main
examples:
- main
type: string
postgres:
default:
replicas: 1
storage: 10Gi
version: '14'
examples:
- replicas: 1
storage: 10Gi
version: '14'
properties:
replicas:
default: 1
type: integer
storage:
default: 10Gi
type: string
version:
default: '14'
type: string
type: object
ingress-class:
default: traefik
examples:
- traefik
type: string
ssh-port:
default: 2222
examples:
- 2222
type: integer
domain-name:
default: your_company.com
examples:
- your_company.com
type: string
domain:
default: your-company
examples:
- your-company
type: string
issuer:
default: letsencrypt-prod
examples:
- letsencrypt-prod
type: string
disable-registration:
default: true
examples:
- true
type: boolean
replicas:
default: 1
examples:
- 1
type: integer
sub-domain:
default: git
examples:
- git
type: string
admin: admin:
default: default:
email: git-admin@git.your_company.com email: git-admin@git.your_company.com
@@ -212,15 +114,113 @@ options:
default: gitea_admin default: gitea_admin
type: string type: string
type: object type: object
images:
default:
gitea:
pullPolicy: IfNotPresent
registry: docker.io
repository: gitea/gitea
tag: 1.20.1
memcached:
registry: docker.io
repository: bitnami/memcached
tag: 1.6.19-debian-11-r7
examples:
- gitea:
pullPolicy: IfNotPresent
registry: docker.io
repository: gitea/gitea
tag: 1.20.1
memcached:
registry: docker.io
repository: bitnami/memcached
tag: 1.6.19-debian-11-r7
properties:
gitea:
default:
pullPolicy: IfNotPresent
registry: docker.io
repository: gitea/gitea
tag: 1.20.1
properties:
pullPolicy:
default: IfNotPresent
enum:
- Always
- Never
- IfNotPresent
type: string
registry:
default: docker.io
type: string
repository:
default: gitea/gitea
type: string
tag:
default: 1.20.1
type: string
type: object
memcached:
default:
registry: docker.io
repository: bitnami/memcached
tag: 1.6.19-debian-11-r7
properties:
registry:
default: docker.io
type: string
repository:
default: bitnami/memcached
type: string
tag:
default: 1.6.19-debian-11-r7
type: string
type: object
type: object
timezone: timezone:
default: Europe/Paris default: Europe/Paris
examples: examples:
- Europe/Paris - Europe/Paris
type: string type: string
theme: domain:
default: gitea-modern default: your-company
examples: examples:
- gitea-modern - your-company
type: string
issuer:
default: letsencrypt-prod
examples:
- letsencrypt-prod
type: string
ingress-class:
default: traefik
examples:
- traefik
type: string
ssh-port:
default: 2222
examples:
- 2222
type: integer
load-balancer:
default:
ip: ''
examples:
- ip: ''
properties:
ip:
default: ''
type: string
type: object
disable-registration:
default: true
examples:
- true
type: boolean
sub-domain:
default: git
examples:
- git
type: string type: string
dependencies: dependencies:
- dist: null - dist: null

View File

@@ -1,22 +1,27 @@
locals { locals {
dns-names = ["${var.sub-domain}.${var.domain-name}"] dns-names = ["${var.sub-domain}.${var.domain-name}"]
middlewares = [{"name" = "${var.instance}-https"}] middlewares = [{"name" = "${var.instance}-https"}]
services = [{ service = {
"kind" = "Service" "name" = "gitea-http"
"name" = "gitea-http" "port" = {
"namespace" = var.namespace "number" = 3000
"port" = 3000 }
}] }
routes = [ for v in local.dns-names : { rules = [ for v in local.dns-names : {
"kind" = "Rule" "host" = "${v}"
"match" = "Host(`${v}`)" "http" = {
"middlewares" = local.middlewares "paths" = [{
"services" = local.services "backend" = {
"service" = local.service
}
"path" = "/"
"pathType" = "Prefix"
}]
}
}] }]
} }
resource "kubectl_manifest" "gitea_certificate" { resource "kubectl_manifest" "prj_certificate" {
yaml_body = <<-EOF yaml_body = <<-EOF
apiVersion: "cert-manager.io/v1" apiVersion: "cert-manager.io/v1"
kind: "Certificate" kind: "Certificate"
@@ -34,7 +39,7 @@ resource "kubectl_manifest" "gitea_certificate" {
EOF EOF
} }
resource "kubectl_manifest" "gitea_https_redirect" { resource "kubectl_manifest" "prj_https_redirect" {
yaml_body = <<-EOF yaml_body = <<-EOF
apiVersion: "traefik.containo.us/v1alpha1" apiVersion: "traefik.containo.us/v1alpha1"
kind: "Middleware" kind: "Middleware"
@@ -49,21 +54,22 @@ resource "kubectl_manifest" "gitea_https_redirect" {
EOF EOF
} }
resource "kubectl_manifest" "gitea_ingress" { resource "kubectl_manifest" "prj_ingress" {
force_conflicts = true force_conflicts = true
yaml_body = <<-EOF yaml_body = <<-EOF
apiVersion: "traefik.containo.us/v1alpha1" apiVersion: "networking.k8s.io/v1"
kind: "IngressRoute" kind: "Ingress"
metadata: metadata:
name: "${var.instance}" name: "${var.instance}"
namespace: "${var.namespace}" namespace: "${var.namespace}"
labels: ${jsonencode(local.common-labels)} labels: ${jsonencode(local.common-labels)}
# annotations: annotations:
# "kubernetes.io/ingress.class": "${var.ingress-class}" "traefik.ingress.kubernetes.io/router.middlewares": "${join(",", [for m in local.middlewares : format("%s-%s@kubernetescrd", var.namespace, m)])}"
spec: spec:
entryPoints: ["web","websecure"] ingressClassName: "${var.ingress-class}"
routes: ${jsonencode(local.routes)} rules: ${jsonencode(local.rules)}
tls: tls:
- hosts: ${jsonencode(local.dns-names)}
secretName: "${var.instance}-cert" secretName: "${var.instance}-cert"
EOF EOF
} }

View File

@@ -4,12 +4,12 @@ kind: Secret
metadata: metadata:
name: gitea-init name: gitea-init
labels: labels:
helm.sh/chart: gitea-8.3.0 helm.sh/chart: gitea-8.0.3
app: gitea app: gitea
app.kubernetes.io/name: gitea app.kubernetes.io/name: gitea
app.kubernetes.io/instance: gitea app.kubernetes.io/instance: gitea
app.kubernetes.io/version: "1.19.3" app.kubernetes.io/version: "1.19.1"
version: "1.19.3" version: "1.19.1"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
type: Opaque type: Opaque
stringData: stringData:

View File

@@ -4,12 +4,12 @@ kind: Secret
metadata: metadata:
name: gitea name: gitea
labels: labels:
helm.sh/chart: gitea-8.3.0 helm.sh/chart: gitea-8.0.3
app: gitea app: gitea
app.kubernetes.io/name: gitea app.kubernetes.io/name: gitea
app.kubernetes.io/instance: gitea app.kubernetes.io/instance: gitea
app.kubernetes.io/version: "1.19.3" app.kubernetes.io/version: "1.19.1"
version: "1.19.3" version: "1.19.1"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
type: Opaque type: Opaque
stringData: stringData:

View File

@@ -4,12 +4,12 @@ kind: Service
metadata: metadata:
name: gitea-http name: gitea-http
labels: labels:
helm.sh/chart: gitea-8.3.0 helm.sh/chart: gitea-8.0.3
app: gitea app: gitea
app.kubernetes.io/name: gitea app.kubernetes.io/name: gitea
app.kubernetes.io/instance: gitea app.kubernetes.io/instance: gitea
app.kubernetes.io/version: "1.19.3" app.kubernetes.io/version: "1.19.1"
version: "1.19.3" version: "1.19.1"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
annotations: annotations:
{} {}

View File

@@ -6,7 +6,7 @@ metadata:
namespace: vynil-ci namespace: vynil-ci
labels: labels:
app.kubernetes.io/name: memcached app.kubernetes.io/name: memcached
helm.sh/chart: memcached-6.3.14 helm.sh/chart: memcached-6.3.13
app.kubernetes.io/instance: gitea app.kubernetes.io/instance: gitea
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
annotations: annotations:

View File

@@ -4,12 +4,12 @@ kind: Service
metadata: metadata:
name: gitea-ssh name: gitea-ssh
labels: labels:
helm.sh/chart: gitea-8.3.0 helm.sh/chart: gitea-8.0.3
app: gitea app: gitea
app.kubernetes.io/name: gitea app.kubernetes.io/name: gitea
app.kubernetes.io/instance: gitea app.kubernetes.io/instance: gitea
app.kubernetes.io/version: "1.19.3" app.kubernetes.io/version: "1.19.1"
version: "1.19.3" version: "1.19.1"
app.kubernetes.io/managed-by: Helm app.kubernetes.io/managed-by: Helm
annotations: annotations:
metallb.universe.tf/address-pool: mlb-pool-public metallb.universe.tf/address-pool: mlb-pool-public

View File

@@ -33,6 +33,10 @@ data "kustomization_overlay" "data" {
spec: spec:
template: template:
spec: spec:
volumes:
- name: certs
secret:
secretName: "${var.instance}-cert"
containers: containers:
- name: nextcloud - name: nextcloud
image: "${var.images.nextcloud.registry}/${var.images.nextcloud.repository}:${var.images.nextcloud.tag}" image: "${var.images.nextcloud.registry}/${var.images.nextcloud.repository}:${var.images.nextcloud.tag}"
@@ -58,6 +62,10 @@ data "kustomization_overlay" "data" {
value: "6379" value: "6379"
resources: resources:
{} {}
volumeMounts:
- name: certs
mountPath: /etc/local-ca
readOnly: true
- name: nextcloud-nginx - name: nextcloud-nginx
image: "${var.images.nginx.registry}/${var.images.nginx.repository}:${var.images.nginx.tag}" image: "${var.images.nginx.registry}/${var.images.nginx.repository}:${var.images.nginx.tag}"
imagePullPolicy: "${var.images.nginx.pullPolicy}" imagePullPolicy: "${var.images.nginx.pullPolicy}"

View File

@@ -6,6 +6,35 @@ metadata:
name: nextcloud name: nextcloud
description: null description: null
options: options:
sub-domain:
default: cloud
examples:
- cloud
type: string
domain-name:
default: your_company.com
examples:
- your_company.com
type: string
storage:
default:
accessMode: ReadWriteOnce
size: 10Gi
examples:
- accessMode: ReadWriteOnce
size: 10Gi
properties:
accessMode:
default: ReadWriteOnce
enum:
- ReadWriteOnce
- ReadOnlyMany
- ReadWriteMany
type: string
size:
default: 10Gi
type: string
type: object
images: images:
default: default:
exporter: exporter:
@@ -109,31 +138,6 @@ options:
type: string type: string
type: object type: object
type: object type: object
sub-domain:
default: cloud
examples:
- cloud
type: string
postgres:
default:
replicas: 1
storage: 5Gi
version: '14'
examples:
- replicas: 1
storage: 5Gi
version: '14'
properties:
replicas:
default: 1
type: integer
storage:
default: 5Gi
type: string
version:
default: '14'
type: string
type: object
hpa: hpa:
default: default:
avg-cpu: 50 avg-cpu: 50
@@ -154,21 +158,46 @@ options:
default: 1 default: 1
type: integer type: integer
type: object type: object
domain-name: postgres:
default: your_company.com default:
replicas: 1
storage: 5Gi
version: '14'
examples: examples:
- your_company.com - replicas: 1
storage: 5Gi
version: '14'
properties:
replicas:
default: 1
type: integer
storage:
default: 5Gi
type: string
version:
default: '14'
type: string
type: object
admin:
default:
name: nextcloud_admin
examples:
- name: nextcloud_admin
properties:
name:
default: nextcloud_admin
type: string
type: object
domain:
default: your-company
examples:
- your-company
type: string type: string
ingress-class: ingress-class:
default: traefik default: traefik
examples: examples:
- traefik - traefik
type: string type: string
domain:
default: your-company
examples:
- your-company
type: string
issuer: issuer:
default: letsencrypt-prod default: letsencrypt-prod
examples: examples:
@@ -207,35 +236,6 @@ options:
default: 2Gi default: 2Gi
type: string type: string
type: object type: object
storage:
default:
accessMode: ReadWriteOnce
size: 10Gi
examples:
- accessMode: ReadWriteOnce
size: 10Gi
properties:
accessMode:
default: ReadWriteOnce
enum:
- ReadWriteOnce
- ReadOnlyMany
- ReadWriteMany
type: string
size:
default: 10Gi
type: string
type: object
admin:
default:
name: nextcloud_admin
examples:
- name: nextcloud_admin
properties:
name:
default: nextcloud_admin
type: string
type: object
dependencies: [] dependencies: []
providers: providers:
kubernetes: true kubernetes: true

View File

@@ -1,3 +1,4 @@
---
# Source: nextcloud/templates/serviceaccount.yaml # Source: nextcloud/templates/serviceaccount.yaml
apiVersion: v1 apiVersion: v1
kind: ServiceAccount kind: ServiceAccount