본문으로 건너뛰기

AerospikeCluster API 레퍼런스

이 페이지는 AerospikeCluster Custom Resource Definition(CRD) 타입을 문서화합니다.

API Group: acko.io API Version: v1alpha1 Kind: AerospikeCluster Short Names: asc


AerospikeCluster

AerospikeCluster는 aerospikeclusters API의 스키마입니다. Aerospike Community Edition 클러스터의 라이프사이클을 관리합니다.

필드타입설명
apiVersionstringacko.io/v1alpha1
kindstringAerospikeCluster
metadataObjectMeta표준 객체 메타데이터
specAerospikeClusterSpec클러스터의 원하는 상태
statusAerospikeClusterStatus클러스터의 관측된 상태

AerospikeClusterSpec

Aerospike CE 클러스터의 원하는 상태를 정의합니다.

필드타입필수기본값설명
sizeint32Aerospike 파드 수. CE 최대: 8.
imagestringAerospike CE 컨테이너 이미지 (예: aerospike:ce-8.1.1.1).
aerospikeConfigAerospikeConfigSpec아니요Aerospike 설정 맵, aerospike.conf로 변환됨.
storageAerospikeStorageSpec아니요Aerospike 파드의 볼륨 정의.
rackConfigRackConfig아니요랙 인식 배포 토폴로지.
aerospikeNetworkPolicyAerospikeNetworkPolicy아니요클라이언트 접근 네트워크 설정.
podSpecAerospikePodSpec아니요파드 레벨 설정.
aerospikeAccessControlAerospikeAccessControlSpec아니요ACL 역할 및 사용자.
monitoringAerospikeMonitoringSpec아니요Prometheus 모니터링 설정.
networkPolicyConfigNetworkPolicyConfig아니요자동 NetworkPolicy 생성.
bandwidthConfigBandwidthConfig아니요CNI 대역폭 어노테이션.
enableDynamicConfigUpdate*bool아니요set-config를 통한 런타임 설정 변경 활성화.
rollingUpdateBatchSize*int32아니요1롤링 업데이트 시 동시 재시작 파드 수.
disablePDB*bool아니요falsePodDisruptionBudget 생성 비활성화.
maxUnavailableIntOrString아니요1중단 중 최대 비가용 파드 수.
paused*bool아니요falsetrue이면 재조정 중지.
seedsFinderServicesSeedsFinderServices아니요시드 디스커버리용 LoadBalancer 서비스.
k8sNodeBlockList[]string아니요스케줄링에서 제외할 노드 이름.
operations[]OperationSpec아니요온디맨드 오퍼레이션 (WarmRestart, PodRestart). 동시에 최대 1개.
validationPolicyValidationPolicySpec아니요웹훅 검증 동작 제어.
headlessServiceAerospikeServiceSpec아니요Headless 서비스 커스텀 메타데이터.
podServiceAerospikeServiceSpec아니요Pod별 서비스 커스텀 메타데이터. 설정 시 파드마다 개별 Service 생성.
enableRackIDOverride*bool아니요false파드 어노테이션을 통한 동적 랙 ID 할당 활성화.
templateRefTemplateRef아니요AerospikeClusterTemplate 참조. 설정 시 템플릿 스펙이 생성 시점에 스냅샷으로 저장됨.
overridesAerospikeClusterTemplateSpec아니요참조된 템플릿을 오버라이드하는 필드. 병합 우선순위: overrides > template > 오퍼레이터 기본값.

TemplateRef

같은 네임스페이스의 AerospikeClusterTemplate 참조입니다.

필드타입필수설명
namestringAerospikeClusterTemplate 리소스 이름

TemplateSnapshotStatus

템플릿이 해결된 후 status.templateSnapshot에 기록됩니다.

필드타입설명
namestring참조된 템플릿 이름
resourceVersionstring스냅샷 시점의 템플릿 ResourceVersion
snapshotTimestampTime스냅샷이 촬영된 시점
syncedbool클러스터가 최신 템플릿 버전을 사용하는지 여부. 스냅샷 이후 템플릿 변경 시 false로 설정.
specAerospikeClusterTemplateSpec스냅샷 시점의 해결된 템플릿 스펙.

AerospikeConfigSpec

비구조화된 JSON/YAML 객체로 Aerospike 설정을 보유합니다. 오퍼레이터가 이를 aerospike.conf 형식으로 변환합니다.

YAML에서 Aerospike 설정을 직접 작성합니다:

aerospikeConfig:
service:
cluster-name: my-cluster
proto-fd-max: 15000
network:
service:
port: 3000
heartbeat:
mode: mesh
port: 3002
fabric:
port: 3001
namespaces:
- name: testns
replication-factor: 2
storage-engine:
type: device
file: /opt/aerospike/data/testns.dat
filesize: 4294967296
logging:
- name: /var/log/aerospike/aerospike.log
context: any info

AerospikeClusterStatus

Aerospike CE 클러스터의 관측된 상태입니다.

필드타입설명
phasestring클러스터 단계: InProgress, Completed, Error, ScalingUp, ScalingDown, RollingRestart, ACLSync, Paused, Deleting.
sizeint32현재 클러스터 크기.
conditions[]Condition클러스터 상태의 최신 관측.
podsmap[string]AerospikePodStatus파드별 상태 정보, 파드 이름으로 키 지정.
observedGenerationint64컨트롤러가 관측한 가장 최근 세대.
selectorstringHPA 호환을 위한 레이블 셀렉터 문자열.
aerospikeConfigAerospikeConfigSpec마지막으로 적용된 Aerospike 설정.
operationStatusOperationStatus현재 온디맨드 오퍼레이션 상태.
phaseReasonstring현재 단계의 사람이 읽을 수 있는 설명 (예: "Rolling restart in progress for rack 1").
appliedSpecAerospikeClusterSpec마지막으로 성공적으로 재조정된 스펙의 사본. 설정 드리프트 감지용.
aerospikeClusterSizeint32asinfo로 보고된 Aerospike 클러스터 크기. 스플릿 브레인이나 롤링 리스타트 중 K8s 파드 수와 다를 수 있음.
operatorVersionstring이 클러스터를 마지막으로 재조정한 오퍼레이터 버전.
pendingRestartPods[]string현재 롤링 리스타트에서 재시작 대기 중인 파드. 완료 시 비워짐.
lastReconcileTimeTime마지막 성공적인 재조정의 타임스탬프.
templateSnapshotTemplateSnapshotStatus마지막 동기화 시점의 해결된 템플릿 스펙.

Condition Types

오퍼레이터가 status.conditions에서 관리하는 조건 타입입니다:

타입설명
Available최소 하나의 파드가 요청을 처리할 준비가 됨.
Ready모든 원하는 파드가 실행 중이고 준비됨.
ConfigApplied모든 파드에 원하는 Aerospike 설정이 적용됨.
ACLSyncedACL 역할과 사용자가 클러스터와 동기화됨.
MigrationComplete보류 중인 데이터 마이그레이션이 없음.
ReconciliationPaused사용자에 의해 재조정이 일시 중지됨 (spec.paused: true).

AerospikePodStatus

파드별 상태 정보입니다.

필드타입설명
podIPstring파드 IP 주소.
hostIPstring호스트 노드 IP 주소.
imagestring파드에서 실행 중인 컨테이너 이미지.
podPortint32파드의 Aerospike 서비스 포트.
servicePortint32노드/LB로 노출된 Aerospike 서비스 포트.
rackint이 파드에 할당된 랙 ID.
initializedVolumes[]string초기화된 볼륨 목록.
isRunningAndReadybool파드가 실행 중이고 준비되었는지 여부.
configHashstring적용된 설정의 SHA256 해시.
podSpecHashstring파드 템플릿 스펙의 해시.
dynamicConfigStatusstring동적 설정 업데이트 결과: Applied, Failed, Pending, 또는 빈 문자열.
dirtyVolumes[]string초기화 또는 정리가 필요한 볼륨.
nodeIDstringAerospike가 할당한 노드 식별자 (예: BB9020012AC4202). 접근 불가 시 빈 문자열.
clusterNamestring노드가 보고한 Aerospike 클러스터 이름.
accessEndpoints[]stringasinfo "service"를 통한 직접 클라이언트 접근용 네트워크 엔드포인트 (host:port).
readinessGateSatisfiedboolacko.io/aerospike-ready 게이트가 True인지 여부. readinessGateEnabled=true일 때만 유효.
lastRestartReasonRestartReason오퍼레이터에 의해 파드가 마지막으로 재시작된 이유.
lastRestartTimeTime오퍼레이터에 의해 파드가 마지막으로 재시작된 시점.
unstableSinceTime이 파드가 처음 NotReady가 된 시점. Ready로 돌아가면 nil로 초기화.

RestartReason

오퍼레이터에 의해 파드가 재시작된 이유를 설명합니다.

설명
ConfigChangedAerospike 설정 변경으로 인한 콜드 리스타트.
ImageChanged파드 이미지 업데이트.
PodSpecChanged파드 스펙(리소스, 환경변수 등) 변경.
ManualRestart온디맨드 파드 리스타트 (OperationPodRestart).
WarmRestart온디맨드 또는 롤링 웜 리스타트 (SIGUSR1).

AerospikeStorageSpec

Aerospike 파드의 스토리지 볼륨을 정의합니다.

필드타입필수기본값설명
volumes[]VolumeSpec아니요연결할 볼륨 목록.
cleanupThreadsint32아니요1볼륨 정리/초기화 최대 스레드 수.
filesystemVolumePolicyAerospikeVolumePolicy아니요파일시스템 모드 영구 볼륨의 기본 정책. 볼륨별 설정이 우선.
blockVolumePolicyAerospikeVolumePolicy아니요블록 모드 영구 볼륨의 기본 정책. 볼륨별 설정이 우선.
localStorageClasses[]string아니요로컬 스토리지를 사용하는 StorageClass 이름 (예: local-path). 파드 재시작 시 특수 처리 필요.
deleteLocalStorageOnRestart*bool아니요파드 재시작 전 로컬 PVC를 삭제하여 새 노드에서 재프로비저닝.

AerospikeVolumePolicy

영구 볼륨 카테고리(파일시스템 또는 블록)의 기본 정책입니다.

필드타입기본값설명
initMethodstringnone이 볼륨 카테고리의 기본 초기화 방법.
wipeMethodstringnone이 볼륨 카테고리의 기본 와이프 방법.
cascadeDelete*boolnilCR 삭제 시 PVC 삭제 여부.

VolumeSpec

단일 볼륨 연결을 정의합니다.

필드타입필수기본값설명
namestring볼륨 이름.
sourceVolumeSource볼륨 소스 (PVC, emptyDir, secret, configMap, hostPath).
aerospikeAerospikeVolumeAttachment아니요Aerospike 컨테이너의 마운트 경로.
sidecars[]VolumeAttachment아니요사이드카 컨테이너의 볼륨 마운트.
initContainers[]VolumeAttachment아니요초기화 컨테이너의 볼륨 마운트.
initMethodstring아니요none초기화 방법: none, deleteFiles, dd, blkdiscard, headerCleanup.
wipeMethodstring아니요none더티 볼륨 와이프 방법: none, deleteFiles, dd, blkdiscard, headerCleanup, blkdiscardWithHeaderCleanup.
cascadeDelete*bool아니요nilCR 삭제 시 PVC 삭제. nil이면 글로벌 볼륨 정책으로 폴백.

VolumeSource

볼륨 데이터 소스를 설명합니다. 정확히 하나의 필드만 설정해야 합니다.

필드타입설명
persistentVolumePersistentVolumeSpecPVC 생성.
emptyDirEmptyDirVolumeSourceemptyDir 사용.
secretSecretVolumeSourceKubernetes Secret 사용.
configMapConfigMapVolumeSourceKubernetes ConfigMap 사용.
hostPathHostPathVolumeSource호스트 노드의 경로 사용.

PersistentVolumeSpec

PVC 템플릿을 정의합니다.

필드타입필수기본값설명
storageClassstring아니요StorageClass 이름.
volumeModestring아니요FilesystemFilesystem 또는 Block.
sizestring스토리지 크기 (예: 10Gi).
accessModes[]string아니요접근 모드 (예: ReadWriteOnce).
selectorLabelSelector아니요PV 바인딩용 레이블 셀렉터.
metadataAerospikeObjectMeta아니요PVC의 커스텀 레이블 및 어노테이션.

AerospikeVolumeAttachment

볼륨이 Aerospike 컨테이너에 마운트되는 방식을 정의합니다.

필드타입필수설명
pathstring컨테이너의 마운트 경로.
readOnlybool아니요볼륨을 읽기 전용으로 마운트.
subPathstring아니요볼륨의 특정 하위 경로만 마운트.
subPathExprstring아니요환경 변수를 사용한 확장 경로. subPath와 상호 배타적.
mountPropagationMountPropagationMode아니요마운트 전파 방식: None, HostToContainer, Bidirectional.

VolumeAttachment

사이드카 또는 초기화 컨테이너의 볼륨 마운트를 정의합니다.

필드타입필수설명
containerNamestring대상 컨테이너 이름.
pathstring컨테이너의 마운트 경로.
readOnlybool아니요볼륨을 읽기 전용으로 마운트.
subPathstring아니요볼륨의 특정 하위 경로만 마운트.
subPathExprstring아니요환경 변수를 사용한 확장 경로. subPath와 상호 배타적.
mountPropagationMountPropagationMode아니요마운트 전파 방식: None, HostToContainer, Bidirectional.

AerospikeNetworkPolicy

네트워크 접근 설정을 정의합니다.

필드타입기본값설명
accessTypestringpod클라이언트 접근 타입: pod, hostInternal, hostExternal, configuredIP.
alternateAccessTypestringpod대체 접근 타입.
fabricTypestringpod패브릭(노드 간) 네트워크 타입.
customAccessNetworkNames[]stringconfiguredIP 접근용 네트워크 이름.
customAlternateAccessNetworkNames[]stringconfiguredIP 대체 접근용 네트워크 이름.
customFabricNetworkNames[]stringconfiguredIP 패브릭용 네트워크 이름.

SeedsFinderServices

LoadBalancer를 통한 외부 시드 디스커버리를 설정합니다.

필드타입설명
loadBalancerLoadBalancerSpecLoadBalancer 서비스 설정.

LoadBalancerSpec

LoadBalancer 서비스를 정의합니다.

필드타입기본값설명
annotationsmap[string]string서비스 어노테이션.
labelsmap[string]string서비스 레이블.
externalTrafficPolicystringCluster 또는 Local.
portint323000외부 포트.
targetPortint323000컨테이너 대상 포트.
loadBalancerSourceRanges[]string허용된 소스 CIDR.

AerospikePodSpec

Aerospike 파드의 파드 레벨 커스터마이징입니다.

필드타입설명
aerospikeContainerAerospikeContainerSpecAerospike 컨테이너 커스터마이징.
sidecars[]Container사이드카 컨테이너.
initContainers[]Container추가 초기화 컨테이너.
imagePullSecrets[]LocalObjectReference이미지 풀 시크릿.
nodeSelectormap[string]string스케줄링용 노드 레이블.
tolerations[]Toleration파드 toleration.
affinityAffinity어피니티/안티-어피니티 규칙.
securityContextPodSecurityContext파드 레벨 보안 속성.
serviceAccountNamestringServiceAccount 이름.
dnsPolicystring파드 DNS 정책.
hostNetworkbool호스트 네트워킹 활성화.
multiPodPerHost*bool같은 노드에 여러 파드 허용.
terminationGracePeriodSeconds*int64파드 종료 유예 기간.
topologySpreadConstraints[]TopologySpreadConstraint토폴로지 도메인 간 파드 분산 방식.
podManagementPolicystringStatefulSet 파드 관리: OrderedReady (기본) 또는 Parallel.
metadataAerospikePodMetadata추가 파드 레이블/어노테이션.
readinessGateEnabled*bool커스텀 readiness gate acko.io/aerospike-ready 활성화. Aerospike가 클러스터 mesh에 참여하고 마이그레이션이 완료될 때까지 Service 엔드포인트에서 제외.

AerospikeContainerSpec

Aerospike 서버 컨테이너를 커스터마이징합니다.

필드타입설명
resourcesResourceRequirementsCPU/메모리 요청 및 제한.
securityContextSecurityContext컨테이너 레벨 보안 속성.

AerospikePodMetadata

파드의 추가 레이블 및 어노테이션입니다.

필드타입설명
labelsmap[string]string추가 파드 레이블.
annotationsmap[string]string추가 파드 어노테이션.

RackConfig

랙 인식 배포 설정을 정의합니다.

필드타입필수설명
racks[]Rack랙 정의 목록 (최소 1).
namespaces[]string아니요랙 인식 Aerospike 네임스페이스 이름.
scaleDownBatchSizeIntOrString아니요랙당 동시 스케일 다운 파드 수. 정수 또는 퍼센트 문자열 (예: "25%"). 기본값: 1.
maxIgnorablePodsIntOrString아니요재조정 중 무시할 수 있는 최대 Pending/Failed 파드 수.
rollingUpdateBatchSizeIntOrString아니요랙당 동시 재시작 파드 수. 정수 또는 퍼센트 문자열. spec.rollingUpdateBatchSize보다 우선.

Rack

클러스터 토폴로지의 단일 랙을 정의합니다.

필드타입필수설명
idint고유 랙 식별자 (>= 1). 랙 ID 0은 기본 랙용으로 예약됨.
zonestring아니요존 레이블 값 (topology.kubernetes.io/zone).
regionstring아니요리전 레이블 값 (topology.kubernetes.io/region).
nodeNamestring아니요특정 노드로 제한.
rackLabelstring아니요랙 어피니티용 커스텀 라벨. acko.io/rack=<rackLabel> 노드에 스케줄링. 랙 간 고유해야 함.
revisionstring아니요제어된 랙 마이그레이션용 버전 식별자.
aerospikeConfigAerospikeConfigSpec아니요랙별 Aerospike 설정 오버라이드.
storageAerospikeStorageSpec아니요랙별 스토리지 오버라이드.
podSpecRackPodSpec아니요랙별 파드 스케줄링 오버라이드.

RackPodSpec

랙 레벨 파드 스케줄링 오버라이드입니다.

필드타입설명
affinityAffinity랙 레벨 어피니티 오버라이드.
tolerations[]Toleration랙 레벨 toleration 오버라이드.
nodeSelectormap[string]string랙 레벨 노드 셀렉터 오버라이드.

AerospikeAccessControlSpec

ACL 설정을 정의합니다.

필드타입설명
roles[]AerospikeRoleSpecAerospike 역할 정의.
users[]AerospikeUserSpecAerospike 사용자 정의.
adminPolicyAerospikeClientAdminPolicy관리자 클라이언트 타임아웃 정책.

AerospikeRoleSpec

Aerospike 역할을 정의합니다.

필드타입필수설명
namestring역할 이름.
privileges[]string권한 문자열: read, write, read-write, read-write-udf, sys-admin, user-admin, data-admin, truncate. 네임스페이스 범위 지원 (예: read-write.testns).
whitelist[]string아니요허용된 CIDR 범위.

AerospikeUserSpec

Aerospike 사용자를 정의합니다.

필드타입필수설명
namestring사용자 이름.
secretNamestring비밀번호를 포함하는 Kubernetes Secret 이름 (키: password).
roles[]string할당된 역할 이름 (최소 1).

AerospikeClientAdminPolicy

관리자 클라이언트 타임아웃 설정입니다.

필드타입기본값설명
timeoutint2000관리자 작업 타임아웃 (밀리초).

AerospikeMonitoringSpec

Prometheus 모니터링 설정입니다.

필드타입기본값설명
enabledboolfalsePrometheus 익스포터 사이드카 활성화.
exporterImagestringaerospike/aerospike-prometheus-exporter:1.16.1익스포터 컨테이너 이미지.
portint329145메트릭 포트.
resourcesResourceRequirements익스포터 리소스 제한.
env[]EnvVar익스포터 컨테이너의 추가 환경 변수.
metricLabelsmap[string]string모든 익스포트 메트릭에 추가되는 커스텀 레이블. METRIC_LABELS 환경 변수로 전달.
serviceMonitorServiceMonitorSpecServiceMonitor 설정.
prometheusRulePrometheusRuleSpec클러스터 알림을 위한 PrometheusRule 설정.

ServiceMonitorSpec

Prometheus Operator를 위한 ServiceMonitor 설정입니다.

필드타입기본값설명
enabledboolfalseServiceMonitor 리소스 생성.
intervalstring30s스크래핑 주기.
labelsmap[string]stringServiceMonitor 디스커버리용 추가 레이블.

PrometheusRuleSpec

Aerospike 클러스터 알림을 위한 PrometheusRule 설정입니다.

필드타입기본값설명
enabledboolfalsePrometheusRule 리소스 생성.
labelsmap[string]stringPrometheusRule 디스커버리용 추가 레이블.
customRules[]JSON기본 알림(NodeDown, StopWrites, HighDiskUsage, HighMemoryUsage)을 대체하는 커스텀 규칙 그룹. 각 항목에 namerules 필드가 필수.

NetworkPolicyConfig

자동 NetworkPolicy 생성입니다.

필드타입기본값설명
enabledboolfalseNetworkPolicy 생성 활성화.
typestringkubernetes정책 타입: kubernetes 또는 cilium.

BandwidthConfig

CNI 트래픽 셰이핑을 위한 대역폭 어노테이션입니다.

필드타입설명
ingressstring최대 인그레스 대역폭 (예: 1Gbps, 500Mbps).
egressstring최대 이그레스 대역폭 (예: 1Gbps, 500Mbps).

OperationSpec

클러스터 파드에 대한 온디맨드 오퍼레이션을 정의합니다.

필드타입필수설명
kindstring오퍼레이션 타입: WarmRestart (SIGUSR1) 또는 PodRestart (삭제/재생성).
idstring고유 오퍼레이션 식별자 (1-20자).
podList[]string아니요대상 파드 이름 목록. 비우면 전체 파드 대상.

OperationStatus

온디맨드 오퍼레이션의 상태를 추적합니다.

필드타입설명
idstring오퍼레이션 식별자.
kindstring오퍼레이션 타입: WarmRestart 또는 PodRestart.
phasestring오퍼레이션 단계: InProgress, Completed, 또는 Error.
completedPods[]string오퍼레이션이 완료된 파드 목록.
failedPods[]string오퍼레이션이 실패한 파드 목록.

ValidationPolicySpec

웹훅 검증 동작을 제어합니다.

필드타입기본값설명
skipWorkDirValidateboolfalseAerospike 작업 디렉토리가 영구 스토리지에 있는지 검증을 건너뜁니다.

AerospikeServiceSpec

Kubernetes Service의 커스텀 메타데이터를 정의합니다.

필드타입필수설명
metadataAerospikeObjectMeta아니요서비스의 커스텀 어노테이션 및 레이블.

AerospikeObjectMeta

Kubernetes 객체의 커스텀 메타데이터입니다.

필드타입설명
annotationsmap[string]string커스텀 어노테이션.
labelsmap[string]string커스텀 레이블.