- 7 CRDs (Agent, AgentConfig, AgentGroup, Channel, Provider, WorkflowTemplate, CompliancePolicy) - 3 controllers (Agent, WorkflowTemplate, CompliancePolicy) - Generated deepcopy methods (controller-gen v0.16.5) - Dockerfile (multi-stage Go build) - Nix build-image.nix (dockerTools.streamLayeredImage) - Helm chart with RBAC, deployment, service account - Deploy manifests (RBAC + controller deployment) - Sample manifests for all 7 CRDs - Quickstart script - Successfully deployed to k3s on n97-mini: - Controller running and reconciling - All 7 CRDs registered - Agent CR creates Pod (ErrImagePull expected — no agent image yet) - Controller logs show reconciliation working
75 lines
2 KiB
YAML
75 lines
2 KiB
YAML
---
|
|
apiVersion: apiextensions.k8s.io/v1
|
|
kind: CustomResourceDefinition
|
|
metadata:
|
|
name: channels.kubeclaw.scoble.me
|
|
labels:
|
|
app.kubernetes.io/name: kubeclaw
|
|
app.kubernetes.io/part-of: scobleclaw
|
|
spec:
|
|
group: kubeclaw.scoble.me
|
|
names:
|
|
kind: Channel
|
|
listKind: ChannelList
|
|
plural: channels
|
|
singular: channel
|
|
shortNames:
|
|
- ch
|
|
scope: Namespaced
|
|
versions:
|
|
- name: v1alpha1
|
|
served: true
|
|
storage: true
|
|
subresources:
|
|
status: {}
|
|
additionalPrinterColumns:
|
|
- name: Type
|
|
type: string
|
|
jsonPath: .spec.type
|
|
- name: Ready
|
|
type: boolean
|
|
jsonPath: .status.ready
|
|
- name: Age
|
|
type: date
|
|
jsonPath: .metadata.creationTimestamp
|
|
schema:
|
|
openAPIV3Schema:
|
|
type: object
|
|
properties:
|
|
spec:
|
|
type: object
|
|
required: [type, botTokenSecretRef]
|
|
properties:
|
|
type:
|
|
type: string
|
|
description: Channel type (discord, slack, telegram)
|
|
botTokenSecretRef:
|
|
type: object
|
|
required: [name, key]
|
|
properties:
|
|
name:
|
|
type: string
|
|
key:
|
|
type: string
|
|
webhookURL:
|
|
type: string
|
|
guildID:
|
|
type: string
|
|
defaultChannel:
|
|
type: string
|
|
allowedChannels:
|
|
type: array
|
|
items:
|
|
type: string
|
|
status:
|
|
type: object
|
|
properties:
|
|
ready:
|
|
type: boolean
|
|
connected:
|
|
type: boolean
|
|
condition:
|
|
type: string
|
|
lastConnected:
|
|
type: string
|
|
format: date-time
|