• kubebuilder:printcolumn - Adding back the AGE column

    1 min read

    Operator-SDK kubebuilder printcolumn age

    If we use //+kubebuilder:printcolumn to add fields to print with kubectl get we'll notice that the AGE colum goes away with it. We can use an additional //+kubebuilder:printcolumn to add the AGE column back.

    29/08/2023

    Read more...
  • Operator-SDK: Create a group of objects that can be queried together

    2 min read

    Operator-SDK CustomResourceDefinition categories groups

    When you have several kubernetes objects (CRDs) that work together it can be useful to be able to query them all together to get a better idea of what's deployed without having to query all the individial resources. With operator-SDK we just need to annotate the objects.

    01/08/2023

    Read more...
  • Operator-SDK: Set custom fields for kubectl get

    2 min read

    Kubernetes Operator-SDK CustomResourceDefinition additionalPrinterColumns get fields

    When writing a custom Kubernetes operator using operator-sdk we might want to change the fields are show when running kubectl get:

    $ kubectl get example
    NAME   AGE
    demo   4h20m
    

    To do so, we'll need to add the additionalPrinterColumns field the the CustomResourceDefinition, but since we are using operator-sdk to take care of this, we'll need to use some annotations in the resource definition file.

    15/05/2023

    Read more...
  • How to Change the Scope of a Kubernetes API Resource with Operator-SDK

    2 min read

    Kubernetes API Resource Operator-SDK CustomResourceDefinition Namespaced Cluster Scope

    When creating a new API resource using the operator-sdk we can use the namespaced flag to make it Namespaced:

    $ operator-sdk create api --group group \
                              --version v1 \
                              --kind Example \
                              --resource \
                              --controller
    

    Or in the cluster scope:

    $ operator-sdk create api --group group \
                              --version v1 \
                              --kind Example \
                              --resource \
                              --controller \
                              --namespaced=false
    

    Maybe because we forgot to add the flag or because we have changed our mind, we don't need delete the object to change the scope of it, let's see how.

    05/04/2023

    Read more...
  • Building a Kubernetes operator using operator-sdk (golang)

    7 min read

    Kubernetes operator-sdk

    With the operator pattern we are going to define the state we want it to be an let the controller do changes on it so the current state matches the desired state

    Using the operator-sdk we can focus on the code that makes this happen rather than on all the boiler-plate that is going to be involved on it

    21/06/2022

    Read more...

From pet to cattle
Treat your kubernetes clusters like cattle, not pets