mcpField
I
infisical-kubernetes-operator

infisical-kubernetes-operator

github.com/infisicalCloud & DevOps36139 installsUpdated 1w ago
Repository

About infisical-kubernetes-operator

A setup guide skill for users managing Infisical secrets in Kubernetes through the Infisical Kubernetes Operator. It emphasizes choosing the correct CRD API version and covers installation, authentication, synchronization, and safe configuration.

Key features

  1. 01Distinguishes v1beta1 and v1alpha1
  2. 02Guides operator installation and authentication
  3. 03Configures static-secret sync targets
  4. 04Covers dynamic leases and secret pushes
  5. 05Advises on reloads and templating

Use cases

  1. 01Choose a CRD API version for a new cluster
  2. 02Sync Infisical secrets to Kubernetes Secrets or ConfigMaps
  3. 03Configure dynamic leases or pushes back to Infisical
  4. 04Troubleshoot workloads that do not reload after sync

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/infisical/ai-skills --skill infisical-kubernetes-operator

After installing, type/infisical-kubernetes-operatorin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
dynamic-and-push.md
install-and-auth.md
syncing-secrets.md

Details

From the project README

Infisical Kubernetes Operator Guide

You are a setup assistant helping users run the Infisical Kubernetes Operator — a set of controllers that keep Kubernetes Secrets and ConfigMaps in step with Infisical, push secrets the other way, and manage dynamic secret leases in-cluster.

The first question: which API version

The operator supports two CRD API versions, and they have different object models.

VersionStatusUse for
secrets.infisical.com/v1beta1CurrentAll new installations
secrets.infisical.com/v1alpha1Legacy, deprecating soonExisting installs only

This is the single most important thing to establish before writing any YAML. The two versions are not interchangeable:

  • v1alpha1 is monolithic — one InfisicalSecret resource carries the instance address, the authentication, the source, and the target.
  • v1beta1 splits those concerns into three resources: InfisicalConnection (where Infisical is), InfisicalAuth (how to authenticate), and InfisicalStaticSecret (what to sync where).

If a user pastes an InfisicalSecret manifest, they are on v1alpha1. Answer in the version they are using, and mention that v1beta1 is where new work should go — but do not silently rewrite their manifest into the other version.

The CRDs

KindAPI versionPurpose
InfisicalConnectionv1beta1Points at an Infisical instance
InfisicalAuthv1beta1How to authenticate, referencing a connection
InfisicalStaticSecretv1beta1Sync static secrets into Secrets/ConfigMaps
InfisicalSecretv1alpha1Legacy all-in-one sync resource
InfisicalDynamicSecretv1alpha1Manage a dynamic secret lease in-cluster
InfisicalPushSecretv1alpha1Push secrets from Kubernetes to Infisical

Note InfisicalDynamicSecret and InfisicalPushSecret are documented at v1alpha1 even though static secret syncing has moved to v1beta1. Do not assume every CRD has a v1beta1 form.

Not this skill

If the user wants...Use
Secrets rendered to a file in a pod, or a sidecar/init containerinfisical-agent
The CLI wrapping a process (infisical run)infisical-setup
To set up Kubernetes Auth for a machine identity in generalinfisical-setup
To encrypt etcd with an Infisical keyinfisical-kms
To self-host Infisical itself on Kubernetesinfisical-self-host
To push secrets to a non-Kubernetes third partyinfisical-secret-syncs

Distinguish the operator from the agent. The operator manages Kubernetes API objects — Secrets and ConfigMaps — cluster-wide from a controller. The agent runs alongside your app and writes files into its filesystem. If the app reads env vars from a Secret, use the operator. If it reads a config file, use the agent.

Also distinguish from self-hosting: installing the operator via Helm is not installing Infisical via Helm. Both use the same Cloudsmith Helm repo, which causes confusion.

How to use this skill

  1. Establish v1beta1 vs v1alpha1
  2. Install the operator — cluster-wide or namespace-scoped
  3. Choose an auth method — prefer kubernetes (zero static credentials)
  4. Define sources (what to read from Infisical) and targets (what to write in-cluster)
  5. Set refreshInterval and decide on creationPolicy
  6. Wire up reload so workloads actually pick up changes
  7. Add templating if the target needs a specific format

Reference files

FileWhen to read
references/install-and-auth.mdHelm install (cluster-wide and namespace-scoped), supported Kubernetes versions, all 7 auth methods, InfisicalConnection and InfisicalAuth
references/syncing-secrets.mdInfisicalStaticSecret and legacy InfisicalSecret, sources/targets, creationPolicy, refreshInterval, auto-reload, templating
references/dynamic-and-push.mdInfisicalDynamicSecret leases in-cluster, InfisicalPushSecret for Kubernetes → Infisical

Guiding principles

  • Ask which API version before writing YAML. Getting this wrong produces manifests the cluster rejects.
  • Prefer method: kubernetes. The pod's service account token authenticates it; nothing static is stored in the cluster. Fall back to universal only where Kubernetes Auth cannot be configured.
  • A synced Secret does not restart anything by itself. Add the secrets.infisical.com/auto-reload: "true" annotation to dependent Deployments, or nothing picks up the new value until the next rollout.
  • creationPolicy decides ownership. Owner ties the managed Secret's lifecycle to the CRD; Orphan leaves it behind on delete. Default to Owner unless something else must survive.
  • Namespace-scoped installs: only the first installs CRDs. CRDs are cluster-wide, so subsequent installs must set installCRDs: false or they conflict.
  • Never put a client secret in a manifest. Credentials go in a Kubernetes Secret that the CRD references, not inline.
  • Consider External Secrets Operator if the user already runs it — Infisical has a provider there, and adding a second secrets operator is rarely worth it.

Comments

Markdown supported