# Operator SDK — Build Kubernetes Operators in Go, Ansible, or Helm > A framework for building Kubernetes operators that automate the management of complex applications. Operator SDK scaffolds, builds, and tests operators using Go, Ansible, or Helm, following best practices from the Operator Framework. ## Install Save in your project root: # Operator SDK — Build Kubernetes Operators in Go, Ansible, or Helm ## Quick Use ```bash brew install operator-sdk operator-sdk init --domain example.com --repo github.com/me/my-operator operator-sdk create api --group app --version v1alpha1 --kind MyApp --resource --controller make install run ``` ## Introduction Operator SDK is part of the Operator Framework, a CNCF project for building Kubernetes-native applications. It provides the tools to scaffold, build, and publish operators that encode operational knowledge into software. Whether you prefer Go, Ansible, or Helm, Operator SDK gives you a structured path from idea to production operator. ## What Operator SDK Does - Scaffolds new operator projects with CRDs, controllers, and RBAC in seconds - Supports three development models: Go (full control), Ansible (playbook-driven), and Helm (chart-driven) - Generates CRD manifests and RBAC rules from Go types and markers automatically - Integrates with OLM (Operator Lifecycle Manager) for packaging and distribution - Provides scorecard testing to validate operator best practices and readiness ## Architecture Overview An operator built with the SDK follows the controller-runtime pattern. Custom Resource Definitions (CRDs) define the desired state, and reconciler functions watch for changes and drive the actual state to match. The SDK scaffolds this structure, generates deepcopy methods and CRD YAML from Go struct tags, and bundles everything into a container image. For Ansible operators, the SDK translates CR events into Ansible playbook runs. For Helm operators, it maps CR specs to Helm chart values and manages releases. ## Self-Hosting & Configuration - Install the CLI via `brew install operator-sdk` or download the binary from GitHub releases - Initialize a project with `operator-sdk init` specifying your Go module and domain - Create APIs with `operator-sdk create api` to scaffold CRDs and controllers - Build and push the operator image with `make docker-build docker-push` - Deploy to a cluster with `make deploy` which applies CRDs, RBAC, and the controller deployment ## Key Features - Three operator types: Go for maximum flexibility, Ansible for existing playbooks, Helm for chart wrapping - Automatic CRD generation from Go types with kubebuilder markers - OLM integration for operator packaging, versioning, and catalog distribution - Scorecard tests validate upgrade paths, CRD best practices, and bundle correctness - Built on controller-runtime, the standard library for Kubernetes controllers ## Comparison with Similar Tools - **Kubebuilder** — Operator SDK embeds Kubebuilder for Go; adds Ansible, Helm, and OLM support on top - **KUDO** — Declarative operator toolkit; less flexible than Operator SDK for custom logic - **Metacontroller** — Webhook-based lightweight controllers; Operator SDK provides full in-process reconciliation - **Kopf** — Python operator framework; Operator SDK focuses on Go, Ansible, and Helm ecosystems - **Shell-operator** — Run shell scripts as operators; simpler but less structured than Operator SDK ## FAQ **Q: Should I use the Go, Ansible, or Helm operator type?** A: Use Helm if you already have a Helm chart and need basic lifecycle management. Use Ansible if your team knows Ansible well. Use Go for complex reconciliation logic and maximum performance. **Q: How does Operator SDK relate to Kubebuilder?** A: Operator SDK uses Kubebuilder under the hood for Go-based operators. It adds Ansible and Helm support, OLM integration, and the scorecard testing framework. **Q: Can I publish my operator to OperatorHub?** A: Yes. Use `operator-sdk bundle create` to build an OLM bundle, then submit it to OperatorHub.io or your organization's private catalog. **Q: What Kubernetes versions are supported?** A: Operator SDK follows controller-runtime compatibility, generally supporting the three most recent Kubernetes minor versions. ## Sources - https://github.com/operator-framework/operator-sdk - https://sdk.operatorframework.io/docs/ --- Source: https://tokrepo.com/en/workflows/37488936-3990-11f1-9bc6-00163e2b0d79 Author: AI Open Source