برنامه نویسی
انبار راه دور Git خود را در K8s بسازید

- 1. ابتدا مشکل تداوم را حل کنید
یک دایرکتوری persistence، میزبان (سرور) در کانتینر Kind ایجاد کنید و دستور زیر را اجرا کنید:
docker exec -it dbe0bb145add mkdir -p /data/gitea
بررسی کنید که آیا تأیید موفقیت آمیز است یا خیر
(base) [root@ip-10-242-18-237 ec2-user]# docker exec -it dbe0bb145add ls /data/
docker gitea jenkins
یک حجم پایدار ایجاد کنید
apiVersion: v1
kind: PersistentVolume
metadata:
name: gitea-pv-volume
labels:
type: local
spec:
storageClassName: standard
claimRef:
name: gitea-pv-claim
namespace: devops-tools
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
local:
path: /data/gitea
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- spiders-control-plane
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: gitea-pv-claim
namespace: devops-tools
spec:
storageClassName: standard
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
- 2. استقرار انبار gitea
اگر وابستگی به پایگاه داده وجود دارد، ابتدا پایگاه داده را مستقر کنید.
apiVersion: apps/v1
kind: Deployment
metadata:
name: gitea-postgres
spec:
replicas: 1
selector:
matchLabels:
app: gitea-postgres
template:
metadata:
labels:
app: gitea-postgres
spec:
containers:
- name: postgres
image: postgres:13
env:
- name: POSTGRES_DB
value: "gitea"
- name: POSTGRES_USER
value: "gitea"
- name: POSTGRES_PASSWORD
value: "666"
ports:
- containerPort: 5432
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: postgres-storage
volumes:
- name: postgres-storage
persistentVolumeClaim:
claimName: gitea-pv-claim
---
apiVersion: v1
kind: Service
metadata:
name: gitea-postgres
labels:
app: gitea-postgres
spec:
ports:
- port: 5432
selector:
app: gitea-postgres
سرویس Gitea را مستقر کنید
apiVersion: apps/v1
kind: Deployment
metadata:
name: gitea
spec:
replicas: 1
selector:
matchLabels:
app: gitea
template:
metadata:
labels:
app: gitea
spec:
initContainers:
- name: init-permissions
image: busybox
command: ["sh", "-c", "chown -R 1000:1000 /data/gitea"]
volumeMounts:
- name: gitea-storage
mountPath: /data/gitea
containers:
- name: gitea
image: gitea/gitea:1.16.0
env:
- name: USER_UID
value: "1000"
- name: USER_GID
value: "1000"
- name: GITEA__database__DB_TYPE
value: "postgres"
- name: GITEA__database__HOST
value: "gitea-postgres:5432"
- name: GITEA__database__NAME
value: "gitea"
- name: GITEA__database__USER
value: "gitea"
- name: GITEA__database__PASSWD
value: "666"
ports:
- containerPort: 3000
- containerPort: 22
volumeMounts:
- mountPath: /data
name: gitea-storage
readOnly: false
volumes:
- name: gitea-storage
persistentVolumeClaim:
claimName: gitea-pv-claim
---
apiVersion: v1
kind: Service
metadata:
name: gitea
labels:
app: gitea
spec:
ports:
- name: http
port: 3000
targetPort: 3000
- name: ssh
port: 96
targetPort: 22
selector:
app: gitea
- 3. آزمایش کنید که آیا سرویس انبار راه دور Git با موفقیت اجرا شده است یا خیر
دسترسی بر اساس IP در خوشه ارائه شده توسط سرویس: http://10.96.126.83:3000
نتیجه: آزمون درون خوشه ای قبول شد!
- 4. مسیریابی Nginx را طوری پیکربندی کنید که بتوان به مخزن راه دور Git در خارج از خوشه دسترسی داشت.