hm4: own hosting operator CRDs and RBAC

This commit is contained in:
Andrew Stoltz
2026-06-17 13:47:40 -05:00
parent 4f7a5f3d20
commit a0d79eeb8c
13 changed files with 1217 additions and 0 deletions

View File

@@ -0,0 +1,167 @@
{
"apiVersion": "apiextensions.k8s.io/v1",
"kind": "CustomResourceDefinition",
"metadata": {
"name": "mysqlreplicacrds.flowercore.io"
},
"spec": {
"group": "flowercore.io",
"names": {
"kind": "MySqlReplicaCrd",
"listKind": "MySqlReplicaCrdList",
"plural": "mysqlreplicacrds",
"singular": "mysqlreplicacrd",
"shortNames": [
"mysqlreplica",
"mysqlrepl"
]
},
"scope": "Namespaced",
"versions": [
{
"name": "v1",
"served": true,
"storage": true,
"schema": {
"openAPIV3Schema": {
"type": "object",
"properties": {
"spec": {
"type": "object",
"properties": {
"action": {
"type": "string",
"description": "Reserved for ADR-039 action dispatch. The replica reconciler is declarative \u2014 promote / failover go through the MySQL Manager Web API instead."
},
"labels": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "Replica topology fields carried as labels (primary-instance, replica-instance, replication-user, replication-user-secret, auto-failover)."
}
}
},
"status": {
"type": "object",
"properties": {
"phase": {
"type": "string",
"description": "Replication phase (Pending, Configuring, Running, Degraded, Failed, Promoted)."
},
"lastApplied": {
"type": "string",
"format": "date-time",
"description": "UTC timestamp of the last successful reconcile."
},
"currentSourceHost": {
"type": "string",
"description": "SOURCE_HOST currently configured on the replica."
},
"currentSourcePort": {
"type": "integer",
"description": "SOURCE_PORT currently configured on the replica."
},
"secondsBehindSource": {
"type": "integer",
"format": "int64",
"description": "Seconds_Behind_Source from SHOW REPLICA STATUS."
},
"replicaIoRunning": {
"type": "string",
"description": "Replica_IO_Running (Yes/No/Connecting)."
},
"replicaSqlRunning": {
"type": "string",
"description": "Replica_SQL_Running."
},
"lastError": {
"type": "string",
"description": "Most recent IO / SQL error text."
},
"lastAction": {
"type": "string"
},
"lastActionStatus": {
"type": "string"
},
"lastActionTimestamp": {
"type": "string",
"format": "date-time"
},
"message": {
"type": "string"
},
"ready": {
"type": "string"
},
"retryCount": {
"type": "integer"
},
"nextRetryAt": {
"type": "string",
"format": "date-time"
},
"conditions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"status": {
"type": "string"
},
"lastTransitionTime": {
"type": "string",
"format": "date-time"
},
"reason": {
"type": "string"
},
"message": {
"type": "string"
}
}
}
}
}
}
}
}
},
"subresources": {
"status": {}
},
"additionalPrinterColumns": [
{
"name": "Phase",
"type": "string",
"jsonPath": ".status.phase"
},
{
"name": "Source",
"type": "string",
"jsonPath": ".status.currentSourceHost"
},
{
"name": "Lag",
"type": "integer",
"jsonPath": ".status.secondsBehindSource"
},
{
"name": "Ready",
"type": "string",
"jsonPath": ".status.ready"
},
{
"name": "Age",
"type": "date",
"jsonPath": ".metadata.creationTimestamp"
}
]
}
]
}
}