- Add jarRef and jarPullSecret fields to FlinkJob CRD (jarUri/basicAuth deprecated) - OCI pull via go-containerregistry with dual auth (K8s pull secret + env vars) - Media type validation on pulled layers - Atomic status patches with runningJarRef/runningJarDigest tracking - NeedsUpgrade/RunningRef/RunningRefPatchData domain helpers - README with usage guide, pushing JARs, and GitHub Actions CI/CD workflow - CONTEXT.md domain glossary
141 lines
4.7 KiB
YAML
141 lines
4.7 KiB
YAML
# flink-crd.yaml
|
|
apiVersion: apiextensions.k8s.io/v1
|
|
kind: CustomResourceDefinition
|
|
metadata:
|
|
name: flink-jobs.flink.logicamp.dev
|
|
spec:
|
|
group: flink.logicamp.dev
|
|
names:
|
|
kind: FlinkJob
|
|
plural: flink-jobs
|
|
singular: flink-job
|
|
shortNames:
|
|
- lfj
|
|
scope: Namespaced
|
|
versions:
|
|
- name: v1alpha1
|
|
served: true
|
|
storage: true
|
|
schema:
|
|
openAPIV3Schema:
|
|
type: object
|
|
properties:
|
|
spec:
|
|
type: object
|
|
required:
|
|
- key
|
|
properties:
|
|
key:
|
|
type: string
|
|
name:
|
|
type: string
|
|
flinkCluster:
|
|
type: string
|
|
description: "Identifier of the Flink cluster that manages this job. Defaults to the OPERATOR_ID (usually the Helm release name) if not set."
|
|
entryClass:
|
|
type: string
|
|
parallelism:
|
|
type: integer
|
|
jarRef:
|
|
type: string
|
|
description: "OCI reference to the JAR artifact (e.g. registry.io/org/app:tag). Takes precedence over jarUri."
|
|
jarPullSecret:
|
|
type: string
|
|
description: "Name of a kubernetes.io/dockerconfigjson Secret for registry authentication."
|
|
jarUri:
|
|
type: string
|
|
description: "Deprecated. Use jarRef instead. HTTP(S) URL to the JAR file."
|
|
jarURIBasicAuthUsername:
|
|
type: string
|
|
description: "Deprecated. Use jarPullSecret instead."
|
|
jarURIBasicAuthPassword:
|
|
type: string
|
|
description: "Deprecated. Use jarPullSecret instead."
|
|
args:
|
|
description: "Program arguments. Accepts a list of strings (--key, value, ...) or a map of key-value pairs."
|
|
x-kubernetes-preserve-unknown-fields: true
|
|
savepointInterval:
|
|
type: string
|
|
format: duration
|
|
flinkConfiguration:
|
|
type: object
|
|
additionalProperties:
|
|
type: string
|
|
resources:
|
|
type: object
|
|
properties:
|
|
requests:
|
|
type: object
|
|
properties:
|
|
memory:
|
|
type: string
|
|
cpu:
|
|
type: string
|
|
limits:
|
|
type: object
|
|
properties:
|
|
memory:
|
|
type: string
|
|
cpu:
|
|
type: string
|
|
status:
|
|
type: object
|
|
properties:
|
|
jobStatus:
|
|
type: string
|
|
startTime:
|
|
type: string
|
|
jobId:
|
|
type: string
|
|
jarId:
|
|
type: string
|
|
error:
|
|
type: string
|
|
lastSavepointPath:
|
|
type: string
|
|
lifeCycleStatus:
|
|
type: string
|
|
savepointTriggerId:
|
|
type: string
|
|
lastSavepointDate:
|
|
type: string
|
|
format: time
|
|
lastRestoredSavepointDate:
|
|
type: string
|
|
format: time
|
|
lastRestoredSavepointRestoredDate:
|
|
type: string
|
|
format: time
|
|
runningJarDigest:
|
|
type: string
|
|
description: "SHA256 digest of the currently running JAR layer."
|
|
runningJarRef:
|
|
type: string
|
|
description: "OCI reference of the currently running JAR."
|
|
runningJarURI:
|
|
type: string
|
|
description: "Deprecated. HTTP URI of the currently running JAR."
|
|
pauseSavepointTriggerId:
|
|
type: string
|
|
restoredCount:
|
|
type: number
|
|
additionalPrinterColumns:
|
|
- name: Status
|
|
type: string
|
|
jsonPath: .status.jobStatus
|
|
- name: Age
|
|
type: date
|
|
jsonPath: .metadata.creationTimestamp
|
|
- name: Life Cycle Status
|
|
type: string
|
|
jsonPath: .status.lifeCycleStatus
|
|
- name: Last Savepoint
|
|
type: date
|
|
jsonPath: .status.lastSavepointDate
|
|
- name: Last Restored Savepoint
|
|
type: date
|
|
jsonPath: .status.lastRestoredSavepointDate
|
|
- name: Restored Count
|
|
type: number
|
|
jsonPath: .status.restoredCount
|