Class: Kube::Cluster::Manifest::Middleware

Inherits:
Object
  • Object
show all
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

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

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