Adding wookpecker
This commit is contained in:
60
apps/woodpecker/apps_v1_Deployment_woodpecker-agent.yaml
Normal file
60
apps/woodpecker/apps_v1_Deployment_woodpecker-agent.yaml
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
# Source: agent/templates/deployment.yaml
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: woodpecker-agent
|
||||||
|
labels:
|
||||||
|
helm.sh/chart: agent-0.1.5
|
||||||
|
app.kubernetes.io/name: agent
|
||||||
|
app.kubernetes.io/instance: woodpecker-agent
|
||||||
|
app.kubernetes.io/version: "v0.15.9"
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
spec:
|
||||||
|
replicas: 2
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: agent
|
||||||
|
app.kubernetes.io/instance: woodpecker-agent
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: agent
|
||||||
|
app.kubernetes.io/instance: woodpecker-agent
|
||||||
|
spec:
|
||||||
|
serviceAccountName: woodpecker-agent
|
||||||
|
securityContext:
|
||||||
|
{}
|
||||||
|
containers:
|
||||||
|
- name: agent
|
||||||
|
securityContext:
|
||||||
|
{}
|
||||||
|
image: "woodpeckerci/woodpecker-agent:v0.15.9"
|
||||||
|
imagePullPolicy: Always
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 3000
|
||||||
|
protocol: TCP
|
||||||
|
resources:
|
||||||
|
{}
|
||||||
|
env:
|
||||||
|
- name: WOODPECKER_BACKEND
|
||||||
|
value: "kubernetes"
|
||||||
|
- name: WOODPECKER_BACKEND_K8S_NAMESPACE
|
||||||
|
value: "woodpecker"
|
||||||
|
- name: WOODPECKER_BACKEND_K8S_POD_ANNOTATIONS
|
||||||
|
value: ""
|
||||||
|
- name: WOODPECKER_BACKEND_K8S_POD_LABELS
|
||||||
|
value: ""
|
||||||
|
- name: WOODPECKER_BACKEND_K8S_STORAGE_CLASS
|
||||||
|
value: ""
|
||||||
|
- name: WOODPECKER_BACKEND_K8S_STORAGE_RWX
|
||||||
|
value: "true"
|
||||||
|
- name: WOODPECKER_BACKEND_K8S_VOLUME_SIZE
|
||||||
|
value: "10G"
|
||||||
|
- name: WOODPECKER_CONNECT_RETRY_COUNT
|
||||||
|
value: "1"
|
||||||
|
- name: WOODPECKER_SERVER
|
||||||
|
value: "woodpecker-server.<namespace>.svc.cluster.local:9000"
|
||||||
|
envFrom:
|
||||||
|
- secretRef:
|
||||||
|
name: woodpecker-secret
|
||||||
76
apps/woodpecker/apps_v1_StatefulSet_woodpecker-server.yaml
Normal file
76
apps/woodpecker/apps_v1_StatefulSet_woodpecker-server.yaml
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
# Source: server/templates/statefulset.yaml
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: StatefulSet
|
||||||
|
metadata:
|
||||||
|
name: woodpecker-server
|
||||||
|
labels:
|
||||||
|
helm.sh/chart: server-0.1.5
|
||||||
|
app.kubernetes.io/name: server
|
||||||
|
app.kubernetes.io/instance: woodpecker-server
|
||||||
|
app.kubernetes.io/version: "v0.15.9"
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
spec:
|
||||||
|
serviceName: woodpecker-server-headless
|
||||||
|
revisionHistoryLimit: 5
|
||||||
|
replicas: 1
|
||||||
|
updateStrategy:
|
||||||
|
type: RollingUpdate
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: server
|
||||||
|
app.kubernetes.io/instance: woodpecker-server
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
prometheus.io/scrape: "true"
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: server
|
||||||
|
app.kubernetes.io/instance: woodpecker-server
|
||||||
|
spec:
|
||||||
|
serviceAccountName: woodpecker-server
|
||||||
|
securityContext:
|
||||||
|
{}
|
||||||
|
containers:
|
||||||
|
- name: server
|
||||||
|
securityContext:
|
||||||
|
{}
|
||||||
|
image: "docker.io/woodpeckerci/woodpecker-server:v0.15.9"
|
||||||
|
imagePullPolicy: Always
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 8000
|
||||||
|
protocol: TCP
|
||||||
|
- name: grpc
|
||||||
|
containerPort: 9000
|
||||||
|
protocol: TCP
|
||||||
|
livenessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /healthz
|
||||||
|
port: 8000
|
||||||
|
readinessProbe:
|
||||||
|
httpGet:
|
||||||
|
path: /healthz
|
||||||
|
port: 8000
|
||||||
|
resources:
|
||||||
|
{}
|
||||||
|
volumeMounts:
|
||||||
|
- name: data
|
||||||
|
mountPath: /var/lib/woodpecker
|
||||||
|
env:
|
||||||
|
- name: WOODPECKER_ADMIN
|
||||||
|
value: "woodpecker,admin"
|
||||||
|
- name: WOODPECKER_GITEA
|
||||||
|
value: "true"
|
||||||
|
- name: WOODPECKER_HOST
|
||||||
|
value: "https://xxxxxxx"
|
||||||
|
envFrom:
|
||||||
|
- secretRef:
|
||||||
|
name: woodpecker-secret
|
||||||
|
volumeClaimTemplates:
|
||||||
|
- metadata:
|
||||||
|
name: data
|
||||||
|
spec:
|
||||||
|
accessModes: [ "ReadWriteOnce" ]
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 10Gi
|
||||||
17
apps/woodpecker/config_server.tf
Normal file
17
apps/woodpecker/config_server.tf
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
resource "kubectl_manifest" "server_config" {
|
||||||
|
yaml_body = <<-EOF
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: "${var.instance}-${var.component}-server"
|
||||||
|
namespace: "${var.namespace}"
|
||||||
|
labels: ${jsonencode(local.common-labels)}
|
||||||
|
data:
|
||||||
|
WOODPECKER_WEBHOOK_HOST: "http://woodpecker-server.${var.namespace}.svc"
|
||||||
|
WOODPECKER_METRICS_SERVER_ADDR: ":9001"
|
||||||
|
WOODPECKER_OPEN: "true"
|
||||||
|
WOODPECKER_DEFAULT_CLONE_IMAGE: "${var.images.git.registry}/${var.images.git.repository}:${var.images.git.tag}"
|
||||||
|
WOODPECKER_DEFAULT_PIPELINE_TIMEOUT: "60"
|
||||||
|
WOODPECKER_MAX_PIPELINE_TIMEOUT: "120"
|
||||||
|
EOF
|
||||||
|
}
|
||||||
143
apps/woodpecker/datas.tf
Normal file
143
apps/woodpecker/datas.tf
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
locals {
|
||||||
|
dns-name = "${var.sub-domain}.${var.domain-name}"
|
||||||
|
common-labels = {
|
||||||
|
"vynil.solidite.fr/owner-name" = var.instance
|
||||||
|
"vynil.solidite.fr/owner-namespace" = var.namespace
|
||||||
|
"vynil.solidite.fr/owner-category" = var.category
|
||||||
|
"vynil.solidite.fr/owner-component" = var.component
|
||||||
|
"app.kubernetes.io/managed-by" = "vynil"
|
||||||
|
"app.kubernetes.io/name" = var.component
|
||||||
|
"app.kubernetes.io/instance" = var.instance
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
data "kustomization_overlay" "data" {
|
||||||
|
namespace = var.namespace
|
||||||
|
common_labels = local.common-labels
|
||||||
|
resources = [for file in fileset(path.module, "*.yaml"): file if file != "index.yaml"]
|
||||||
|
patches {
|
||||||
|
target {
|
||||||
|
kind = "Deployment"
|
||||||
|
name = "woodpecker-agent"
|
||||||
|
}
|
||||||
|
patch = <<-EOF
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: woodpecker-agent
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/component: agent
|
||||||
|
spec:
|
||||||
|
replicas: 2
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/component: agent
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/component: agent
|
||||||
|
spec:
|
||||||
|
serviceAccountName: woodpecker-agent
|
||||||
|
containers:
|
||||||
|
- name: agent
|
||||||
|
image: "${var.images.nextcloud.registry}/${var.images.nextcloud.repository}:${var.images.nextcloud.tag}"
|
||||||
|
imagePullPolicy: "${var.images.nextcloud.pullPolicy}"
|
||||||
|
env:
|
||||||
|
- name: WOODPECKER_BACKEND_K8S_NAMESPACE
|
||||||
|
value: "${var.namespace}"
|
||||||
|
- name: WOODPECKER_BACKEND_K8S_STORAGE_CLASS
|
||||||
|
value: "${var.storage-agent.storageClass}"
|
||||||
|
- name: WOODPECKER_BACKEND_K8S_STORAGE_RWX
|
||||||
|
value: "${var.storage-agent.writeMany}"
|
||||||
|
- name: WOODPECKER_BACKEND_K8S_VOLUME_SIZE
|
||||||
|
value: "${var.storage-agent.size}"
|
||||||
|
- name: WOODPECKER_SERVER
|
||||||
|
value: "woodpecker-server.${var.namespace}.svc:9000"
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
patches {
|
||||||
|
target {
|
||||||
|
kind = "Service"
|
||||||
|
name = "woodpecker-server"
|
||||||
|
}
|
||||||
|
patch = <<-EOF
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: woodpecker-server
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/component: server
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app.kubernetes.io/name: ${var.component}
|
||||||
|
app.kubernetes.io/instance: ${var.instance}
|
||||||
|
app.kubernetes.io/component: server
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
patches {
|
||||||
|
target {
|
||||||
|
kind = "Service"
|
||||||
|
name = "woodpecker-server-headless"
|
||||||
|
}
|
||||||
|
patch = <<-EOF
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: woodpecker-server-headless
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/component: server
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
app.kubernetes.io/name: ${var.component}
|
||||||
|
app.kubernetes.io/instance: ${var.instance}
|
||||||
|
app.kubernetes.io/component: server
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
patches {
|
||||||
|
target {
|
||||||
|
kind = "StatefulSet"
|
||||||
|
name = "woodpecker-server"
|
||||||
|
}
|
||||||
|
patch = <<-EOF
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: StatefulSet
|
||||||
|
metadata:
|
||||||
|
name: woodpecker-server
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/component: server
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: ${var.component}
|
||||||
|
app.kubernetes.io/instance: ${var.instance}
|
||||||
|
app.kubernetes.io/component: server
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: ${var.component}
|
||||||
|
app.kubernetes.io/instance: ${var.instance}
|
||||||
|
app.kubernetes.io/component: server
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: server
|
||||||
|
image: "${var.images.server.registry}/${var.images.server.repository}:${var.images.server.tag}"
|
||||||
|
imagePullPolicy: "${var.images.server.pullPolicy}"
|
||||||
|
env:
|
||||||
|
- name: WOODPECKER_HOST
|
||||||
|
value: "https://${var.sub-domain}.${var.domain-name}"
|
||||||
|
envFrom:
|
||||||
|
- secretRef:
|
||||||
|
name: "${var.component}-${var.instance}-gitea"
|
||||||
|
- configMapKeyRef:
|
||||||
|
name: "${var.instance}-${var.component}-server"
|
||||||
|
volumeClaimTemplates:
|
||||||
|
- metadata:
|
||||||
|
name: data
|
||||||
|
spec:
|
||||||
|
accessModes: [ "${var.storage-server.accessMode}" ]
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: ${var.storage-server.size}
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
}
|
||||||
47
apps/woodpecker/gitea_token.tf
Normal file
47
apps/woodpecker/gitea_token.tf
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
terraform {
|
||||||
|
required_providers {
|
||||||
|
gitea = {
|
||||||
|
source = "Lerentis/gitea"
|
||||||
|
version = "0.16.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
data "kubernetes_secret_v1" "gitea" {
|
||||||
|
metadata {
|
||||||
|
name = "gitea-admin-user"
|
||||||
|
namespace = "${var.domain}-ci"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
data "kubernetes_ingress_v1" "gitea" {
|
||||||
|
metadata {
|
||||||
|
name = "gitea"
|
||||||
|
namespace = "${var.domain}-ci"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
provider "gitea" {
|
||||||
|
base_url = "http://gitea-http.${var.domain}-ci.svc"
|
||||||
|
username = data.kubernetes_secret_v1.gitea.data["username"]
|
||||||
|
password = data.kubernetes_secret_v1.gitea.data["password"]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "gitea_oauth2_app" "prj" {
|
||||||
|
name = var.component
|
||||||
|
redirect_uris = [
|
||||||
|
"https://${var.sub-domain}.${var.domain-name}/authorize"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "kubernetes_secret_v1" "oauth2-client-gitea" {
|
||||||
|
metadata {
|
||||||
|
name = "${var.component}-${var.instance}-gitea"
|
||||||
|
namespace = var.namespace
|
||||||
|
}
|
||||||
|
data = {
|
||||||
|
"WOODPECKER_GITEA_URL" = "https://${data.kubernetes_ingress_v1.gitea.spec[0].rule[0].host}"
|
||||||
|
"WOODPECKER_GITEA_CLIENT" = gitea_oauth2_app.prj.client_id
|
||||||
|
"WOODPECKER_GITEA_SECRET" = gitea_oauth2_app.prj.client_secret
|
||||||
|
}
|
||||||
|
}
|
||||||
178
apps/woodpecker/index.yaml
Normal file
178
apps/woodpecker/index.yaml
Normal file
@@ -0,0 +1,178 @@
|
|||||||
|
---
|
||||||
|
apiVersion: vinyl.solidite.fr/v1beta1
|
||||||
|
kind: Component
|
||||||
|
category: apps
|
||||||
|
metadata:
|
||||||
|
name: woodpecker
|
||||||
|
description: null
|
||||||
|
options:
|
||||||
|
domain:
|
||||||
|
default: your-company
|
||||||
|
examples:
|
||||||
|
- your-company
|
||||||
|
type: string
|
||||||
|
images:
|
||||||
|
default:
|
||||||
|
agent:
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
registry: docker.io
|
||||||
|
repository: woodpeckerci/woodpecker-agent
|
||||||
|
tag: v1.0.0-alpine
|
||||||
|
git:
|
||||||
|
registry: docker.io
|
||||||
|
repository: wowoodpeckerci/plugin-git
|
||||||
|
tag: 2.1.0
|
||||||
|
server:
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
registry: docker.io
|
||||||
|
repository: woodpeckerci/woodpecker-server
|
||||||
|
tag: v1.0.0-alpine
|
||||||
|
examples:
|
||||||
|
- agent:
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
registry: docker.io
|
||||||
|
repository: woodpeckerci/woodpecker-agent
|
||||||
|
tag: v1.0.0-alpine
|
||||||
|
git:
|
||||||
|
registry: docker.io
|
||||||
|
repository: wowoodpeckerci/plugin-git
|
||||||
|
tag: 2.1.0
|
||||||
|
server:
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
registry: docker.io
|
||||||
|
repository: woodpeckerci/woodpecker-server
|
||||||
|
tag: v1.0.0-alpine
|
||||||
|
properties:
|
||||||
|
agent:
|
||||||
|
default:
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
registry: docker.io
|
||||||
|
repository: woodpeckerci/woodpecker-agent
|
||||||
|
tag: v1.0.0-alpine
|
||||||
|
properties:
|
||||||
|
pullPolicy:
|
||||||
|
default: IfNotPresent
|
||||||
|
enum:
|
||||||
|
- Always
|
||||||
|
- Never
|
||||||
|
- IfNotPresent
|
||||||
|
type: string
|
||||||
|
registry:
|
||||||
|
default: docker.io
|
||||||
|
type: string
|
||||||
|
repository:
|
||||||
|
default: woodpeckerci/woodpecker-agent
|
||||||
|
type: string
|
||||||
|
tag:
|
||||||
|
default: v1.0.0-alpine
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
git:
|
||||||
|
default:
|
||||||
|
registry: docker.io
|
||||||
|
repository: wowoodpeckerci/plugin-git
|
||||||
|
tag: 2.1.0
|
||||||
|
properties:
|
||||||
|
registry:
|
||||||
|
default: docker.io
|
||||||
|
type: string
|
||||||
|
repository:
|
||||||
|
default: wowoodpeckerci/plugin-git
|
||||||
|
type: string
|
||||||
|
tag:
|
||||||
|
default: 2.1.0
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
server:
|
||||||
|
default:
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
registry: docker.io
|
||||||
|
repository: woodpeckerci/woodpecker-server
|
||||||
|
tag: v1.0.0-alpine
|
||||||
|
properties:
|
||||||
|
pullPolicy:
|
||||||
|
default: IfNotPresent
|
||||||
|
enum:
|
||||||
|
- Always
|
||||||
|
- Never
|
||||||
|
- IfNotPresent
|
||||||
|
type: string
|
||||||
|
registry:
|
||||||
|
default: docker.io
|
||||||
|
type: string
|
||||||
|
repository:
|
||||||
|
default: woodpeckerci/woodpecker-server
|
||||||
|
type: string
|
||||||
|
tag:
|
||||||
|
default: v1.0.0-alpine
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
type: object
|
||||||
|
domain-name:
|
||||||
|
default: your_company.com
|
||||||
|
examples:
|
||||||
|
- your_company.com
|
||||||
|
type: string
|
||||||
|
ingress-class:
|
||||||
|
default: traefik
|
||||||
|
examples:
|
||||||
|
- traefik
|
||||||
|
type: string
|
||||||
|
sub-domain:
|
||||||
|
default: ci
|
||||||
|
examples:
|
||||||
|
- ci
|
||||||
|
type: string
|
||||||
|
storage-agent:
|
||||||
|
default:
|
||||||
|
size: 10Gi
|
||||||
|
storageClass: ''
|
||||||
|
writeMany: 'false'
|
||||||
|
examples:
|
||||||
|
- size: 10Gi
|
||||||
|
storageClass: ''
|
||||||
|
writeMany: 'false'
|
||||||
|
properties:
|
||||||
|
size:
|
||||||
|
default: 10Gi
|
||||||
|
type: string
|
||||||
|
storageClass:
|
||||||
|
default: ''
|
||||||
|
type: string
|
||||||
|
writeMany:
|
||||||
|
default: 'false'
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
storage-server:
|
||||||
|
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
|
||||||
|
issuer:
|
||||||
|
default: letsencrypt-prod
|
||||||
|
examples:
|
||||||
|
- letsencrypt-prod
|
||||||
|
type: string
|
||||||
|
dependencies: []
|
||||||
|
providers:
|
||||||
|
kubernetes: true
|
||||||
|
authentik: true
|
||||||
|
kubectl: null
|
||||||
|
postgresql: null
|
||||||
|
restapi: null
|
||||||
|
http: null
|
||||||
|
tfaddtype: null
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
# Source: agent/templates/rolebinding.yaml
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: RoleBinding
|
||||||
|
metadata:
|
||||||
|
name: woodpecker-agent
|
||||||
|
labels:
|
||||||
|
helm.sh/chart: agent-0.1.5
|
||||||
|
app.kubernetes.io/name: agent
|
||||||
|
app.kubernetes.io/instance: woodpecker-agent
|
||||||
|
app.kubernetes.io/version: "v0.15.9"
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: woodpecker-agent
|
||||||
|
namespace: vynil-ci
|
||||||
|
roleRef:
|
||||||
|
kind: Role
|
||||||
|
name: woodpecker-agent
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
# Source: agent/templates/role.yaml
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1
|
||||||
|
kind: Role
|
||||||
|
metadata:
|
||||||
|
name: woodpecker-agent
|
||||||
|
labels:
|
||||||
|
helm.sh/chart: agent-0.1.5
|
||||||
|
app.kubernetes.io/name: agent
|
||||||
|
app.kubernetes.io/instance: woodpecker-agent
|
||||||
|
app.kubernetes.io/version: "v0.15.9"
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
rules:
|
||||||
|
- apiGroups: [''] # '' indicates core apiGroup (don't remove)
|
||||||
|
resources: ['persistentvolumeclaims']
|
||||||
|
verbs: ['create','delete']
|
||||||
|
- apiGroups: ['']
|
||||||
|
resources: ['services']
|
||||||
|
verbs: ['create','delete']
|
||||||
|
- apiGroups: ['']
|
||||||
|
resources:
|
||||||
|
- pods
|
||||||
|
- pods/log
|
||||||
|
verbs: ['watch','create','delete','get','list']
|
||||||
17
apps/woodpecker/secret.tf
Normal file
17
apps/woodpecker/secret.tf
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
|
||||||
|
resource "kubectl_manifest" "prj_secret" {
|
||||||
|
ignore_fields = ["metadata.annotations"]
|
||||||
|
yaml_body = <<-EOF
|
||||||
|
apiVersion: "secretgenerator.mittwald.de/v1alpha1"
|
||||||
|
kind: "StringSecret"
|
||||||
|
metadata:
|
||||||
|
name: "${var.component}-secret"
|
||||||
|
namespace: "${var.namespace}"
|
||||||
|
labels: ${jsonencode(local.common-labels)}
|
||||||
|
spec:
|
||||||
|
forceRegenerate: false
|
||||||
|
fields:
|
||||||
|
- fieldName: "WOODPECKER_AGENT_SECRET"
|
||||||
|
length: "32"
|
||||||
|
EOF
|
||||||
|
}
|
||||||
12
apps/woodpecker/v1_ServiceAccount_woodpecker-agent.yaml
Normal file
12
apps/woodpecker/v1_ServiceAccount_woodpecker-agent.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
# Source: agent/templates/serviceaccount.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: woodpecker-agent
|
||||||
|
labels:
|
||||||
|
helm.sh/chart: agent-0.1.5
|
||||||
|
app.kubernetes.io/name: agent
|
||||||
|
app.kubernetes.io/instance: woodpecker-agent
|
||||||
|
app.kubernetes.io/version: "v0.15.9"
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
12
apps/woodpecker/v1_ServiceAccount_woodpecker-server.yaml
Normal file
12
apps/woodpecker/v1_ServiceAccount_woodpecker-server.yaml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
---
|
||||||
|
# Source: server/templates/serviceaccount.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: woodpecker-server
|
||||||
|
labels:
|
||||||
|
helm.sh/chart: server-0.1.5
|
||||||
|
app.kubernetes.io/name: server
|
||||||
|
app.kubernetes.io/instance: woodpecker-server
|
||||||
|
app.kubernetes.io/version: "v0.15.9"
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
25
apps/woodpecker/v1_Service_woodpecker-server-headless.yaml
Normal file
25
apps/woodpecker/v1_Service_woodpecker-server-headless.yaml
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
# Source: server/templates/service-headless.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: woodpecker-server-headless
|
||||||
|
labels:
|
||||||
|
helm.sh/chart: server-0.1.5
|
||||||
|
app.kubernetes.io/name: server
|
||||||
|
app.kubernetes.io/instance: woodpecker-server
|
||||||
|
app.kubernetes.io/version: "v0.15.9"
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
spec:
|
||||||
|
clusterIP: None
|
||||||
|
ports:
|
||||||
|
- protocol: TCP
|
||||||
|
name: http
|
||||||
|
port: 80
|
||||||
|
targetPort: 8000
|
||||||
|
- protocol: TCP
|
||||||
|
name: grpc
|
||||||
|
port: 9000
|
||||||
|
targetPort: 9000
|
||||||
|
selector:
|
||||||
|
app.kubernetes.io/name: server
|
||||||
|
app.kubernetes.io/instance: woodpecker-server
|
||||||
25
apps/woodpecker/v1_Service_woodpecker-server.yaml
Normal file
25
apps/woodpecker/v1_Service_woodpecker-server.yaml
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
# Source: server/templates/service.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: woodpecker-server
|
||||||
|
labels:
|
||||||
|
helm.sh/chart: server-0.1.5
|
||||||
|
app.kubernetes.io/name: server
|
||||||
|
app.kubernetes.io/instance: woodpecker-server
|
||||||
|
app.kubernetes.io/version: "v0.15.9"
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
ports:
|
||||||
|
- protocol: TCP
|
||||||
|
name: http
|
||||||
|
port: 80
|
||||||
|
targetPort: 8000
|
||||||
|
- protocol: TCP
|
||||||
|
name: grpc
|
||||||
|
port: 9000
|
||||||
|
targetPort: 9000
|
||||||
|
selector:
|
||||||
|
app.kubernetes.io/name: server
|
||||||
|
app.kubernetes.io/instance: woodpecker-server
|
||||||
@@ -13,6 +13,7 @@ locals {
|
|||||||
"ingress-class" = var.ingress-class
|
"ingress-class" = var.ingress-class
|
||||||
}
|
}
|
||||||
gitea = { for k, v in var.gitea : k => v if k!="enable" }
|
gitea = { for k, v in var.gitea : k => v if k!="enable" }
|
||||||
|
woodpecker = { for k, v in var.woodpecker : k => v if k!="enable" }
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "kubernetes_namespace_v1" "ci-ns" {
|
resource "kubernetes_namespace_v1" "ci-ns" {
|
||||||
@@ -41,3 +42,21 @@ resource "kubectl_manifest" "gitea" {
|
|||||||
options: ${jsonencode(merge(local.global, local.gitea))}
|
options: ${jsonencode(merge(local.global, local.gitea))}
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
|
resource "kubectl_manifest" "woodpecker" {
|
||||||
|
count = var.woodpecker.enable ? 1 : 0
|
||||||
|
depends_on = [kubernetes_namespace_v1.ci-ns]
|
||||||
|
yaml_body = <<-EOF
|
||||||
|
apiVersion: "vynil.solidite.fr/v1"
|
||||||
|
kind: "Install"
|
||||||
|
metadata:
|
||||||
|
name: "woodpecker"
|
||||||
|
namespace: "${var.namespace}-ci"
|
||||||
|
labels: ${jsonencode(local.common-labels)}
|
||||||
|
spec:
|
||||||
|
distrib: "${var.distributions.domain}"
|
||||||
|
category: "apps"
|
||||||
|
component: "woodpecker"
|
||||||
|
options: ${jsonencode(merge(local.global, local.woodpecker))}
|
||||||
|
EOF
|
||||||
|
}
|
||||||
|
|||||||
@@ -6,6 +6,31 @@ metadata:
|
|||||||
name: domain-ci
|
name: domain-ci
|
||||||
description: null
|
description: null
|
||||||
options:
|
options:
|
||||||
|
woodpecker:
|
||||||
|
default:
|
||||||
|
enable: true
|
||||||
|
examples:
|
||||||
|
- enable: true
|
||||||
|
properties:
|
||||||
|
enable:
|
||||||
|
default: true
|
||||||
|
type: boolean
|
||||||
|
type: object
|
||||||
|
domain:
|
||||||
|
default: your-company
|
||||||
|
examples:
|
||||||
|
- your-company
|
||||||
|
type: string
|
||||||
|
gitea:
|
||||||
|
default:
|
||||||
|
enable: true
|
||||||
|
examples:
|
||||||
|
- enable: true
|
||||||
|
properties:
|
||||||
|
enable:
|
||||||
|
default: true
|
||||||
|
type: boolean
|
||||||
|
type: object
|
||||||
domain-name:
|
domain-name:
|
||||||
default: your_company.com
|
default: your_company.com
|
||||||
examples:
|
examples:
|
||||||
@@ -16,11 +41,6 @@ options:
|
|||||||
examples:
|
examples:
|
||||||
- letsencrypt-prod
|
- letsencrypt-prod
|
||||||
type: string
|
type: string
|
||||||
domain:
|
|
||||||
default: your-company
|
|
||||||
examples:
|
|
||||||
- your-company
|
|
||||||
type: string
|
|
||||||
ingress-class:
|
ingress-class:
|
||||||
default: traefik
|
default: traefik
|
||||||
examples:
|
examples:
|
||||||
@@ -41,16 +61,6 @@ options:
|
|||||||
default: domain
|
default: domain
|
||||||
type: string
|
type: string
|
||||||
type: object
|
type: object
|
||||||
gitea:
|
|
||||||
default:
|
|
||||||
enable: true
|
|
||||||
examples:
|
|
||||||
- enable: true
|
|
||||||
properties:
|
|
||||||
enable:
|
|
||||||
default: true
|
|
||||||
type: boolean
|
|
||||||
type: object
|
|
||||||
dependencies: []
|
dependencies: []
|
||||||
providers:
|
providers:
|
||||||
kubernetes: true
|
kubernetes: true
|
||||||
@@ -59,3 +69,4 @@ providers:
|
|||||||
postgresql: null
|
postgresql: null
|
||||||
restapi: null
|
restapi: null
|
||||||
http: null
|
http: null
|
||||||
|
tfaddtype: null
|
||||||
|
|||||||
Reference in New Issue
Block a user