Bird
Raised Fist0
Kubernetesdevops~20 mins

Operator SDK basics in Kubernetes - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
Operator SDK Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
2:00remaining
Operator SDK: Initializing a new operator project
What is the output when you run operator-sdk init --domain=example.com --repo=github.com/example/memcached-operator in an empty directory?
ACreates a new operator project with Go modules initialized and a basic directory structure including API and controllers folders.
BThrows an error because the --repo flag is missing a version number.
CInitializes a Helm chart inside the directory instead of a Go operator project.
DOutputs a warning that the domain is invalid and aborts the initialization.
Attempts:
2 left
💡 Hint
The init command sets up the project structure and Go modules for a new operator.
🧠 Conceptual
intermediate
1:30remaining
Understanding Operator SDK project structure
Which folder in an Operator SDK Go project contains the Custom Resource Definitions (CRDs) and API types?
Acontrollers
Bapi
Cconfig
Dbuild
Attempts:
2 left
💡 Hint
Think about where you define the schema and types for your custom resources.
🔀 Workflow
advanced
2:00remaining
Operator SDK: Adding a new API version
You want to add a new version v2 to your existing API group memcached.example.com. Which command correctly adds this new version?
Aoperator-sdk generate api --group memcached --version v2 --kind Memcached
Boperator-sdk add api --group memcached --version v2 --kind Memcached
Coperator-sdk init --group memcached --version v2 --kind Memcached
Doperator-sdk create api --group memcached --version v2 --kind Memcached --resource --controller
Attempts:
2 left
💡 Hint
Use the command that creates API and controller code for a new version.
Troubleshoot
advanced
2:30remaining
Operator SDK: Debugging a failed operator build
You run make docker-build but get an error: cannot find module providing package sigs.k8s.io/controller-runtime. What is the most likely cause?
AThe Go modules are not properly initialized or dependencies are missing in go.mod.
BDocker daemon is not running, so the build cannot access the network.
CThe operator-sdk CLI version is outdated and incompatible with the project.
DThe Kubernetes cluster is not reachable, causing the build to fail.
Attempts:
2 left
💡 Hint
Check if your Go dependencies are correctly set up before building.
Best Practice
expert
3:00remaining
Operator SDK: Recommended way to test your operator locally
Which approach is the best practice to test your Operator SDK Go operator locally before deploying to a Kubernetes cluster?
ABuild the operator image and push it to Docker Hub, then deploy it to a remote cluster.
BUse <code>operator-sdk test local</code> to run end-to-end tests against a live cluster.
CRun the operator binary locally with <code>make run</code> and connect to a local kind cluster.
DManually apply CRDs and resources using kubectl without running the operator binary.
Attempts:
2 left
💡 Hint
Local testing usually involves running the operator process directly connected to a test cluster.

Practice

(1/5)
1. What is the primary purpose of the Operator SDK in Kubernetes?
easy
A. To monitor network traffic in Kubernetes
B. To replace Kubernetes API server
C. To help automate application management on Kubernetes clusters
D. To create Kubernetes clusters automatically

Solution

  1. Step 1: Understand Operator SDK's role

    The Operator SDK is designed to simplify building and managing Kubernetes operators, which automate app lifecycle tasks.
  2. Step 2: Compare options

    Options A, B, and C describe unrelated Kubernetes functions, while D correctly states the SDK's purpose.
  3. Final Answer:

    To help automate application management on Kubernetes clusters -> Option C
  4. Quick Check:

    Operator SDK automates app management = D [OK]
Hint: Remember: Operator SDK automates app tasks on Kubernetes [OK]
Common Mistakes:
  • Confusing Operator SDK with Kubernetes cluster creation tools
  • Thinking Operator SDK replaces core Kubernetes components
  • Assuming it monitors network traffic
2. Which command initializes a new Operator SDK project?
easy
A. operator-sdk create api
B. operator-sdk start
C. kubectl init operator
D. operator-sdk init

Solution

  1. Step 1: Identify the command to start a project

    The operator-sdk init command sets up a new operator project structure.
  2. Step 2: Eliminate incorrect commands

    create api adds resources, kubectl init operator is invalid, and start is not a recognized init command.
  3. Final Answer:

    operator-sdk init -> Option D
  4. Quick Check:

    Init command for project setup = B [OK]
Hint: Use 'init' to start your operator project [OK]
Common Mistakes:
  • Confusing 'create api' with project initialization
  • Using kubectl commands instead of operator-sdk
  • Trying 'start' instead of 'init'
3. What will happen if you run operator-sdk create api --group=app --version=v1 --kind=AppService?
medium
A. It creates a new API and resource type named AppService in group app/v1
B. It deletes the existing AppService resource
C. It initializes a new operator project
D. It runs the operator locally

Solution

  1. Step 1: Understand the create api command

    The command operator-sdk create api adds a new API resource to the operator project with specified group, version, and kind.
  2. Step 2: Analyze the command parameters

    Here, group is 'app', version is 'v1', and kind is 'AppService', so it creates that resource type.
  3. Final Answer:

    It creates a new API and resource type named AppService in group app/v1 -> Option A
  4. Quick Check:

    Create API command adds resource = A [OK]
Hint: Create API adds resource with group, version, kind [OK]
Common Mistakes:
  • Thinking it deletes resources
  • Confusing create api with init
  • Assuming it runs the operator
4. You ran operator-sdk init --domain=example.com app-operator but got an error. What is a common cause?
medium
A. Missing Go module initialization before running init
B. Using an invalid domain format
C. Not having Kubernetes cluster running
D. Running create api before init

Solution

  1. Step 1: Check prerequisites for operator-sdk init

    The Operator SDK requires a Go module initialized (via go mod init) before running init.
  2. Step 2: Evaluate other options

    Domain format is usually flexible, Kubernetes cluster is not needed for init, and create api must come after init, not before.
  3. Final Answer:

    Missing Go module initialization before running init -> Option A
  4. Quick Check:

    Go module must be ready before init = C [OK]
Hint: Always run 'go mod init' before 'operator-sdk init' [OK]
Common Mistakes:
  • Ignoring Go module setup
  • Assuming cluster must be running for init
  • Running create api before init
5. You want to test your operator locally before deploying. Which command should you run?
hard
A. operator-sdk deploy cluster
B. operator-sdk up local
C. kubectl apply -f deploy.yaml
D. operator-sdk create api

Solution

  1. Step 1: Identify command for local testing

    The operator-sdk up local command runs the operator locally on your machine for testing.
  2. Step 2: Compare other options

    deploy cluster deploys to cluster, kubectl apply applies manifests, and create api adds resources, none run locally.
  3. Final Answer:

    operator-sdk up local -> Option B
  4. Quick Check:

    Run local command tests operator locally = A [OK]
Hint: Use 'up local' to test operator on your machine [OK]
Common Mistakes:
  • Trying to deploy before local testing
  • Confusing create api with running operator
  • Using kubectl instead of operator-sdk for local run