6 changed files with 400 additions and 42 deletions
-
44k8s/charts/seaweedfs/README.md
-
4k8s/charts/seaweedfs/templates/admin/admin-deployment.yaml
-
317k8s/charts/seaweedfs/templates/admin/admin-statefulset.yaml
-
43k8s/charts/seaweedfs/templates/worker/worker-deployment.yaml
-
27k8s/charts/seaweedfs/templates/worker/worker-service.yaml
-
5k8s/charts/seaweedfs/values.yaml
@ -0,0 +1,317 @@ |
|||||
|
{{- if .Values.admin.enabled }} |
||||
|
apiVersion: apps/v1 |
||||
|
kind: StatefulSet |
||||
|
metadata: |
||||
|
name: {{ template "seaweedfs.name" . }}-admin |
||||
|
namespace: {{ .Release.Namespace }} |
||||
|
labels: |
||||
|
app.kubernetes.io/name: {{ template "seaweedfs.name" . }} |
||||
|
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} |
||||
|
app.kubernetes.io/managed-by: {{ .Release.Service }} |
||||
|
app.kubernetes.io/instance: {{ .Release.Name }} |
||||
|
app.kubernetes.io/component: admin |
||||
|
{{- if .Values.admin.annotations }} |
||||
|
annotations: |
||||
|
{{- toYaml .Values.admin.annotations | nindent 4 }} |
||||
|
{{- end }} |
||||
|
spec: |
||||
|
serviceName: {{ template "seaweedfs.name" . }}-admin |
||||
|
podManagementPolicy: {{ .Values.admin.podManagementPolicy }} |
||||
|
replicas: {{ .Values.admin.replicas }} |
||||
|
selector: |
||||
|
matchLabels: |
||||
|
app.kubernetes.io/name: {{ template "seaweedfs.name" . }} |
||||
|
app.kubernetes.io/instance: {{ .Release.Name }} |
||||
|
app.kubernetes.io/component: admin |
||||
|
template: |
||||
|
metadata: |
||||
|
labels: |
||||
|
app.kubernetes.io/name: {{ template "seaweedfs.name" . }} |
||||
|
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} |
||||
|
app.kubernetes.io/instance: {{ .Release.Name }} |
||||
|
app.kubernetes.io/component: admin |
||||
|
{{ with .Values.podLabels }} |
||||
|
{{- toYaml . | nindent 8 }} |
||||
|
{{- end }} |
||||
|
{{- with .Values.admin.podLabels }} |
||||
|
{{- toYaml . | nindent 8 }} |
||||
|
{{- end }} |
||||
|
annotations: |
||||
|
{{ with .Values.podAnnotations }} |
||||
|
{{- toYaml . | nindent 8 }} |
||||
|
{{- end }} |
||||
|
{{- with .Values.admin.podAnnotations }} |
||||
|
{{- toYaml . | nindent 8 }} |
||||
|
{{- end }} |
||||
|
spec: |
||||
|
restartPolicy: {{ default .Values.global.restartPolicy .Values.admin.restartPolicy }} |
||||
|
{{- if .Values.admin.affinity }} |
||||
|
affinity: |
||||
|
{{ tpl .Values.admin.affinity . | nindent 8 | trim }} |
||||
|
{{- end }} |
||||
|
{{- if .Values.admin.topologySpreadConstraints }} |
||||
|
topologySpreadConstraints: |
||||
|
{{ tpl .Values.admin.topologySpreadConstraints . | nindent 8 | trim }} |
||||
|
{{- end }} |
||||
|
{{- if .Values.admin.tolerations }} |
||||
|
tolerations: |
||||
|
{{ tpl .Values.admin.tolerations . | nindent 8 | trim }} |
||||
|
{{- end }} |
||||
|
{{- include "seaweedfs.imagePullSecrets" . | nindent 6 }} |
||||
|
terminationGracePeriodSeconds: 30 |
||||
|
{{- if .Values.admin.priorityClassName }} |
||||
|
priorityClassName: {{ .Values.admin.priorityClassName | quote }} |
||||
|
{{- end }} |
||||
|
enableServiceLinks: false |
||||
|
{{- if .Values.admin.serviceAccountName }} |
||||
|
serviceAccountName: {{ .Values.admin.serviceAccountName | quote }} |
||||
|
{{- end }} |
||||
|
{{- if .Values.admin.initContainers }} |
||||
|
initContainers: |
||||
|
{{ tpl .Values.admin.initContainers . | nindent 8 | trim }} |
||||
|
{{- end }} |
||||
|
{{- if .Values.admin.podSecurityContext.enabled }} |
||||
|
securityContext: {{- omit .Values.admin.podSecurityContext "enabled" | toYaml | nindent 8 }} |
||||
|
{{- end }} |
||||
|
containers: |
||||
|
- name: seaweedfs |
||||
|
image: {{ template "admin.image" . }} |
||||
|
imagePullPolicy: {{ default "IfNotPresent" .Values.global.imagePullPolicy }} |
||||
|
env: |
||||
|
- name: POD_IP |
||||
|
valueFrom: |
||||
|
fieldRef: |
||||
|
fieldPath: status.podIP |
||||
|
- name: POD_NAME |
||||
|
valueFrom: |
||||
|
fieldRef: |
||||
|
fieldPath: metadata.name |
||||
|
- name: NAMESPACE |
||||
|
valueFrom: |
||||
|
fieldRef: |
||||
|
fieldPath: metadata.namespace |
||||
|
- name: SEAWEEDFS_FULLNAME |
||||
|
value: "{{ template "seaweedfs.name" . }}" |
||||
|
{{- if .Values.admin.extraEnvironmentVars }} |
||||
|
{{- range $key, $value := .Values.admin.extraEnvironmentVars }} |
||||
|
- name: {{ $key }} |
||||
|
{{- if kindIs "string" $value }} |
||||
|
value: {{ $value | quote }} |
||||
|
{{- else }} |
||||
|
valueFrom: |
||||
|
{{ toYaml $value | nindent 16 | trim }} |
||||
|
{{- end -}} |
||||
|
{{- end }} |
||||
|
{{- end }} |
||||
|
{{- if .Values.global.extraEnvironmentVars }} |
||||
|
{{- range $key, $value := .Values.global.extraEnvironmentVars }} |
||||
|
- name: {{ $key }} |
||||
|
{{- if kindIs "string" $value }} |
||||
|
value: {{ $value | quote }} |
||||
|
{{- else }} |
||||
|
valueFrom: |
||||
|
{{ toYaml $value | nindent 16 | trim }} |
||||
|
{{- end -}} |
||||
|
{{- end }} |
||||
|
{{- end }} |
||||
|
command: |
||||
|
- "/bin/sh" |
||||
|
- "-ec" |
||||
|
- | |
||||
|
exec /usr/bin/weed \ |
||||
|
{{- if or (eq .Values.admin.logs.type "hostPath") (eq .Values.admin.logs.type "persistentVolumeClaim") (eq .Values.admin.logs.type "emptyDir") }} |
||||
|
-logdir=/logs \ |
||||
|
{{- else }} |
||||
|
-logtostderr=true \ |
||||
|
{{- end }} |
||||
|
{{- if .Values.admin.loggingOverrideLevel }} |
||||
|
-v={{ .Values.admin.loggingOverrideLevel }} \ |
||||
|
{{- else }} |
||||
|
-v={{ .Values.global.loggingLevel }} \ |
||||
|
{{- end }} |
||||
|
admin \ |
||||
|
-port={{ .Values.admin.port }} \ |
||||
|
-port.grpc={{ .Values.admin.grpcPort }} \ |
||||
|
{{- if or (eq .Values.admin.data.type "hostPath") (eq .Values.admin.data.type "persistentVolumeClaim") (eq .Values.admin.data.type "emptyDir") (eq .Values.admin.data.type "existingClaim") }} |
||||
|
-dataDir=/data \ |
||||
|
{{- else if .Values.admin.dataDir }} |
||||
|
-dataDir={{ .Values.admin.dataDir }} \ |
||||
|
{{- end }} |
||||
|
{{- if .Values.admin.adminPassword }} |
||||
|
-adminUser={{ .Values.admin.adminUser }} \ |
||||
|
-adminPassword={{ .Values.admin.adminPassword }} \ |
||||
|
{{- end }} |
||||
|
{{- if .Values.admin.masters }} |
||||
|
-masters={{ .Values.admin.masters }} \ |
||||
|
{{- else if .Values.global.masterServer }} |
||||
|
-masters={{ .Values.global.masterServer }} \ |
||||
|
{{- else }} |
||||
|
-masters={{ range $index := until (.Values.master.replicas | int) }}${SEAWEEDFS_FULLNAME}-master-{{ $index }}.${SEAWEEDFS_FULLNAME}-master.{{ $.Release.Namespace }}:{{ $.Values.master.port }}{{ if lt $index (sub ($.Values.master.replicas | int) 1) }},{{ end }}{{ end }} \ |
||||
|
{{- end }} |
||||
|
{{- range .Values.admin.extraArgs }} |
||||
|
{{ . }} \ |
||||
|
{{- end }} |
||||
|
volumeMounts: |
||||
|
{{- if or (eq .Values.admin.data.type "hostPath") (eq .Values.admin.data.type "persistentVolumeClaim") (eq .Values.admin.data.type "emptyDir") (eq .Values.admin.data.type "existingClaim") }} |
||||
|
- name: admin-data |
||||
|
mountPath: /data |
||||
|
{{- end }} |
||||
|
{{- if or (eq .Values.admin.logs.type "hostPath") (eq .Values.admin.logs.type "persistentVolumeClaim") (eq .Values.admin.logs.type "emptyDir") (eq .Values.admin.logs.type "existingClaim") }} |
||||
|
- name: admin-logs |
||||
|
mountPath: /logs |
||||
|
{{- end }} |
||||
|
{{- if .Values.global.enableSecurity }} |
||||
|
- name: security-config |
||||
|
readOnly: true |
||||
|
mountPath: /etc/seaweedfs/security.toml |
||||
|
subPath: security.toml |
||||
|
- name: ca-cert |
||||
|
readOnly: true |
||||
|
mountPath: /usr/local/share/ca-certificates/ca/ |
||||
|
- name: master-cert |
||||
|
readOnly: true |
||||
|
mountPath: /usr/local/share/ca-certificates/master/ |
||||
|
- name: volume-cert |
||||
|
readOnly: true |
||||
|
mountPath: /usr/local/share/ca-certificates/volume/ |
||||
|
- name: filer-cert |
||||
|
readOnly: true |
||||
|
mountPath: /usr/local/share/ca-certificates/filer/ |
||||
|
- name: client-cert |
||||
|
readOnly: true |
||||
|
mountPath: /usr/local/share/ca-certificates/client/ |
||||
|
{{- end }} |
||||
|
{{ tpl .Values.admin.extraVolumeMounts . | nindent 12 | trim }} |
||||
|
ports: |
||||
|
- containerPort: {{ .Values.admin.port }} |
||||
|
name: http |
||||
|
- containerPort: {{ .Values.admin.grpcPort }} |
||||
|
name: grpc |
||||
|
{{- if .Values.admin.metricsPort }} |
||||
|
- containerPort: {{ .Values.admin.metricsPort }} |
||||
|
name: metrics |
||||
|
{{- end }} |
||||
|
{{- if .Values.admin.readinessProbe.enabled }} |
||||
|
readinessProbe: |
||||
|
httpGet: |
||||
|
path: {{ .Values.admin.readinessProbe.httpGet.path }} |
||||
|
port: {{ .Values.admin.port }} |
||||
|
scheme: {{ .Values.admin.readinessProbe.httpGet.scheme }} |
||||
|
initialDelaySeconds: {{ .Values.admin.readinessProbe.initialDelaySeconds }} |
||||
|
periodSeconds: {{ .Values.admin.readinessProbe.periodSeconds }} |
||||
|
successThreshold: {{ .Values.admin.readinessProbe.successThreshold }} |
||||
|
failureThreshold: {{ .Values.admin.readinessProbe.failureThreshold }} |
||||
|
timeoutSeconds: {{ .Values.admin.readinessProbe.timeoutSeconds }} |
||||
|
{{- end }} |
||||
|
{{- if .Values.admin.livenessProbe.enabled }} |
||||
|
livenessProbe: |
||||
|
httpGet: |
||||
|
path: {{ .Values.admin.livenessProbe.httpGet.path }} |
||||
|
port: {{ .Values.admin.port }} |
||||
|
scheme: {{ .Values.admin.livenessProbe.httpGet.scheme }} |
||||
|
initialDelaySeconds: {{ .Values.admin.livenessProbe.initialDelaySeconds }} |
||||
|
periodSeconds: {{ .Values.admin.livenessProbe.periodSeconds }} |
||||
|
successThreshold: {{ .Values.admin.livenessProbe.successThreshold }} |
||||
|
failureThreshold: {{ .Values.admin.livenessProbe.failureThreshold }} |
||||
|
timeoutSeconds: {{ .Values.admin.livenessProbe.timeoutSeconds }} |
||||
|
{{- end }} |
||||
|
{{- with .Values.admin.resources }} |
||||
|
resources: |
||||
|
{{- toYaml . | nindent 12 }} |
||||
|
{{- end }} |
||||
|
{{- if .Values.admin.containerSecurityContext.enabled }} |
||||
|
securityContext: {{- omit .Values.admin.containerSecurityContext "enabled" | toYaml | nindent 12 }} |
||||
|
{{- end }} |
||||
|
{{- if .Values.admin.sidecars }} |
||||
|
{{- include "common.tplvalues.render" (dict "value" .Values.admin.sidecars "context" $) | nindent 8 }} |
||||
|
{{- end }} |
||||
|
volumes: |
||||
|
{{- if eq .Values.admin.data.type "hostPath" }} |
||||
|
- name: admin-data |
||||
|
hostPath: |
||||
|
path: {{ .Values.admin.data.hostPathPrefix }}/seaweedfs-admin-data |
||||
|
type: DirectoryOrCreate |
||||
|
{{- end }} |
||||
|
{{- if eq .Values.admin.data.type "emptyDir" }} |
||||
|
- name: admin-data |
||||
|
emptyDir: {} |
||||
|
{{- end }} |
||||
|
{{- if eq .Values.admin.data.type "existingClaim" }} |
||||
|
- name: admin-data |
||||
|
persistentVolumeClaim: |
||||
|
claimName: {{ .Values.admin.data.claimName }} |
||||
|
{{- end }} |
||||
|
{{- if eq .Values.admin.logs.type "hostPath" }} |
||||
|
- name: admin-logs |
||||
|
hostPath: |
||||
|
path: {{ .Values.admin.logs.hostPathPrefix }}/logs/seaweedfs/admin |
||||
|
type: DirectoryOrCreate |
||||
|
{{- end }} |
||||
|
{{- if eq .Values.admin.logs.type "emptyDir" }} |
||||
|
- name: admin-logs |
||||
|
emptyDir: {} |
||||
|
{{- end }} |
||||
|
{{- if eq .Values.admin.logs.type "existingClaim" }} |
||||
|
- name: admin-logs |
||||
|
persistentVolumeClaim: |
||||
|
claimName: {{ .Values.admin.logs.claimName }} |
||||
|
{{- end }} |
||||
|
{{- if .Values.global.enableSecurity }} |
||||
|
- name: security-config |
||||
|
configMap: |
||||
|
name: {{ template "seaweedfs.name" . }}-security-config |
||||
|
- name: ca-cert |
||||
|
secret: |
||||
|
secretName: {{ template "seaweedfs.name" . }}-ca-cert |
||||
|
- name: master-cert |
||||
|
secret: |
||||
|
secretName: {{ template "seaweedfs.name" . }}-master-cert |
||||
|
- name: volume-cert |
||||
|
secret: |
||||
|
secretName: {{ template "seaweedfs.name" . }}-volume-cert |
||||
|
- name: filer-cert |
||||
|
secret: |
||||
|
secretName: {{ template "seaweedfs.name" . }}-filer-cert |
||||
|
- name: client-cert |
||||
|
secret: |
||||
|
secretName: {{ template "seaweedfs.name" . }}-client-cert |
||||
|
{{- end }} |
||||
|
{{ tpl .Values.admin.extraVolumes . | indent 8 | trim }} |
||||
|
{{- if .Values.admin.nodeSelector }} |
||||
|
nodeSelector: |
||||
|
{{ tpl .Values.admin.nodeSelector . | indent 8 | trim }} |
||||
|
{{- end }} |
||||
|
{{- $pvc_exists := include "admin.pvc_exists" . -}} |
||||
|
{{- if $pvc_exists }} |
||||
|
volumeClaimTemplates: |
||||
|
{{- if eq .Values.admin.data.type "persistentVolumeClaim" }} |
||||
|
- metadata: |
||||
|
name: admin-data |
||||
|
{{- with .Values.admin.data.annotations }} |
||||
|
annotations: |
||||
|
{{- toYaml . | nindent 10 }} |
||||
|
{{- end }} |
||||
|
spec: |
||||
|
accessModes: [ "ReadWriteOnce" ] |
||||
|
storageClassName: {{ .Values.admin.data.storageClass }} |
||||
|
resources: |
||||
|
requests: |
||||
|
storage: {{ .Values.admin.data.size }} |
||||
|
{{- end }} |
||||
|
{{- if eq .Values.admin.logs.type "persistentVolumeClaim" }} |
||||
|
- metadata: |
||||
|
name: admin-logs |
||||
|
{{- with .Values.admin.logs.annotations }} |
||||
|
annotations: |
||||
|
{{- toYaml . | nindent 10 }} |
||||
|
{{- end }} |
||||
|
spec: |
||||
|
accessModes: [ "ReadWriteOnce" ] |
||||
|
storageClassName: {{ .Values.admin.logs.storageClass }} |
||||
|
resources: |
||||
|
requests: |
||||
|
storage: {{ .Values.admin.logs.size }} |
||||
|
{{- end }} |
||||
|
{{- end }} |
||||
|
{{- end }} |
||||
|
|
||||
@ -0,0 +1,27 @@ |
|||||
|
{{- if .Values.worker.enabled }} |
||||
|
apiVersion: v1 |
||||
|
kind: Service |
||||
|
metadata: |
||||
|
name: {{ template "seaweedfs.name" . }}-worker |
||||
|
namespace: {{ .Release.Namespace }} |
||||
|
labels: |
||||
|
app.kubernetes.io/name: {{ template "seaweedfs.name" . }} |
||||
|
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} |
||||
|
app.kubernetes.io/managed-by: {{ .Release.Service }} |
||||
|
app.kubernetes.io/instance: {{ .Release.Name }} |
||||
|
app.kubernetes.io/component: worker |
||||
|
spec: |
||||
|
clusterIP: None # Headless service |
||||
|
ports: |
||||
|
{{- if .Values.worker.metricsPort }} |
||||
|
- name: "metrics" |
||||
|
port: {{ .Values.worker.metricsPort }} |
||||
|
targetPort: {{ .Values.worker.metricsPort }} |
||||
|
protocol: TCP |
||||
|
{{- end }} |
||||
|
selector: |
||||
|
app.kubernetes.io/name: {{ template "seaweedfs.name" . }} |
||||
|
app.kubernetes.io/instance: {{ .Release.Name }} |
||||
|
app.kubernetes.io/component: worker |
||||
|
{{- end }} |
||||
|
|
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue