Skip to content

Fold enterprise components into the calico mono-image#4782

Open
caseydavenport wants to merge 18 commits intotigera:masterfrom
caseydavenport:casey-cobra-prep
Open

Fold enterprise components into the calico mono-image#4782
caseydavenport wants to merge 18 commits intotigera:masterfrom
caseydavenport:casey-cobra-prep

Conversation

@caseydavenport
Copy link
Copy Markdown
Member

Operator companion to https://github.com/tigera/calico-private/pull/11681. Each migrated enterprise component is pointed at CombinedCalicoImage(installation) with a container Command of [/usr/bin/calico, component, <name>], and where probes used per-component health binaries they switch to the generic calico health --port=<port> --type=... form.

ComponentX entries are removed from pkg/components/enterprise.go, hack/gen-versions/enterprise.go.tpl, and config/enterprise_versions.yml. Render and controller tests are updated to expect tigera/calico rather than the per-component image.

Components migrated

voltron, manager (ui-apis + dashboard-api), apiserver/l7-admission-controller, applicationlayer/l7-collector, packetcapture, prometheus-service, webhooks-processor, queryserver, policy-recommendation, linseed, compliance (server/controller/reporter/snapshotter), intrusion-detection-controller, elasticsearch-metrics, es-gateway, gateway/waf-http-filter.

Notes

  • Render-test installation specs needed Variant: TigeraSecureEnterprise set explicitly, otherwise CombinedCalicoImage returns calico/calico (OSS) and the tests fall through. Same pattern as the packetcapture commit.
  • waf-http-filter args switched from single-dash to double-dash since the cobra/pflag parser is stricter than stdlib flag.
  • Last commit dedupes the shared logstorage imageset fixtures - they had stale tigera/linseed plus multiple tigera/calico entries with different digests, which made the reconcilers either reject the imageset or pick the wrong digest.
None

Linseed now ships as a cobra subcommand of the combined calico binary,
so render the deployment with the calico image and dispatch via
"calico component linseed". Probes use the matching ready/live
subcommands.
Render the tigera-prometheus authn-proxy container with the calico
image and dispatch via "calico component prometheus-service".
Render the policy-recommendation-controller container with the calico
image and dispatch via "calico component policy-recommendation".
Drop ComponentSecurityEventWebhooksProcessor from the enterprise
component list and point the webhooks-processor container in the
intrusion detection render at CombinedCalicoImage with the
"calico component webhooks-processor" entrypoint.
Drop ComponentQueryServer from the enterprise component list and
point the queryserver container in the apiserver render at
CombinedCalicoImage with the "calico component queryserver"
entrypoint.

Also drop the stale ComponentTigeraPrometheusService list reference
in the enterprise template that was left behind by the
prometheus-service migration.
Drop ComponentPacketCapture from the enterprise component list and
point the packetcapture container in the packet-capture API render
at CombinedCalicoImage with the "calico component packetcapture"
entrypoint.
Point the l7-collector container at CombinedCalicoImage with command
[/usr/bin/calico component l7-collector]. ComponentL7Collector and
its config/template entries are dropped — the collector now ships
inside the combined calico image.
The packet capture api is enterprise-only, so the test installations
need to declare the Enterprise variant for CombinedCalicoImage to
resolve to the tigera image. Was relying on the empty default before
the move to CombinedCalicoImage.
Point the calico-l7-admission-controller container at CombinedCalicoImage
with command [/usr/bin/calico component l7-admission-controller].
ComponentL7AdmissionController and its config/template entries are
removed - it ships inside the combined calico image now.
Drop ComponentUIAPIs from enterprise.go, the gen-versions template,
and config/enterprise_versions.yml, and point both the ui-apis and
dashboard-api containers in the manager deployment at
CombinedCalicoImage(installation) with the corresponding
'calico component <name>' entrypoints. The dashboard readiness probe
becomes 'calico component dashboards ready'.
…snapshotter

Compliance server, controller, reporter, and snapshotter now run from
the calico mono-image via "calico component <name>" subcommands.
Benchmarker stays on its own image since it bundles kube-bench and
kubectl.
IDC now runs from the calico mono-image via "calico component
intrusion-detection-controller". Liveness probe uses the generic
calico health exec command against port 50000.
Runs from the calico mono-image via "calico component
elasticsearch-metrics".
Migrate es-gateway to run as a subcommand of the calico mono-image
binary.
Migrate waf-http-filter to run as a subcommand of the calico mono-image
binary.
…imageset entries

Fallout from folding linseed and other components into the calico
mono-image. The shared imageset fixtures still listed tigera/linseed and
had multiple tigera/calico entries with different digests, which caused
the reconcilers to either reject the imageset or pick the wrong digest.
Pair to the calico-private change that brings back a thin IDC image
wrapping calico with the GeoIP databases layered on top. Operator
points the IDC controller container back at
ComponentIntrusionDetectionController so the deployment pulls the
wrapper instead of the bare calico image.

The binary itself still ships as a cobra subcommand of calico - the
wrapper image's entrypoint is calico component intrusion-detection-controller.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants