在 Kubernetes 中部署一个 Git 服务器(例如 GitLab 或 Gitea)可以通过创建一个 Pod 来实现。不过,通常更推荐使用 Helm chart 或者 Operator 来进行这样的部署,因为这些工具可以帮助管理复杂的配置和依赖关系。
以下是一个简单的示例,展示如何在 Kubernetes 中使用一个 Pod 来运行 Gitea,这是一个轻量级的 Git 服务器:
1. 创建一个命名空间(可选)
首先,建议在 Kubernetes 中创建一个新的命名空间来组织资源:
kubectl create namespace git
2. 创建一个持久化存储卷
Git 服务器通常需要持久化存储来保存仓库数据。以下是一个简单的 PersistentVolumeClaim
示例:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: gitea-pvc
namespace: git
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
应用这个配置:
kubectl apply -f gitea-pvc.yaml
3. 创建 Gitea Pod 和 Service
以下是一个简单的 Pod 和 Service 配置示例:
注意 这里由于集群内没有公网,我这边是本地pull gitea 镜像 推到远端hub上 具体可以参考我上一篇文章
《本地的 Docker 镜像上传到远程服务器上的 Docker 环境》
https://blog.csdn.net/weixin_43474841/article/details/144285723?spm=1001.2014.3001.5501
apiVersion: v1
kind: Pod
metadata:
name: gitea
namespace: git
spec:
containers:
- name: gitea
image: gitea/gitea:latest
ports:
- containerPort: 3000
volumeMounts:
- mountPath: "/data"
name: gitea-data
volumes:
- name: gitea-data
persistentVolumeClaim:
claimName: gitea-pvc
---
apiVersion: v1
kind: Service
metadata:
name: gitea
namespace: git
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 3000
selector:
app: gitea
应用这个配置:
kubectl apply -f gitea-pod-service.yaml
4. 访问 Gitea
为了从集群外部访问 Gitea,你可以使用 kubectl port-forward
或者创建一个 Ingress
资源。
使用 kubectl port-forward
:
kubectl port-forward pod/gitea 8080:3000 -n git
现在可以通过 http://localhost:8080
访问 Gitea。
使用 Ingress(假设集群中有 Ingress 控制器):
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: gitea
namespace: git
spec:
rules:
- host: gitea.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: gitea
port:
number: 80
应用这个配置:
kubectl apply -f gitea-ingress.yaml
确保 DNS 已配置,将 gitea.example.com
指向你的 Ingress 控制器的地址。
总结
这个示例展示了如何在 Kubernetes 中手动部署一个简单的 Gitea 实例。对于生产环境,建议使用 Helm charts 或 Operator 来简化管理和升级过程。