- api/v1alpha1: добавлены поля EnableUI, AutoCreateQueues в QueueServiceSpec - elasticmq_config.go: GenerateConfig принимает autoCreateQueues, добавляет HOCON блок - controller.go: sidecar elasticmq-ui (port 3000), ensureIngressUI, ensureService UI port - test_v2_suite.sh: A06 теперь PASS — PurgeQueue перед long polling тестом - CRD обновлён: make install применён в кластере Test run v0.1.7: 35 PASS / 3 FAIL / 4 WARN / 2 SKIP(WONTFIX)
140 lines
6.0 KiB
YAML
140 lines
6.0 KiB
YAML
---
|
||
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:
|
||
autoCreateQueues:
|
||
default: false
|
||
description: |-
|
||
AutoCreateQueues — автоматически создавать очередь при первом обращении.
|
||
Если true: SendMessage/ReceiveMessage в несуществующую очередь создаёт её автоматически.
|
||
Если false: возвращает NonExistentQueue ошибку (поведение AWS SQS по умолчанию).
|
||
type: boolean
|
||
enableUI:
|
||
default: false
|
||
description: |-
|
||
EnableUI — добавить sidecar контейнер ElasticMQ Web UI (softwaremill/elasticmq-ui).
|
||
UI доступен по https://{SQS_EXTERNAL_HOST}/sqs-ui/{tenantId}/
|
||
UI контейнер обращается к ElasticMQ через localhost:9324 (sidecar в одном поде).
|
||
type: boolean
|
||
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: {}
|