Files
sless/sqs-operator/config/crd/bases/sqs.kube5s.ru_queueservices.yaml
T
Naeel 66dcd99465 refactor(sqs-operator): переделка через Operator SDK v1.37.0
- operator-sdk init + create api (QueueService kind, group sqs, v1alpha1)
- Стандартная kubebuilder структура: cmd/, internal/controller/, config/
- CRD types с kubebuilder маркерами (validation, defaults, printcolumns)
- Reconciler перенесён из ручного кода в internal/controller/
- controller-gen v0.17.0 (совместимость с Go 1.26.1)
- Автогенерация: deepcopy, CRD YAML, RBAC ClusterRole
- Удалены все ручные файлы (controllers/, main.go, deployments/)
2026-04-07 14:25:14 +03:00

126 lines
5.0 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.0
name: queueservices.sqs.kube5s.ru
spec:
group: sqs.kube5s.ru
names:
kind: QueueService
listKind: QueueServiceList
plural: queueservices
singular: queueservice
scope: Namespaced
versions:
- additionalPrinterColumns:
- jsonPath: .spec.tenantId
name: Tenant
type: string
- jsonPath: .status.phase
name: Phase
type: string
- jsonPath: .status.endpoint
name: Endpoint
type: string
- jsonPath: .metadata.creationTimestamp
name: Age
type: date
name: v1alpha1
schema:
openAPIV3Schema:
description: |-
QueueService — управляет жизненным циклом ElasticMQ инстанса для тенанта.
Каждый QueueService CR = один ElasticMQ pod + Service + Ingress + PVC + Secret.
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: QueueServiceSpec — желаемое состояние QueueService (параметры
тенанта).
properties:
memoryMB:
default: 64
description: |-
MemoryMB — лимит памяти для ElasticMQ pod в мегабайтах.
ElasticMQ Native (GraalVM) в idle потребляет ~30MB.
format: int32
maximum: 1024
minimum: 32
type: integer
persistence:
default: true
description: |-
Persistence — включить H2 persistence для сохранения сообщений при рестарте pod.
Если false — сообщения in-memory only, теряются при перезапуске.
type: boolean
storageMB:
default: 512
description: |-
StorageMB — размер PVC для H2 persistence в мегабайтах.
H2 БД хранит очереди и сообщения между рестартами.
format: int32
maximum: 10240
minimum: 128
type: integer
tenantId:
description: |-
TenantID — уникальный идентификатор тенанта.
Используется в именах ресурсов (sqs-{tenantId}), namespace (sless-fn-{tenantId}),
и в Ingress path (/sqs/{tenantId}).
maxLength: 63
minLength: 1
pattern: ^[a-z0-9]([a-z0-9-]*[a-z0-9])?$
type: string
required:
- tenantId
type: object
status:
description: QueueServiceStatus — наблюдаемое состояние QueueService.
properties:
endpoint:
description: |-
Endpoint — публичный URL для SQS API тенанта (заполняется при Ready).
Формат: https://{SQS_EXTERNAL_HOST}/sqs/{tenantId}
type: string
message:
description: Message — описание ошибки или промежуточного статуса.
type: string
phase:
description: Phase — текущая фаза жизненного цикла.
enum:
- Pending
- Provisioning
- Ready
- Failed
type: string
readyAt:
description: ReadyAt — время когда инстанс перешёл в фазу Ready.
format: date-time
type: string
secretName:
description: SecretName — имя k8s Secret с credentials (accessKey/secretKey).
type: string
type: object
type: object
served: true
storage: true
subresources:
status: {}