[Airship-discuss] Airship V2 and interaction with kubernetes

Kanwar Saad kanwar.sbl at gmail.com
Mon Sep 30 09:52:33 UTC 2019


Hi,

We have worked with other options also. Although they are built on top of
k8s/go-client, they don't fulfill completely all use-cases which we
require. Anyway using these libraries is better than using raw go-client
directly. What we might need is a minimal shim on top of these libraries to
use relevant functionality when required.

   -
   https://godoc.org/github.com/kubernetes-sigs/controller-runtime/pkg/client
   - this client is used by all k8s controllers for reconciling and
      performing other actions.
      - it can handle structured and unstructured data. see example (
      https://godoc.org/github.com/kubernetes-sigs/controller-runtime/pkg/client#example-Client--Create
      )
      - It has high-level functions and also gives access to raw rest
      mappers for low-level functionality.
   -
   https://github.com/kubernetes-sigs/cluster-api/tree/master/cmd/clusterctl/clusterdeployer/clusterclient
   - there were several helper functions created for cluster API operations
      in clusterctl.
      - Much of this functionality we might need but it is not
      production-ready.
      - clusterctl is deprecated and clusteradm is introduced instead of
      this. We don't know how much of this functionality will evolve.
      - We can reuse some stuff from here while creating our own shim.


Br,
Kanwar

On Fri, Sep 27, 2019 at 2:53 AM Kostiantyn Kalynovskyi <
kkalynovskyi at mirantis.com> wrote:

> Hello Airship team, in the light of development of Airship v2.0 , we are
> now coming to the point where we need to interact with deployed kubernetes
> clusters, ephemeral or target.
>
> So far I have found 2 major options for this communication:
>
>    - k8s/go-client library with dynamic client and RESTmapper
>       - we would have to build our own wrapper over it, that would
>       implement some of the kubectl functionality as well as some of kustomize
>       functionality
>       - with this approach, we can develop any input driver of our own,
>       like golang structs, runtime.Object, []bytes, filesystem etc... (i think it
>       is quite a lot of effort)
>    - use k8s/kubectl as a library:
>       - encompasses both *kustomize*, via *FilenameOptions.Kustomize, *and
>       default *kubectl *functionality.
>       - Has limited input capabilities (I think), read from stdin, or
>       directly from filesystem
>       - With this approach we would not care, what resources we are
>       dealing with.
>       - And in the light of development of *airship document *command, we
>       would have to keep those limitations in mind.
>       - *airshipctl document* subcommands would have to filter, for
>       example based on annotations required resources, and simply provide *root
>       directory*, where kustomize starts working, the rest would be done
>       for example by KubeApply.Run() function with correct
>       FilenameOptions.Kustomize flag.
>       - There is a con, kubectl is a cmd tool itself, and sometimes using
>       it as a library maybe be complicated, (not sure about that though)
>
>
> If someone has any ideas, relevant experience or advice, it would be
> greatly appreciated, thank you in advance.
> _______________________________________________
> Airship-discuss mailing list
> Airship-discuss at lists.airshipit.org
> http://lists.airshipit.org/cgi-bin/mailman/listinfo/airship-discuss
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.airshipit.org/pipermail/airship-discuss/attachments/20190930/ca197113/attachment.html>


More information about the Airship-discuss mailing list