This commit is contained in:
zeaslity
2024-10-30 16:30:51 +08:00
commit 437acbeb63
3363 changed files with 653948 additions and 0 deletions

View File

@@ -0,0 +1,24 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
ci/*

View File

@@ -0,0 +1,16 @@
apiVersion: v2
name: minio-pv
description: uavcloud minio pv automate
type: application
version: 1.1.0
appVersion: 2.2.2
keywords:
- uavcloud
- middleware
- template
- minio
- chinamobile

View File

@@ -0,0 +1,6 @@
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: local-storage # 不要修改!
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer

View File

@@ -0,0 +1,92 @@
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: minio-data-pv-1
spec:
capacity:
storage: 5Gi # 不要修改!
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: local-storage
local:
path: /hostStorage/pv1 # 不要修改!
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- 192.168.35.70 # 批量替换这里
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: minio-data-pv-2
spec:
capacity:
storage: 5Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: local-storage
local:
path: /hostStorage/pv2 # 不要修改!
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- 192.168.35.70
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: minio-data-pv-3
spec:
capacity:
storage: 5Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: local-storage
local:
path: /hostStorage/pv3
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- 192.168.35.70
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: minio-data-pv-4
spec:
capacity:
storage: 5Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: local-storage
local:
path: /hostStorage/pv4
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- 192.168.35.70

View File

@@ -0,0 +1,8 @@
apiVersion: v1
data:
accesskey: bEpGOXFKN281VTNQMmlsYg==
secretkey: QTJNNngxbWh2M3VkbDBBa3BER3U3R2RoSmNYaFVLSW4=
kind: Secret
metadata:
name: default-creds-secret
namespace: default

View File

@@ -0,0 +1,9 @@
---
apiVersion: v1
data:
CONSOLE_ACCESS_KEY: bEpGOXFKN281VTNQMmlsYg==
CONSOLE_SECRET_KEY: QTJNNngxbWh2M3VkbDBBa3BER3U3R2RoSmNYaFVLSW4=
kind: Secret
metadata:
name: default-user-1
namespace: default

View File

@@ -0,0 +1,46 @@
apiVersion: minio.min.io/v2
kind: Tenant
metadata:
name: default-minio-config
namespace: default
scheduler:
name: ""
spec:
certConfig: {}
credsSecret:
name: default-creds-secret
image: minio/minio:RELEASE.2022-03-26T06-49-28Z
imagePullSecret: {}
exposeServices: {}
mountPath: /export # 这里随意 写什么都可以
requestAutoCert: false
users:
- name: default-user-1
pools:
- affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- 192.168.35.70 # 修改这里!
servers: 4
volumesPerServer: 1
resources:
requests:
cpu: "1"
memory: 1Gi
volumeClaimTemplate:
apiVersion: v1
kind: persistentvolumeclaims
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: "2000000000" # 2GBi
storageClassName: local-storage

View File

@@ -0,0 +1,21 @@
apiVersion: v1
kind: Service
metadata:
name: minio-oss-nodeport-svc
namespace: eurdeu # 需要修改
spec:
selector:
v1.min.io/tenant: oss-dev # 需要修改
type: NodePort
ports:
- name: 'http-minio'
protocol: TCP
targetPort: 9000
port: 39000
nodePort: 39000 # 需要修改
- name: 'http-console'
protocol: TCP
targetPort: 9090
port: 39090
nodePort: 39090 # 需要修改
sessionAffinity: None

View File

@@ -0,0 +1,41 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: minio-ingress
namespace: default # 需要修改
labels:
cmii.app: minio
cmii.type: middle-ware
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/enable-cors: "true"
nginx.ingress.kubernetes.io/proxy-body-size: "5120m"
spec:
tls:
- hosts:
- oss.dev.uavcmlc.com # 批量替换
- oss-cs.dev.uavcmlc.com # 批量替换
secretName: x.dev.uavcmlc.com-tls
rules:
- host: oss.dev.uavcmlc.com
http:
paths:
- backend:
service:
name: oss-dev-hl
port:
number: 9000
path: /
pathType: ImplementationSpecific
- host: oss-cs.dev.uavcmlc.com
http:
paths:
- backend:
service:
name: oss-dev-console
port:
number: 9090
path: /
pathType: ImplementationSpecific

View File

@@ -0,0 +1,185 @@
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: minio-data-pv-1
spec:
capacity:
storage: 5Gi # 不要修改!
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: local-storage
local:
path: /hostStorage/pv1 # 不要修改!
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- 192.168.8.68 # 批量替换这里
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: minio-data-pv-2
spec:
capacity:
storage: 5Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: local-storage
local:
path: /hostStorage/pv2 # 不要修改!
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- 192.168.8.68
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: minio-data-pv-3
spec:
capacity:
storage: 5Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: local-storage
local:
path: /hostStorage/pv3
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- 192.168.8.68
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: minio-data-pv-4
spec:
capacity:
storage: 5Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: local-storage
local:
path: /hostStorage/pv4
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- 192.168.8.68
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: minio-data-pv-5
spec:
capacity:
storage: 5Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: local-storage
local:
path: /hostStorage/pv5
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- 192.168.8.68
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: minio-data-pv-6
spec:
capacity:
storage: 5Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: local-storage
local:
path: /hostStorage/pv6
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- 192.168.8.68
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: minio-data-pv-7
spec:
capacity:
storage: 5Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: local-storage
local:
path: /hostStorage/pv7
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- 192.168.8.68
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: minio-data-pv-8
spec:
capacity:
storage: 5Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: local-storage
local:
path: /hostStorage/pv8
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- 192.168.8.68
---

View File

@@ -0,0 +1,8 @@
apiVersion: v1
data:
accesskey: b3NzdXNlcg==
secretkey: VGdHaUFIeEYuckBRNg==
kind: Secret
metadata:
name: default-creds-secret
namespace: eurdeu

View File

@@ -0,0 +1,9 @@
---
apiVersion: v1
data:
CONSOLE_ACCESS_KEY: b3NzdXNlcg==
CONSOLE_SECRET_KEY: VGdHaUFIeEYuckBRNg==
kind: Secret
metadata:
name: default-user-1
namespace: eurdeu

View File

@@ -0,0 +1,46 @@
apiVersion: minio.min.io/v2
kind: Tenant
metadata:
name: default-minio-config
namespace: eurdeu # 注意这里 # 需要修改
scheduler:
name: ""
spec:
certConfig: {}
credsSecret:
name: default-creds-secret
image: 192.168.8.65:8033/cmii/minio:RELEASE.2022-03-26T06-49-28Z
imagePullSecret: {}
exposeServices: {}
mountPath: /export # 这里随意 写什么都可以
requestAutoCert: false
users:
- name: default-user-1
pools:
- affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- 192.168.8.68 # 修改这里!
servers: 8
volumesPerServer: 1
resources:
requests:
cpu: "1"
memory: 1Gi
volumeClaimTemplate:
apiVersion: v1
kind: persistentvolumeclaims
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: "2000000000" # 2GBi
storageClassName: local-storage # 注意这里

View File

@@ -0,0 +1,10 @@
#!/usr/bin/env bash
export namespace=eurdeu
for kind in pv
do
# kubectl -n $namespace get $kind | awk '{print$1}'
kubectl -n $namespace delete $kind $(kubectl -n $namespace get $kind | awk '{print$1}')
done

View File

@@ -0,0 +1 @@
minio pv has been deployed successfully!

View File

@@ -0,0 +1,239 @@
{{- define "srs-cluster.config.apilist" -}}
{{- range $i, $e := int .Values.srs.replicas.origin | until }} helm-srs-og-{{ $i }}.srsog:{{ $.Values.srs.ports.cluster.api }}
{{- end -}}
{{- end -}}
{{- define "srs-cluster.config.rtmplist" -}}
{{- range $i, $e := int .Values.srs.replicas.origin | until }} helm-srs-og-{{ $i }}.srsog:{{ $.Values.srs.ports.cluster.rtmp }}
{{- end -}}
{{- end -}}
{{- define "srs-cluster.config.hooks" -}}
http_hooks {
enabled on;
on_publish {{ .Values.srs.hooks.on_publish }};
on_unpublish {{ .Values.srs.hooks.on_unpublish }};
on_play {{ .Values.srs.hooks.on_play }};
}
{{- end -}}
{{- define "srs-cluster.config.origin" -}}
listen {{ .Values.srs.ports.cluster.rtmp }};
max_connections 4096;
srs_log_tank console;
srs_log_file /home/srs.log;
daemon off;
http_api {
enabled on;
listen {{ .Values.srs.ports.cluster.api }};
crossdomain on;
raw_api {
enabled on;
allow_reload on;
allow_query on;
allow_update on;
}
}
stats {
network 0;
}
{{- if lt .Values.srs.replicas.origin 2.0 }}
rtc_server {
enabled on;
listen {{ .Values.srs.ports.cluster.realPublicWebRTC }};
candidate $CANDIDATE;
}
{{- end }}
vhost __defaultVhost__ {
cluster {
origin_cluster on;
coworkers {{ include "srs-cluster.config.apilist" . }};
}
http_hooks {
enabled off;
}
{{- if lt .Values.srs.replicas.origin 2.0 }}
rtc {
enabled on;
bframe discard;
}
{{- end }}
tcp_nodelay on;
min_latency on;
play {
gop_cache off;
mw_latency 0;
mw_msgs 0;
}
publish {
mr off;
}
dvr {
enabled on;
dvr_path /home/srs/dvr/[app]/[2006][01]/[stream]/[timestamp].mp4;
dvr_plan session;
}
hls {
enabled on;
hls_path /home/srs/hls/default;
hls_fragment 10;
hls_window 60;
hls_m3u8_file [stream]/[app].m3u8;
hls_ts_file [stream]/[app]-[timestamp]-[duration].ts;
hls_cleanup off;
}
}
{{- end -}}
{{- define "srs-cluster.config.edge" -}}
listen {{ .Values.srs.ports.cluster.rtmp }};
max_connections 4096;
srs_log_tank console;
srs_log_file /home/srs.log;
daemon off;
http_api {
enabled on;
listen {{ .Values.srs.ports.cluster.api }};
crossdomain on;
raw_api {
enabled on;
allow_reload on;
allow_query on;
allow_update on;
}
}
http_server {
enabled on;
listen {{ .Values.srs.ports.cluster.flv }};
dir /home/srs/;
}
stats {
network 0;
}
vhost __defaultVhost__ {
cluster {
mode remote;
origin {{ include "srs-cluster.config.rtmplist" . }};
}
{{ if .Values.srs.config.enableHooks }}
{{- include "srs-cluster.config.hooks" . }}
{{- end }}
http_remux {
enabled on;
}
tcp_nodelay on;
min_latency on;
play {
gop_cache off;
mw_latency 0;
mw_msgs 0;
}
publish {
mr off;
}
}
{{- end -}}
{{- define "srs-cluster.config.rtc" -}}
listen {{ .Values.srs.ports.rtc.rtmp }};
max_connections 4096;
srs_log_tank console;
srs_log_file /home/srs.log;
daemon on;
http_api {
enabled on;
listen {{ .Values.srs.ports.rtc.api }};
crossdomain on;
}
stats {
network 0;
}
http_server {
enabled on;
listen {{ .Values.srs.ports.rtc.flv }};
dir /home/srs/;
}
rtc_server {
enabled on;
listen {{ .Values.srs.ports.rtc.webrtc }};
candidate $CANDIDATE;
}
vhost __defaultVhost__ {
http_hooks {
enabled off;
}
http_remux {
enabled on;
}
rtc {
enabled on;
bframe discard;
}
tcp_nodelay on;
min_latency on;
play {
gop_cache off;
mw_latency 0;
mw_msgs 0;
}
publish {
mr off;
}
dvr {
enabled on;
dvr_path /home/srs/dvr/[app]/[2006][01]/[stream]/[timestamp].mp4;
dvr_plan session;
}
hls {
enabled on;
hls_path /home/srs/hls/default;
hls_fragment 10;
hls_window 60;
hls_m3u8_file [app]/[stream].m3u8;
hls_ts_file [app]/[2006][01]/[stream]/[timestamp]-[duration].ts;
hls_cleanup off;
}
}
{{- end -}}
{{- define "srs-cluster.config.nginx" -}}
user root;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
use epoll;
worker_connections 65535;
multi_accept on;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
server_tokens off;
sendfile on;
#tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 120;
server {
listen {{ .Values.srs.ports.nginx.hls }};
server_name _;
location / {
root /home/srs/hls/default;
autoindex on;
autoindex_exact_size off;
}
}
}
{{- end -}}

View File

@@ -0,0 +1,24 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Create chart name and version as used by the chart label.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
*/}}
{{- define "srs-cluster.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 }}
{{- end }}
{{/*
Create the node affinity to determine the deployment of environment
*/}}
{{- define "srs-cluster.affinity" -}}
{{- with .Values.global.affinity }}
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: uavcloud.env
operator: In
values:
- {{ .k8sNodeEnv }}
{{- end }}
{{- end }}

View File

@@ -0,0 +1,49 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Kubernetes standard labels
*/}}
{{- define "srs-cluster.labels.standard" -}}
cmii.app: {{ .Values.srs.name }}
cmii.type: middleware
helm.sh/chart: {{ include "srs-cluster.chart" . }}
app.kubernetes.io/managed-by: {{ $.Release.Service }}
{{- if $.Chart.AppVersion }}
app.kubernetes.io/version: {{ $.Chart.AppVersion | quote }}
{{- end }}
{{- end -}}
{{- define "srs-cluster.labels.origin" -}}
srs-role: origin
{{ include "srs-cluster.labels.standard" . }}
{{- end -}}
{{- define "srs-cluster.labels.edge" -}}
srs-role: edge
{{ include "srs-cluster.labels.standard" . }}
{{- end -}}
{{- define "srs-cluster.labels.nginx" -}}
srs-role: nginx
{{ include "srs-cluster.labels.standard" . }}
{{- end -}}
{{- define "srs-cluster.labels.rtc" -}}
srs-role: rtc
{{ include "srs-cluster.labels.standard" . }}
{{- end -}}
{{/*
Labels to use on deploy.spec.selector.matchLabels and svc.spec.selector
*/}}
{{- define "srs-cluster.matchLabels.origin" -}}
srs-role: origin
{{- end -}}
{{- define "srs-cluster.matchLabels.edge" -}}
srs-role: edge
{{- end -}}
{{- define "srs-cluster.matchLabels.nginx" -}}
srs-role: nginx
{{- end -}}
{{- define "srs-cluster.matchLabels.rtc" -}}
srs-role: rtc
{{- end -}}

View File

@@ -0,0 +1,74 @@
enabled: true
global:
middlewareService:
type: NodePort
affinity: { }
nodeAffinityPreset:
type: hard
key: uavcloud.env
values:
- demo
srs:
name: helm-srs
image:
register: docker.io
repository: docker.io/ossrs
name: srs
tag: v4.0.136
replicas:
origin: 1
edge: 2
# 一般情况下不部署nginx
nginx: 2
# 一般情况下不部署rtc
rtc: 1
config:
# 指向 configMap中的 CANDIDATE需要根据实际情况修改为集群的对外暴露域名或者IP地址
domain: ig-dev.uavcmlc.com
pvc: glusterfs-middleware-srs-pvc
enableTLS: true
# 一般情况下不部署nginx
enableNginxHLS: false
# 一般情况下不部署rtc
enableRTC: false
# 不知道该 hook有什么用
enableHooks: false
# 此参数被代替
enableRandomPorts: true
hooks:
# 此部分是干什么的? 29999一般是为GDR服务预留的
on_publish: http://192.168.11.137:29999/video_stream/on_publish
on_unpublish: http://192.168.11.137:29999/video_stream/on_unpublish
on_play: http://192.168.11.137:29999/video_stream/on_play
ports:
cluster:
rtmp: 31935
api: 31985
flv: 30080
webrtc: 30090
# 需要根据实际部署环境,映射的实际公网端口修改
realPublicWebRTC: 11005
rtc:
rtmp: 41935
api: 41985
flv: 40080
webrtc: 40090
nginx:
hls: 40088
nginx:
repository: nginx
tag: 1.19.10
ingress:
enabled: false
resources:
limits:
memory: 4Gi
cpu: "2"
requests:
memory: 128Mi
cpu: 50m