본문으로 건너뛰기
cccskills
무료GitHub에 공개

acko-deploy

MUST USE for deploying Aerospike on Kubernetes. Contains CE-specific YAML templates, validated AerospikeCluster CR examples, and critical constraints that prevent enterprise-only config mistakes (feature-key-file, security sections crash CE pods). Without this skill, deployments fail on first attempt due to CE 8.1 breaking changes (data-size not memory-size, no info port 3003) or webhook map/list shape rules (service/network must be maps; logging must be a list). Triggers on: deploy/create/set up Aerospike on K8s, kind, minikube, EKS, GKE; AerospikeCluster CR; ACKO operator; spec.operations / WarmRestart / PodRestart YAML; NoSQL database on Kubernetes. 9 ready-to-use YAML examples from minimal single-node to full-featured multi-rack.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구Kubernetes
설치 방법 보기

포함된 파일(2)

  • SKILL.md9.9 KB
  • source.json1.2 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

ACKO Deployment Guide

Deploy Aerospike Community Edition clusters on Kubernetes using the ACKO operator.


1. Quick Deploy: 1-Node Dev Cluster in 3 Steps

Step 1: Check Prerequisites

Run these commands to verify your environment is ready:

# Verify kubectl is connected to a cluster
kubectl cluster-info

# Verify the ACKO operator is running
kubectl get pods -n aerospike-operator -l control-plane=controller-manager

# Verify the AerospikeCluster CRD is installed
kubectl api-resources | grep aerospikeclusters

# Create the target namespace (if it does not exist)
kubectl create namespace aerospike --dry-run=client -o yaml | kubectl apply -f -

If the operator is not running, install it first:

kubectl apply -f https://raw.githubusercontent.com/aerospike-ce-ecosystem/aerospike-ce-kubernetes-operator/main/config/deploy/operator.yaml

Step 2: Apply the Minimal CR

apiVersion: acko.io/v1alpha1
kind: AerospikeCluster
metadata:
  name: aerospike-basic
  namespace: aerospike
spec:
  size: 1
  image: aerospike:ce-8.1.1.1
  aerospikeConfig:
    namespaces:
      - name: test
        replication-factor: 1
        storage-engine:
          type: memory
          data-size: 1073741824   # 1 GiB
    logging:
      - name: /var/log/aerospike/aerospike.log
        context: any info

Save this as aerospike-basic.yaml and apply:

kubectl apply -f aerospike-basic.yaml

Step 3: Verify Deployment

# Wait for phase=Completed (typically 30-90 seconds)
kubectl wait --for=jsonpath='{.status.phase}'=Completed asc/aerospike-basic -n aerospike --timeout=120s

# Check cluster status (should show PHASE=Completed, HEALTH=1/1)
kubectl get asc aerospike-basic -n aerospike

# Check pod status (should show 1/1 Running)
kubectl get pods -n aerospike

# Verify Aerospike is responding
kubectl exec -n aerospike aerospike-basic-0-0 -c aerospike-server -- asinfo -v status
# Expected output: ok

2. CE Constraints (Webhook-Enforced)

These constraints are enforced by the ACKO validating webhook. Violating any of them causes the CR to be rejected at apply time.

  1. Cluster size: spec.size must be between 1 and 8 (inclusive).
  2. Namespaces: Maximum 2 namespaces in aerospikeConfig.namespaces.
  3. No XDR: aerospikeConfig must not contain an xdr section (Enterprise-only).
  4. No TLS: aerospikeConfig must not contain a tls section (Enterprise-only).
  5. No Enterprise images: spec.image must not contain enterprise, ee-, or ent-.
  6. Mesh heartbeat only: network.heartbeat.mode must be mesh.
  7. Byte values as integers: All size values in aerospikeConfig (such as data-size, filesize) must be specified as integer byte counts, not human-readable strings.
  8. Replication factor: Must be between 1 and 4, and must not exceed spec.size.
  9. No Enterprise namespace keys: The following keys are forbidden in namespace config: compression, compression-level, durable-delete, fast-restart, index-type, sindex-type, rack-id, strong-consistency, tomb-raider-eligible-age, tomb-raider-period.
  10. No Enterprise security keys: Only enable-security and default-password-file are allowed in aerospikeConfig.security. The keys tls, ldap, log, syslog are forbidden.
  11. Strengthened map/list shapes (April 2026): aerospikeConfig.service and aerospikeConfig.network must be YAML maps; aerospikeConfig.logging must be a YAML list; each namespaces[] entry must be a map with a name key. MetricLabels values are TOML-escaped — control characters are rejected. Within one update, namespace rack-id may be added OR removed but not both (prevents data loss on rename).
  12. Operations spec invariants: spec.operations[].kind must be WarmRestart or PodRestart; spec.operations[].id length 1–20 chars; the operations list cannot be modified while one operation is InProgress. spec.overrides only valid when spec.templateRef is set.

3. Deployment Scenarios

Choose the scenario that matches your needs. Each links to a ready-to-use YAML example.

Scenario 1: Minimal In-Memory (Dev/Test)

  • File: ./examples/01-minimal.yaml
  • Use when: Quick local dev, CI tests, learning ACKO
  • Key features: 1 node, in-memory storage, no persistence, no ACL

Scenario 2: 3-Node with Persistent Volume (Staging/Production Baseline)

  • File: ./examples/02-3node-pv.yaml
  • Use when: You need data persistence across pod restarts
  • Key features: 3 nodes, PVC-backed device storage, resource limits, cascadeDelete

Scenario 3: ACL (Access Control)

  • File: ./examples/03-acl.yaml
  • Use when: You need authentication and role-based access control
  • Key features: security stanza, admin user (sys-admin + user-admin required), K8s Secrets for passwords

Scenario 4: Prometheus Monitoring

  • File: ./examples/04-monitoring.yaml
  • Use when: You need metrics, dashboards, and alerting
  • Key features: Exporter sidecar, ServiceMonitor, PrometheusRule, metric labels

Scenario 5: Multi-Rack (Zone-Aware Topology)

  • File: ./examples/05-multirack.yaml
  • Use when: You need high availability across availability zones
  • Key features: 3 racks pinned to zones, rack-aware replication

Scenario 6: Advanced Storage

  • File: ./examples/06-storage-advanced.yaml
  • Use when: You need block devices, hostPath, CSI, local PV, or sidecar mounts
  • Key features: Volume policies, block volumes, mount propagation, sidecar sharing

Scenario 7: Template-Based

  • File: ./examples/07-template.yaml
  • Use when: You manage multiple clusters with shared configuration
  • Key features: AerospikeClusterTemplate, templateRef, overrides, resync annotation

Scenario 8: Full-Featured

  • File: ./examples/08-full-featured.yaml
  • Use when: Production deployment with all features enabled
  • Key features: ACL + monitoring + multi-rack + PV + PDB + dynamic config

Scenario 9: On-Demand Operations (WarmRestart / PodRestart)

  • File: ./examples/09-operations.yaml
  • Use when: You need to manually restart pods (warm via SIGUSR1, or full pod recreate) without changing spec
  • Key features: spec.operations[] with WarmRestart (SIGUSR1) or PodRestart (delete+recreate); optional podList to target specific pods; webhook prevents modifying the operations list while one is InProgress

Monitoring sample note (04-monitoring.yaml): Recent fix — metricLabels values are TOML-escaped (double-quote-wrapped, backslash-escaped, control chars rejected) and the demo emptyDir mount points to /opt/aerospike/work instead of accidentally overlaying /opt/aerospike. If you cloned this example before April 2026, verify both.


4. CR Spec Reference

Detail: ./reference/cr-spec-fields.md


5. Webhook Auto-Settings

Webhook auto-settings and CRD field mapping: See acko-config-reference skill's reference/crd-mapping.md


6. Verification Commands

Run these after deploying or modifying a cluster.

# List all Aerospike clusters with their phase
kubectl get asc -n aerospike

# Check specific cluster phase
kubectl get asc <name> -n aerospike -o jsonpath='{.status.phase}'

# Check phase reason (useful when phase is Error or InProgress)
kubectl get asc <name> -n aerospike -o jsonpath='{.status.phaseReason}'

# Check all conditions
kubectl get asc <name> -n aerospike -o jsonpath='{.status.conditions}' | jq .

# Check pod status details
kubectl get asc <name> -n aerospike -o jsonpath='{.status.pods}' | jq .

# Check ready pod count
kubectl get asc <name> -n aerospike -o jsonpath='{.status.size}'

# Check cluster events (most recent last)
kubectl get events -n aerospike --field-selector involvedObject.name=<name> --sort-by='.lastTimestamp'

# Verify Aerospike service is responding
kubectl exec -n aerospike <pod-name> -c aerospike-server -- asinfo -v status

# Check cluster membership
kubectl exec -n aerospike <pod-name> -c aerospike-server -- asinfo -v 'statistics' | tr ';' '\n' | grep cluster_size

# Check namespace stats
kubectl exec -n aerospike <pod-name> -c aerospike-server -- asinfo -v 'namespace/<namespace-name>'

7. Byte Value Reference

Byte values: See acko-config-reference skill's reference/byte-values.md


8. CE 8.1 Configuration Notes

CE 8.1 notes: See acko-config-reference skill


9. Template Fix Notice (April 2026)

A recent operator fix re-applies the resolved template to the in-memory cluster spec after every Status().Update/Patch, so template-derived fields (PodSpec.PodAntiAffinity, Resources, Storage) now reach the StatefulSet and persist across reconciles. If you previously worked around this by inlining template values into spec.overrides, you can drop those workarounds. VolumeClaimTemplate updates remain immutable — VCTs are only set at StatefulSet creation time inside buildStatefulSet.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

007

무료

Security audit, hardening, threat modeling (STRIDE/PASTA), Red/Blue Team, OWASP checks, code review, incident response, and infrastructure security for any project.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

aibot88/sec_skill_store52026년 5월 27일 업데이트

Guides the creation of agile user stories and Gherkin feature files. Use when the user wants to create a user story, write acceptance criteria, define Gherkin scenarios, or author BDD feature files. This should trigger for requests such as Create a user story; Write a user story; I need to write a user story. Part of cursor-rules-java project

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

aibot88/sec_skill_store52026년 5월 27일 업데이트

Facilitates conversational discovery to create Architectural Decision Records (ADRs) for non-functional requirements using the ISO/IEC 25010:2023 quality model. Use when the user wants to document quality attributes, NFR decisions, security/performance/scalability architecture, or design systems with measurable quality criteria. This should trigger for requests such as Create ADR for Non-functional requirements; Document Non-functional requirements; Capture Non-functional requirements; Generate Non-functional requirements in an ADR. Part of cursor-rules-java project

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

aibot88/sec_skill_store52026년 5월 27일 업데이트

Run a health check on an existing project: dependency audit, security scan, test runner detection, CI/CD evaluation, and missing configuration analysis. Maps the three execution gates (pre/in/post) from /10x-bootstrapper to an assessment framework for existing codebases. Reads optional context/foundation/stack-assessment.md from /10x-stack-assess to focus checks on identified gaps. Writes context/foundation/health-check.md with findings, prioritized fixes, and an agent-readiness verdict. Use when the user has an existing project and wants to verify its health before working with an agent. Trigger phrases: "health check", "check my project", "audit my project", "is my project healthy", "sprawdź projekt", "audyt projektu", "health-check", "project health". Use AFTER /10x-stack-assess (brownfield chain), BEFORE agent onboarding (m1-l4).

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

aibot88/sec_skill_store52026년 5월 27일 업데이트

10x-team

무료

You MUST use this when building projects end-to-end. Orchestrates all 12 team roles — automatically switches between CTO, architect, PM, engineers, SRE, security, DBA, QA, and EM based on the current phase of work. Starts with brainstorming before any implementation.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

aibot88/sec_skill_store52026년 5월 27일 업데이트

Use when you need to add or configure Maven plugins in your pom.xml — including quality tools (enforcer, surefire, failsafe, jacoco, pitest, spotbugs, pmd), security scanning (OWASP), code formatting (Spotless), version management, container image build (Jib), build information tracking, and benchmarking (JMH) — through a consultative, modular step-by-step approach that only adds what you actually need. This should trigger for requests such as Add Maven plugins in pom.xml; Improve Maven plugins in pom.xml. Part of cursor-rules-java project

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

aibot88/sec_skill_store52026년 5월 27일 업데이트

aibot88의 스킬 모두 보기

이 스킬의 문제 신고