oslc-operator

module
v1.16.2-keleustes.2019... Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 2, 2019 License: Apache-2.0

README

Kubernetes Operator for Openstack LCM

Introduction

This README is mainly used a log / wiki of results and challenges encounted during the POC

operator-sdk vs kubebuilder.

Things to clean up: Did not had time to sort how to completly migrate from operator-sdh to kubebuilder. Most of the scaffolding is done using the operator-sdk but once the default files are created, the build process mainly relies on kubebuilder

openstacklcm-operator code directory structure

cmd

Contains the main.go for the openstacklcm operator

pkg/apis/

Contains the golang definition of the CRDs. make generate will recreate the yaml definitions of the CRDs that have to be provided to kubectl in order to deploy the new CRDs.

The first version of the golang code has generated using tool such as "schema-generate" from the schema definition provided with airship-armada project.

pkg/services

Contains the bulk of the interfaces used by the openstacklcm controller.

pkg/osphases

Mainly contain the code for xxxPhase handling

pkg/oslc directory

Mainly contain the code for Oslc (OpenstackServiceLifeCycle) handling

pkg/controller directory

Contains the controller and the "Reconcile" functions for Oslc and xxxPhase.

Code changes.

Adjusting the OpenstackServiceLifeCycle CRDs

Upon change of the CRD golang definition, the yaml files have to be regenerated

Note 1: Don't understand yet how to build using operator-sdk operator with the same level of detailes than controller-gen. Big hack that have to be included in Makefile.

Note 2: The generation tool seems to comply with some of OpenAPI specs. The "validation" schema added to in the CRD yaml definition does not contain fields using underscore. Most of those fields containing underscore where defined such a way in the original airship-armada.

make generate

Compiling the openstacklcm-operator

dep ensure

To build the version

make docker-build

Run unit test and preintegration tests.

If you installed kubebuilder on your system, you will have access to a standalone apiserver, etcd server and kubectl.

Because of a lack of time, the current makefile test statement, will attempt to stop your kubelet and associated container in your local kubernetes cluster, before starting apiserver, etcdserver. TODO: We still need to figure out if it necessary

In order to run the unit tests and the e2e integration tests:

make unittest

Deploying the operator.

Note the current deployment of the operator relies itself on helm.

To install the version

make install

Openstack Service Invidual Phase CRD testing

For testing purpose the current Docker file includes a dummy chart deliverd under armada-charts.

Invidual Phase CRD sanity tests as standalone kubernetes objects

kubectl apply -f examples/phases/

deletephase.openstacklcm.airshipit.org/delete created
ginstallphase.openstacklcm.airshipit.org/install created
operationalphase.openstacklcm.airshipit.org/operational created
planningphase.openstacklcm.airshipit.org/planning created
rollbackphase.openstacklcm.airshipit.org/rollback created
testphase.openstacklcm.airshipit.org/test created
trafficdrainphase.openstacklcm.airshipit.org/trafficdrain created
trafficrolloutphase.openstacklcm.airshipit.org/trafficrollout created
upgradephase.openstacklcm.airshipit.org/upgrade created
kubectl get osupg
kubectl get osrbck
kubectl get osroll
kubectl get osdrain
kubectl get ostest
kubectl get osplan
kubectl get osins
kubectl get osdlt
kubectl describe osupg
kubectl describe osrbck
kubectl describe osroll
kubectl describe osdrain
kubectl describe ostest
kubectl describe osplan
kubectl describe osins
kubectl describe osdlt
for i in `cat phaselist.txt`; do kubectl logs pod/${i}-wf main; done
 ____________________
< workflow 1: delete >
 --------------------
    \
     \
      \
                    ##        .
              ## ## ##       ==
           ## ## ## ##      ===
       /""""""""""""""""___/ ===
  ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
       \______ o          __/
        \    \        __/
          \____\______/
 _____________________
< workflow 1: install >
 ---------------------
    \
     \
      \
                    ##        .
              ## ## ##       ==
           ## ## ## ##      ===
       /""""""""""""""""___/ ===
  ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
       \______ o          __/
        \    \        __/
          \____\______/
 _________________________
< workflow 1: operational >
 -------------------------
    \
     \
      \
                    ##        .
              ## ## ##       ==
           ## ## ## ##      ===
       /""""""""""""""""___/ ===
  ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
       \______ o          __/
        \    \        __/
          \____\______/
 ______________________
< workflow 1: planning >
 ----------------------
    \
     \
      \
                    ##        .
              ## ## ##       ==
           ## ## ## ##      ===
       /""""""""""""""""___/ ===
  ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
       \______ o          __/
        \    \        __/
          \____\______/
 ______________________
< workflow 1: rollback >
 ----------------------
    \
     \
      \
                    ##        .
              ## ## ##       ==
           ## ## ## ##      ===
       /""""""""""""""""___/ ===
  ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
       \______ o          __/
        \    \        __/
          \____\______/
 __________________
< workflow 1: test >
 ------------------
    \
     \
      \
                    ##        .
              ## ## ##       ==
           ## ## ## ##      ===
       /""""""""""""""""___/ ===
  ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
       \______ o          __/
        \    \        __/
          \____\______/
 __________________________
< workflow 1: trafficdrain >
 --------------------------
    \
     \
      \
                    ##        .
              ## ## ##       ==
           ## ## ## ##      ===
       /""""""""""""""""___/ ===
  ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
       \______ o          __/
        \    \        __/
          \____\______/
 ____________________________
< workflow 1: trafficrollout >
 ----------------------------
    \
     \
      \
                    ##        .
              ## ## ##       ==
           ## ## ## ##      ===
       /""""""""""""""""___/ ===
  ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
       \______ o          __/
        \    \        __/
          \____\______/
 _____________________
< workflow 1: upgrade >
 ---------------------
    \
     \
      \
                    ##        .
              ## ## ##       ==
           ## ## ## ##      ===
       /""""""""""""""""___/ ===
  ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
       \______ o          __/
        \    \        __/
          \____\______/
kubectl get all

NAME                                         READY   STATUS      RESTARTS   AGE
pod/delete-wf                                0/2     Completed   0          18s
pod/install-wf                               0/2     Completed   0          18s
pod/openstacklcm-operator-6745fc85f4-b5f76   1/1     Running     0          4m46s
pod/operational-wf                           0/2     Completed   0          18s
pod/planning-wf                              0/2     Completed   0          17s
pod/rollback-wf                              0/2     Completed   0          16s
pod/test-wf                                  0/2     Completed   0          15s
pod/trafficdrain-wf                          0/2     Completed   0          14s
pod/trafficrollout-wf                        0/2     Completed   0          14s
pod/upgrade-wf                               0/2     Completed   0          14s

NAME                            TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)    AGE
service/kubernetes              ClusterIP   10.96.0.1       <none>        443/TCP    34m
service/openstacklcm-operator   ClusterIP   10.101.236.32   <none>        8383/TCP   33m

NAME                                    READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/openstacklcm-operator   1/1     1            1           4m46s

NAME                                               DESIRED   CURRENT   READY   AGE
replicaset.apps/openstacklcm-operator-6745fc85f4   1         1         1       4m46s
kubectl delete -f examples/phases/

deletephase.openstacklcm.airshipit.org "delete" deleted
installphase.openstacklcm.airshipit.org "install" deleted
operationalphase.openstacklcm.airshipit.org "operational" deleted
planningphase.openstacklcm.airshipit.org "planning" deleted
rollbackphase.openstacklcm.airshipit.org "rollback" deleted
testphase.openstacklcm.airshipit.org "test" deleted
trafficdrainphase.openstacklcm.airshipit.org "trafficdrain" deleted
trafficrolloutphase.openstacklcm.airshipit.org "trafficrollout" deleted
upgradephase.openstacklcm.airshipit.org "upgrade" deleted

Invidual Phase CRD sanity tests as part of testservice Helm Chart.

kubectl apply -f examples/testservice/

deletephase.openstacklcm.airshipit.org/delete-phase created
installphase.openstacklcm.airshipit.org/install-phase created
operationalphase.openstacklcm.airshipit.org/operational-phase created
planningphase.openstacklcm.airshipit.org/planning-phase created
rollbackphase.openstacklcm.airshipit.org/rollback-phase created
testphase.openstacklcm.airshipit.org/test-phase created
trafficdrainphase.openstacklcm.airshipit.org/trafficdrain-phase created
trafficrolloutphase.openstacklcm.airshipit.org/trafficrollout-phase created
upgradephase.openstacklcm.airshipit.org/upgrade-phase created
for in `kubectl get pod | grep stage | awk '{print $1}' `; do kubectl logs $i main; done
 _________________________________
/ Executing delete:               \
\ delete-phase-osdlt-delete-stage /
 ---------------------------------
    \
     \
      \
                    ##        .
              ## ## ##       ==
           ## ## ## ##      ===
       /""""""""""""""""___/ ===
  ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
       \______ o          __/
        \    \        __/
          \____\______/
 ___________________________________
/ Executing install:                \
\ install-phase-osins-install-stage /
 -----------------------------------
    \
     \
      \
                    ##        .
              ## ## ##       ==
           ## ## ## ##      ===
       /""""""""""""""""___/ ===
  ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
       \______ o          __/
        \    \        __/
          \____\______/
 _________________________________________
/ Executing operational:                  \
| operational-phase-osops-operational-sta |
\ ge                                      /
 -----------------------------------------
    \
     \
      \
                    ##        .
              ## ## ##       ==
           ## ## ## ##      ===
       /""""""""""""""""___/ ===
  ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
       \______ o          __/
        \    \        __/
          \____\______/
 ______________________________________
/ Executing planning:                  \
\ planning-phase-osplan-planning-stage /
 --------------------------------------
    \
     \
      \
                    ##        .
              ## ## ##       ==
           ## ## ## ##      ===
       /""""""""""""""""___/ ===
  ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
       \______ o          __/
        \    \        __/
          \____\______/
 ______________________________________
/ Executing rollback:                  \
\ rollback-phase-osrbck-rollback-stage /
 --------------------------------------
    \
     \
      \
                    ##        .
              ## ## ##       ==
           ## ## ## ##      ===
       /""""""""""""""""___/ ===
  ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
       \______ o          __/
        \    \        __/
          \____\______/
 ______________________________
/ Executing test:              \
\ test-phase-ostest-test-stage /
 ------------------------------
    \
     \
      \
                    ##        .
              ## ## ##       ==
           ## ## ## ##      ===
       /""""""""""""""""___/ ===
  ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
       \______ o          __/
        \    \        __/
          \____\______/
 _________________________________________
/ Executing trafficdrain:                 \
| trafficdrain-phase-osdrain-trafficdrain |
\ -stage                                  /
 -----------------------------------------
    \
     \
      \
                    ##        .
              ## ## ##       ==
           ## ## ## ##      ===
       /""""""""""""""""___/ ===
  ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
       \______ o          __/
        \    \        __/
          \____\______/
 _________________________________________
/ Executing trafficrollout:               \
| trafficrollout-phase-osroll-trafficroll |
\ out-stage                               /
 -----------------------------------------
    \
     \
      \
                    ##        .
              ## ## ##       ==
           ## ## ## ##      ===
       /""""""""""""""""___/ ===
  ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
       \______ o          __/
        \    \        __/
          \____\______/
 ___________________________________
/ Executing upgrade:                \
\ upgrade-phase-osupg-upgrade-stage /
 -----------------------------------
    \
     \
      \
                    ##        .
              ## ## ##       ==
           ## ## ## ##      ===
       /""""""""""""""""___/ ===
  ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
       \______ o          __/
        \    \        __/
          \____\______/
kubectl delete -f examples/testservice/
deletephase.openstacklcm.airshipit.org "delete-phase" deleted
installphase.openstacklcm.airshipit.org "install-phase" deleted
operationalphase.openstacklcm.airshipit.org "operational-phase" deleted
planningphase.openstacklcm.airshipit.org "planning-phase" deleted
rollbackphase.openstacklcm.airshipit.org "rollback-phase" deleted
testphase.openstacklcm.airshipit.org "test-phase" deleted
trafficdrainphase.openstacklcm.airshipit.org "trafficdrain-phase" deleted
trafficrolloutphase.openstacklcm.airshipit.org "trafficrollout-phase" deleted
upgradephase.openstacklcm.airshipit.org "upgrade-phase" deleted

Directories

Path Synopsis
cmd
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL