Class: Kube::Cluster::Manifest::Middleware
- Inherits:
-
Object
- Object
- Kube::Cluster::Manifest::Middleware
- Defined in:
- lib/kube/cluster/manifest/middleware.rb,
lib/kube/cluster/manifest/middleware/labels.rb,
lib/kube/cluster/manifest/middleware/namespace.rb,
lib/kube/cluster/manifest/middleware/annotations.rb,
lib/kube/cluster/manifest/middleware/resource_preset.rb,
lib/kube/cluster/manifest/middleware/security_context.rb,
lib/kube/cluster/manifest/middleware/pod_anti_affinity.rb,
lib/kube/cluster/manifest/middleware/hpa_for_deployment.rb,
lib/kube/cluster/manifest/middleware/ingress_for_service.rb,
lib/kube/cluster/manifest/middleware/service_for_deployment.rb
Overview
Base class for manifest middleware.
Middleware receives a single resource and returns either:
- A single resource (transform)
- An array of resources (generative — e.g. Deployment in, [Deployment, Service] out)
The stack processes the full manifest at each stage, so resources generated by one middleware flow through all subsequent stages.
Transform example:
class AddTeamLabel < Middleware
def call(resource)
h = resource.to_h
h[:metadata][:labels][:"app.kubernetes.io/team"] = "platform"
rebuild(resource, h)
end
end
Generative example:
class ServiceForDeployment < Middleware
def call(resource)
return resource unless pod_bearing?(resource)
service = build_service_from(resource)
[resource, service]
end
end
Direct Known Subclasses
Annotations, HPAForDeployment, IngressForService, Labels, Namespace, PodAntiAffinity, ResourcePreset, SecurityContext, ServiceForDeployment
Defined Under Namespace
Classes: Annotations, HPAForDeployment, IngressForService, Labels, Namespace, PodAntiAffinity, ResourcePreset, SecurityContext, ServiceForDeployment
Constant Summary collapse
- POD_BEARING_KINDS =
%w[Deployment StatefulSet DaemonSet Job CronJob ReplicaSet].freeze
- CLUSTER_SCOPED_KINDS =
%w[ Namespace ClusterRole ClusterRoleBinding PersistentVolume StorageClass IngressClass CustomResourceDefinition PriorityClass RuntimeClass VolumeAttachment CSIDriver CSINode ].freeze
Instance Method Summary collapse
-
#call(resource) ⇒ Object
Override in subclasses.
-
#initialize(**opts) ⇒ Middleware
constructor
A new instance of Middleware.
Constructor Details
#initialize(**opts) ⇒ Middleware
Returns a new instance of Middleware.
94 95 96 |
# File 'lib/kube/cluster/manifest/middleware.rb', line 94 def initialize(**opts) @opts = opts end |
Instance Method Details
#call(resource) ⇒ Object
Override in subclasses. Receives a single Resource, returns a single Resource (transform) or an array of Resources (generative).
101 102 103 |
# File 'lib/kube/cluster/manifest/middleware.rb', line 101 def call(resource) resource end |