aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/k8s/gitea.yml
blob: c4aed869f7fe73975e64b5b81e66ce0e41479888 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
apiVersion: v1
kind: Namespace
metadata:
  name: gitea
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: gitea
  namespace: gitea
  labels:
    app: gitea
spec:
  replicas: 1
  template:
    metadata:
      name: gitea
      labels:
        app: gitea
    spec:
      containers:
      - name: gitea
        image: gitea/gitea:latest
        imagePullPolicy: Always
        volumeMounts:
          - mountPath: "/var/lib/gitea"
            name: "root"
          - mountPath: "/data"
            name: "data"
        ports:
          - containerPort: 22
            name: ssh
            protocol: TCP
          - containerPort: 3000
            name: http
            protocol: TCP
      restartPolicy: Always
      volumes:
        # Set up a data directory for gitea
        # For production usage, you should consider using PV/PVC instead(or simply using storage like NAS)
        # For more details, please see https://kubernetes.io/docs/concepts/storage/volumes/
      - name: "root"
        hostPath:
          # directory location on host
          path: "/var/lib/gitea"
          # this field is optional
          type: Directory
      - name: "data"
        hostPath:
          path: "/data/gitea"
          type: Directory
  selector:
    matchLabels:
      app: gitea
---
# Using cluster mode
apiVersion: v1
kind: Service
metadata:
  name: gitea-web
  namespace: gitea
  labels:
    app: gitea-web
spec:
  ports:
  - port: 80
    targetPort: 3000
    name: http
  selector:
    app: gitea
---
# Using node-port mode
# This mainly open a specific TCP port for SSH usage on each host,
# so you can use a proxy layer to handle it(e.g. slb, nginx)
apiVersion: v1
kind: Service
metadata:
  name: gitea-ssh
  namespace: gitea
  labels:
    app: gitea-ssh
spec:
  ports:
  - port: 22
    targetPort: 22
    nodePort: 30022
    name: ssh
  selector:
    app: gitea
  type: NodePort
---
# Ingress is always suitable for HTTP usage,
# we suggest using an proxy layer such as slb to send traffic to different ports.
# Usually 80/443 for web and 22 directly for SSH.
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: gitea
  namespace: gitea
spec:
  rules:
  - host: your-gitea-host.com
    http:
      paths:
      - backend:
          serviceName: gitea-web
          servicePort: 80