Skip to content
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.19.0
name: simplyblocksnapshotreplications.simplyblock.simplyblock.io
spec:
group: simplyblock.simplyblock.io
names:
kind: SimplyBlockSnapshotReplication
listKind: SimplyBlockSnapshotReplicationList
plural: simplyblocksnapshotreplications
singular: simplyblocksnapshotreplication
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: SimplyBlockSnapshotReplication is the Schema for the simplyblocksnapshotreplications
API
properties:
apiVersion:
description: |-
APIVersion defines the versioned schema of this representation of an object.
Servers should convert recognized schemas to the latest internal value, and
may reject unrecognized values.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
type: string
kind:
description: |-
Kind is a string value representing the REST resource this object represents.
Servers may infer this from the endpoint the client submits requests to.
Cannot be updated.
In CamelCase.
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
type: string
metadata:
type: object
spec:
description: spec defines the desired state of SimplyBlockSnapshotReplication
properties:
sourceCluster:
description: Source cluster for the snapshots
type: string
targetCluster:
description: Target cluster for replication
type: string
targetPool:
description: Target cluster pool for replication
type: string
timeout:
description: snapshot replication timeout
format: int32
type: integer
volumeIDs:
description: 'Optional: list of volumes to replicate. Empty means
all volumes'
items:
type: string
type: array
required:
- sourceCluster
- targetCluster
- targetPool
type: object
status:
description: status defines the observed state of SimplyBlockSnapshotReplication
properties:
configured:
type: boolean
volumes:
description: Per-volume replication status
items:
description: VolumeReplicationStatus tracks the replication state
of an individual volume
properties:
errors:
description: 'Optional: list of errors encountered for this
volume'
items:
description: ReplicationError stores timestamped error messages
properties:
message:
type: string
timestamp:
format: date-time
type: string
required:
- message
- timestamp
type: object
type: array
lastReplicationTime:
description: Timestamp of the last successful replication for
this volume
format: date-time
type: string
lastSnapshotID:
description: Last snapshot ID replicated for this volume
type: string
phase:
description: Current phase for this volume
enum:
- Pending
- Running
- Completed
- Failed
- Paused
type: string
replicatedCount:
description: Number of snapshots successfully replicated
format: int32
type: integer
volumeID:
description: Volume ID
type: string
required:
- volumeID
type: object
type: array
type: object
required:
- spec
type: object
served: true
storage: true
subresources:
status: {}
32 changes: 32 additions & 0 deletions simplyblock_core/scripts/charts/templates/app_k8s.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,7 @@ spec:
- name: storage-node-monitor
image: "{{ .Values.image.simplyblock.repository }}:{{ .Values.image.simplyblock.tag }}"
command: ["python", "simplyblock_core/services/storage_node_monitor.py"]
imagePullPolicy: "{{ .Values.image.simplyblock.pullPolicy }}"
{{- with (include "simplyblock.commonContainer" . | fromYaml) }}
env:
{{ toYaml .env | nindent 12 }}
Expand All @@ -207,6 +208,7 @@ spec:
- name: mgmt-node-monitor
image: "{{ .Values.image.simplyblock.repository }}:{{ .Values.image.simplyblock.tag }}"
command: ["python", "simplyblock_core/services/mgmt_node_monitor.py"]
imagePullPolicy: "{{ .Values.image.simplyblock.pullPolicy }}"
env:
- name: BACKEND_TYPE
value: "k8s"
Expand All @@ -221,6 +223,7 @@ spec:
- name: lvol-stats-collector
image: "{{ .Values.image.simplyblock.repository }}:{{ .Values.image.simplyblock.tag }}"
command: ["python", "simplyblock_core/services/lvol_stat_collector.py"]
imagePullPolicy: "{{ .Values.image.simplyblock.pullPolicy }}"
{{- with (include "simplyblock.commonContainer" . | fromYaml) }}
env:
{{ toYaml .env | nindent 12 }}
Expand All @@ -233,6 +236,7 @@ spec:
- name: main-distr-event-collector
image: "{{ .Values.image.simplyblock.repository }}:{{ .Values.image.simplyblock.tag }}"
command: ["python", "simplyblock_core/services/main_distr_event_collector.py"]
imagePullPolicy: "{{ .Values.image.simplyblock.pullPolicy }}"
{{- with (include "simplyblock.commonContainer" . | fromYaml) }}
env:
{{ toYaml .env | nindent 12 }}
Expand All @@ -245,6 +249,7 @@ spec:
- name: capacity-and-stats-collector
image: "{{ .Values.image.simplyblock.repository }}:{{ .Values.image.simplyblock.tag }}"
command: ["python", "simplyblock_core/services/capacity_and_stats_collector.py"]
imagePullPolicy: "{{ .Values.image.simplyblock.pullPolicy }}"
{{- with (include "simplyblock.commonContainer" . | fromYaml) }}
env:
{{ toYaml .env | nindent 12 }}
Expand All @@ -257,6 +262,7 @@ spec:
- name: capacity-monitor
image: "{{ .Values.image.simplyblock.repository }}:{{ .Values.image.simplyblock.tag }}"
command: ["python", "simplyblock_core/services/cap_monitor.py"]
imagePullPolicy: "{{ .Values.image.simplyblock.pullPolicy }}"
{{- with (include "simplyblock.commonContainer" . | fromYaml) }}
env:
{{ toYaml .env | nindent 12 }}
Expand All @@ -269,6 +275,7 @@ spec:
- name: health-check
image: "{{ .Values.image.simplyblock.repository }}:{{ .Values.image.simplyblock.tag }}"
command: ["python", "simplyblock_core/services/health_check_service.py"]
imagePullPolicy: "{{ .Values.image.simplyblock.pullPolicy }}"
{{- with (include "simplyblock.commonContainer" . | fromYaml) }}
env:
{{ toYaml .env | nindent 12 }}
Expand All @@ -281,6 +288,7 @@ spec:
- name: device-monitor
image: "{{ .Values.image.simplyblock.repository }}:{{ .Values.image.simplyblock.tag }}"
command: ["python", "simplyblock_core/services/device_monitor.py"]
imagePullPolicy: "{{ .Values.image.simplyblock.pullPolicy }}"
{{- with (include "simplyblock.commonContainer" . | fromYaml) }}
env:
{{ toYaml .env | nindent 12 }}
Expand All @@ -293,6 +301,7 @@ spec:
- name: lvol-monitor
image: "{{ .Values.image.simplyblock.repository }}:{{ .Values.image.simplyblock.tag }}"
command: ["python", "simplyblock_core/services/lvol_monitor.py"]
imagePullPolicy: "{{ .Values.image.simplyblock.pullPolicy }}"
{{- with (include "simplyblock.commonContainer" . | fromYaml) }}
env:
{{ toYaml .env | nindent 12 }}
Expand All @@ -305,6 +314,7 @@ spec:
- name: snapshot-monitor
image: "{{ .Values.image.simplyblock.repository }}:{{ .Values.image.simplyblock.tag }}"
command: ["python", "simplyblock_core/services/snapshot_monitor.py"]
imagePullPolicy: "{{ .Values.image.simplyblock.pullPolicy }}"
{{- with (include "simplyblock.commonContainer" . | fromYaml) }}
env:
{{ toYaml .env | nindent 12 }}
Expand Down Expand Up @@ -368,6 +378,7 @@ spec:
- name: tasks-node-add-runner
image: "{{ .Values.image.simplyblock.repository }}:{{ .Values.image.simplyblock.tag }}"
command: ["python", "simplyblock_core/services/tasks_runner_node_add.py"]
imagePullPolicy: "{{ .Values.image.simplyblock.pullPolicy }}"
env:
- name: LVOL_NVMF_PORT_START
value: "{{ .Values.ports.lvolNvmfPortStart }}"
Expand All @@ -382,6 +393,7 @@ spec:
- name: tasks-runner-restart
image: "{{ .Values.image.simplyblock.repository }}:{{ .Values.image.simplyblock.tag }}"
command: ["python", "simplyblock_core/services/tasks_runner_restart.py"]
imagePullPolicy: "{{ .Values.image.simplyblock.pullPolicy }}"
{{- with (include "simplyblock.commonContainer" . | fromYaml) }}
env:
{{ toYaml .env | nindent 12 }}
Expand All @@ -394,6 +406,7 @@ spec:
- name: tasks-runner-migration
image: "{{ .Values.image.simplyblock.repository }}:{{ .Values.image.simplyblock.tag }}"
command: ["python", "simplyblock_core/services/tasks_runner_migration.py"]
imagePullPolicy: "{{ .Values.image.simplyblock.pullPolicy }}"
{{- with (include "simplyblock.commonContainer" . | fromYaml) }}
env:
{{ toYaml .env | nindent 12 }}
Expand All @@ -406,6 +419,7 @@ spec:
- name: tasks-runner-failed-migration
image: "{{ .Values.image.simplyblock.repository }}:{{ .Values.image.simplyblock.tag }}"
command: ["python", "simplyblock_core/services/tasks_runner_failed_migration.py"]
imagePullPolicy: "{{ .Values.image.simplyblock.pullPolicy }}"
{{- with (include "simplyblock.commonContainer" . | fromYaml) }}
env:
{{ toYaml .env | nindent 12 }}
Expand All @@ -418,6 +432,7 @@ spec:
- name: tasks-runner-cluster-status
image: "{{ .Values.image.simplyblock.repository }}:{{ .Values.image.simplyblock.tag }}"
command: ["python", "simplyblock_core/services/tasks_cluster_status.py"]
imagePullPolicy: "{{ .Values.image.simplyblock.pullPolicy }}"
{{- with (include "simplyblock.commonContainer" . | fromYaml) }}
env:
{{ toYaml .env | nindent 12 }}
Expand All @@ -430,6 +445,7 @@ spec:
- name: tasks-runner-new-device-migration
image: "{{ .Values.image.simplyblock.repository }}:{{ .Values.image.simplyblock.tag }}"
command: ["python", "simplyblock_core/services/tasks_runner_new_dev_migration.py"]
imagePullPolicy: "{{ .Values.image.simplyblock.pullPolicy }}"
{{- with (include "simplyblock.commonContainer" . | fromYaml) }}
env:
{{ toYaml .env | nindent 12 }}
Expand All @@ -442,6 +458,7 @@ spec:
- name: tasks-runner-port-allow
image: "{{ .Values.image.simplyblock.repository }}:{{ .Values.image.simplyblock.tag }}"
command: ["python", "simplyblock_core/services/tasks_runner_port_allow.py"]
imagePullPolicy: "{{ .Values.image.simplyblock.pullPolicy }}"
{{- with (include "simplyblock.commonContainer" . | fromYaml) }}
env:
{{ toYaml .env | nindent 12 }}
Expand All @@ -454,6 +471,7 @@ spec:
- name: tasks-runner-jc-comp-resume
image: "{{ .Values.image.simplyblock.repository }}:{{ .Values.image.simplyblock.tag }}"
command: ["python", "simplyblock_core/services/tasks_runner_jc_comp.py"]
imagePullPolicy: "{{ .Values.image.simplyblock.pullPolicy }}"
{{- with (include "simplyblock.commonContainer" . | fromYaml) }}
env:
{{ toYaml .env | nindent 12 }}
Expand All @@ -466,6 +484,20 @@ spec:
- name: tasks-runner-sync-lvol-del
image: "{{ .Values.image.simplyblock.repository }}:{{ .Values.image.simplyblock.tag }}"
command: ["python", "simplyblock_core/services/tasks_runner_sync_lvol_del.py"]
imagePullPolicy: "{{ .Values.image.simplyblock.pullPolicy }}"
{{- with (include "simplyblock.commonContainer" . | fromYaml) }}
env:
{{ toYaml .env | nindent 12 }}
volumeMounts:
{{ toYaml .volumeMounts | nindent 12 }}
resources:
{{ toYaml .resources | nindent 12 }}
{{- end }}

- name: tasks-runner-snapshot-replication
image: "{{ .Values.image.simplyblock.repository }}:{{ .Values.image.simplyblock.tag }}"
command: ["python", "simplyblock_core/services/snapshot_replication.py"]
imagePullPolicy: "{{ .Values.image.simplyblock.pullPolicy }}"
{{- with (include "simplyblock.commonContainer" . | fromYaml) }}
env:
{{ toYaml .env | nindent 12 }}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ spec:
fsGroup: 65532
serviceAccountName: simplyblock-manager
containers:
- image: simplyblock/simplyblock-manager:main
- image: simplyblock/simplyblock-manager:snapshot_replication
imagePullPolicy: Always
name: manager
env:
Expand Down Expand Up @@ -145,6 +145,7 @@ rules:
- simplyblockstoragenodes
- simplyblockdevices
- simplyblocktasks
- simplyblocksnapshotreplications
verbs:
- create
- delete
Expand All @@ -162,6 +163,7 @@ rules:
- simplyblockstoragenodes/finalizers
- simplyblockdevices/finalizers
- simplyblocktasks/finalizers
- simplyblocksnapshotreplications/finalizers
verbs:
- update
- delete
Expand All @@ -174,6 +176,7 @@ rules:
- simplyblockstoragenodes/status
- simplyblockdevices/status
- simplyblocktasks/status
- simplyblocksnapshotreplications/status
verbs:
- get
- patch
Expand Down
24 changes: 12 additions & 12 deletions simplyblock_core/scripts/charts/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ observability:
image:
simplyblock:
repository: "public.ecr.aws/simply-block/simplyblock"
tag: "improved_user_experience"
tag: "snapshot_replication_operator_support"
pullPolicy: "Always"

ports:
Expand Down Expand Up @@ -205,7 +205,7 @@ ingress:

simplyblock:
cluster:
clusterName: demo-cluster
clusterName: simplyblock-cluster
mgmtIfc: eth0
fabric: tcp
isSingleNode: false
Expand All @@ -217,29 +217,29 @@ simplyblock:
provCapCrit: 150

pool:
name: demo-pool
name: simplyblock-pool
capacityLimit: 100Gi

lvol:
name: demo-lvol
name: simplyblock-lvol

storageNodes:
name: demo-node
clusterImage: public.ecr.aws/simply-block/simplyblock:improved_user_experience
name: simplyblock-node
clusterImage: public.ecr.aws/simply-block/simplyblock:snapshot_replication_operator_support
mgmtIfc: eth0
maxLVol: 10
maxSize: 150G
maxSize: 0
partitions: 0
corePercentage: 65
spdkDebug: false
coreIsolation: false
workerNodes:
- vm02.simplyblock3.localdomain
- vm03.simplyblock3.localdomain
- vm04.simplyblock3.localdomain
- israel-storage-node-1
- israel-storage-node-2
- israel-storage-node-3

devices:
name: demo-devices
name: simplyblock-devices

tasks:
name: demo-task
name: simplyblock-task
Loading
Loading