init
This commit is contained in:
30
gitea/deployment.yml
Normal file
30
gitea/deployment.yml
Normal file
@ -0,0 +1,30 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: gitea
|
||||
labels:
|
||||
app: gitea
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: gitea
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: gitea
|
||||
spec:
|
||||
containers:
|
||||
- name: gitea
|
||||
image: registry.hub.docker.com/gitea/gitea:latest
|
||||
imagePullPolicy: Always
|
||||
ports:
|
||||
- name: web
|
||||
containerPort: 3000
|
||||
volumeMounts:
|
||||
- name: gitea-data
|
||||
mountPath: /data
|
||||
volumes:
|
||||
- name: gitea-data
|
||||
persistentVolumeClaim:
|
||||
claimName: gitea-storage
|
30
gitea/service.yml
Normal file
30
gitea/service.yml
Normal file
@ -0,0 +1,30 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: gitea
|
||||
|
||||
spec:
|
||||
ports:
|
||||
- name: web
|
||||
port: 3000
|
||||
targetPort: web
|
||||
|
||||
selector:
|
||||
app: gitea
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: gitea-ingress
|
||||
spec:
|
||||
rules:
|
||||
- host: gitea.k8s.example.com
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: gitea
|
||||
port:
|
||||
number: 3000
|
10
gitea/storage.yml
Normal file
10
gitea/storage.yml
Normal file
@ -0,0 +1,10 @@
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: gitea-storage
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 4Gi
|
23
hello-world/deployment.yml
Normal file
23
hello-world/deployment.yml
Normal file
@ -0,0 +1,23 @@
|
||||
kind: Deployment
|
||||
apiVersion: apps/v1
|
||||
metadata:
|
||||
name: hello-world
|
||||
labels:
|
||||
app: hello-world
|
||||
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
app: hello-world
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: hello-world
|
||||
spec:
|
||||
containers:
|
||||
- name: hello-world
|
||||
image: registry.hub.docker.com/lmmendes/http-hello-world
|
||||
ports:
|
||||
- name: web
|
||||
containerPort: 80
|
31
hello-world/service.yml
Normal file
31
hello-world/service.yml
Normal file
@ -0,0 +1,31 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: hello-world
|
||||
|
||||
spec:
|
||||
ports:
|
||||
- name: web
|
||||
port: 80
|
||||
targetPort: web
|
||||
|
||||
selector:
|
||||
app: hello-world
|
||||
---
|
||||
apiVersion: networking.k8s.io/v1
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: hello-world-ingress
|
||||
spec:
|
||||
ingressClassName: traefik
|
||||
rules:
|
||||
- host: hello-world.k8s.example.com
|
||||
http:
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
backend:
|
||||
service:
|
||||
name: hello-world
|
||||
port:
|
||||
name: web
|
38
runner/config.yml
Normal file
38
runner/config.yml
Normal file
@ -0,0 +1,38 @@
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: gitea-runner
|
||||
data:
|
||||
config: |
|
||||
log:
|
||||
level: info
|
||||
runner:
|
||||
# Where to store the registration result.
|
||||
file: /data/.runner
|
||||
# Execute how many tasks concurrently at the same time.
|
||||
capacity: 1
|
||||
# Extra environment variables to run jobs.
|
||||
envs:
|
||||
ACT_RUNNER_SEC: test-runner-1
|
||||
env_file: .env
|
||||
timeout: 3h
|
||||
insecure: true
|
||||
fetch_timeout: 5s
|
||||
fetch_interval: 3s
|
||||
labels: []
|
||||
cache:
|
||||
enabled: false
|
||||
dir: ""
|
||||
host: ""
|
||||
port: 0
|
||||
external_server: ""
|
||||
container:
|
||||
network: ""
|
||||
privileged: false
|
||||
options:
|
||||
workdir_parent:
|
||||
valid_volumes: []
|
||||
docker_host: ""
|
||||
force_pull: false
|
||||
host:
|
||||
workdir_parent:
|
75
runner/deployment.yml
Normal file
75
runner/deployment.yml
Normal file
@ -0,0 +1,75 @@
|
||||
apiVersion: apps/v1
|
||||
kind: StatefulSet
|
||||
metadata:
|
||||
name: gitea-runner
|
||||
spec:
|
||||
serviceName: "gitea-runner-service"
|
||||
selector:
|
||||
matchLabels:
|
||||
app: gitea-runner
|
||||
replicas: 1
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
app: gitea-runner
|
||||
spec:
|
||||
containers:
|
||||
- name: gitea-runner-dind
|
||||
securityContext:
|
||||
privileged: true
|
||||
image: docker:dind
|
||||
env:
|
||||
- name: DOCKER_DRIVER
|
||||
value: "overlay2"
|
||||
- name: DOCKER_TLS_CERTDIR
|
||||
value: ""
|
||||
volumeMounts:
|
||||
- name: docker-socket
|
||||
mountPath: "/var/run"
|
||||
- name: gitea-runner
|
||||
image: gitea/act_runner:nightly
|
||||
env:
|
||||
# FIXME: use secret
|
||||
- name: GITEA_RUNNER_REGISTRATION_TOKEN
|
||||
value: "MPAEFqYGNTXhkmgJFMyakT58epIpQMfxQ6d20yyb"
|
||||
- name: GITEA_INSTANCE_URL
|
||||
value: "http://gitea.k8s.example.com:30429/"
|
||||
- name: CONFIG_FILE
|
||||
value: "/config/config.yaml"
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: "/config"
|
||||
readOnly: true
|
||||
- name: runner-data
|
||||
mountPath: "/data"
|
||||
- name: docker-socket
|
||||
mountPath: "/var/run"
|
||||
# FIXME: use socat
|
||||
startupProbe:
|
||||
exec:
|
||||
command: ["/bin/sh", "-c", "sleep 10"]
|
||||
timeoutSeconds: 12
|
||||
volumes:
|
||||
- name: config
|
||||
configMap:
|
||||
name: gitea-runner
|
||||
items:
|
||||
- key: "config"
|
||||
path: "config.yaml"
|
||||
volumeClaimTemplates:
|
||||
- metadata:
|
||||
name: runner-data
|
||||
spec:
|
||||
accessModes:
|
||||
- "ReadWriteOncePod"
|
||||
resources:
|
||||
requests:
|
||||
storage: 256Mi
|
||||
- metadata:
|
||||
name: docker-socket
|
||||
spec:
|
||||
accessModes:
|
||||
- "ReadWriteOncePod"
|
||||
resources:
|
||||
requests:
|
||||
storage: 256Mi
|
11
runner/storage.yml
Normal file
11
runner/storage.yml
Normal file
@ -0,0 +1,11 @@
|
||||
# runner cache
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: gitea-runner-storage
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 4Gi
|
30
traefik/config.yml
Normal file
30
traefik/config.yml
Normal file
@ -0,0 +1,30 @@
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: traefik
|
||||
data:
|
||||
config: |
|
||||
api:
|
||||
insecure: true
|
||||
dashboard: true
|
||||
|
||||
ping: {}
|
||||
|
||||
providers:
|
||||
kubernetesingress: {}
|
||||
|
||||
entryPoints:
|
||||
web:
|
||||
address: :80
|
||||
http:
|
||||
# redirections:
|
||||
# entryPoint:
|
||||
# to: websecure
|
||||
# scheme: https
|
||||
# permanent: false
|
||||
# http3: {}
|
||||
websecure:
|
||||
address: :443
|
||||
http2:
|
||||
maxConcurrentStreams: 16
|
||||
http3: {}
|
49
traefik/deployment.yml
Normal file
49
traefik/deployment.yml
Normal file
@ -0,0 +1,49 @@
|
||||
kind: DaemonSet
|
||||
apiVersion: apps/v1
|
||||
metadata:
|
||||
name: traefik
|
||||
labels:
|
||||
app: traefik
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
name: traefik
|
||||
template:
|
||||
metadata:
|
||||
labels:
|
||||
k8s-app: traefik
|
||||
name: traefik
|
||||
spec:
|
||||
serviceAccountName: traefik-account
|
||||
terminationGracePeriodSeconds: 60
|
||||
containers:
|
||||
- image: traefik:v3.0
|
||||
name: traefik
|
||||
ports:
|
||||
- name: web
|
||||
containerPort: 80
|
||||
hostPort: 80
|
||||
- name: dashboard
|
||||
containerPort: 8080
|
||||
# hostPort: 8080
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: "/config"
|
||||
readOnly: true
|
||||
securityContext:
|
||||
capabilities:
|
||||
drop:
|
||||
- ALL
|
||||
add:
|
||||
- NET_BIND_SERVICE
|
||||
args:
|
||||
- --api.insecure
|
||||
# - --providers.kubernetesingress
|
||||
- --configFile=/config/traefik.yaml
|
||||
volumes:
|
||||
- name: config
|
||||
configMap:
|
||||
name: traefik
|
||||
items:
|
||||
- key: "config"
|
||||
path: "traefik.yaml"
|
52
traefik/role.yml
Normal file
52
traefik/role.yml
Normal file
@ -0,0 +1,52 @@
|
||||
kind: ClusterRole
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: traefik-role
|
||||
|
||||
rules:
|
||||
- apiGroups:
|
||||
- ""
|
||||
resources:
|
||||
- services
|
||||
- endpoints
|
||||
- secrets
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- extensions
|
||||
- networking.k8s.io
|
||||
resources:
|
||||
- ingresses
|
||||
- ingressclasses
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- watch
|
||||
- apiGroups:
|
||||
- extensions
|
||||
- networking.k8s.io
|
||||
resources:
|
||||
- ingresses/status
|
||||
verbs:
|
||||
- update
|
||||
---
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: traefik-account
|
||||
---
|
||||
kind: ClusterRoleBinding
|
||||
apiVersion: rbac.authorization.k8s.io/v1
|
||||
metadata:
|
||||
name: traefik-role-binding
|
||||
|
||||
roleRef:
|
||||
apiGroup: rbac.authorization.k8s.io
|
||||
kind: ClusterRole
|
||||
name: traefik-role
|
||||
subjects:
|
||||
- kind: ServiceAccount
|
||||
name: traefik-account
|
||||
namespace: default
|
Reference in New Issue
Block a user