Uploaded image for project: 'Nuxeo Dev Environment'
  1. Nuxeo Dev Environment
  2. NXDEV-5

Nuxeo Dev Environment

    XMLWordPrintable

    Details

    • Type: Epic
    • Status: Open
    • Priority: Minor
    • Resolution: Unresolved

      Description

      POC around new Docker based developer environment, see: https://gist.github.com/akervern/3df5b2e2474b9fd091cd553da17be14e

       

      Challenges

      • Ready to use containerized dev environment
        • Configure tooling (git, maven, docker, kubectl, …)
        • Cloud tooling available (aws, gcloud, azure, …)
          • Configuration? Persist config?
        • Third parties tools (Nuxeo CLI, kafka, mongo shell, …)
      • Build Java and NPM
      • Deploy/Build Container Image Output within Container
        • Build Container
          • Push Container to accessible registry
          • Update Deployment
            • Helm => values.yml
            • Docker-compose => docker-compose.yml
      • Enable Docker Dev Mode
        • Container environment variable NUXEO_DEV
      • Live Preview
        • Java Hot-Reload Valve
          • nuxeocli hotreload
        • Web-resources sync
          • nuxeocli synchronize
            • improve to take care studio sources
            • Make it more adaptive to target env; docker, k8s and local.
          • Debug hot-swap
            • Expose proper port; 8787
        • Web Browser Extension
      • Persistance
        • Configuration
          • /etc/nuxeo/conf.d
        • Data

      Possible Deployment:

       

      Docker-Compose (local)

       

      Pros:

      • Easy to setup
      • Sharable data between runtime and dev environment (local FS)
      • Shares local Docker Registry

      Cons:

      • Dev Environment is ran locally
      • Doesn’t fit Nuxeo Helm deployment description
      • Might not fit production deployment

       

      Docker+Kubernetes (Dev local Docker + Kubernetes)

       

      Pros:

      • Fits Nuxeo Helm deployment description
      • Proper step for a production deployment based on K8s
      • Nuxeo runtime can be ran on the cloud/remote cluster

      Cons:

      • Requires K8s knowledges, Helm, Ingress controller, …
      • Slightly harder to setup (even with kind, k3d, …), requires Container registry shared between local/k8s.
      • Dev Environment is ran locally

       

      Kubernetes (Full Kubernetes)

       

      Pros:

      • Doesn’t depend at all of local machine

      Cons:

      • It’s a workspace manager app that we need
      • … but it’s doable w/o, as a POC-of-POC, if we make a very simplistic workspace management.

       

      Implementation differences:

       

      Feature Local (docker-compose) Local + Kubernetes Full Kubernetes
      Docker Build Docker CLI Docker CLI ? depends on K8s container impl
      Docker Push Local Registry Manual step; needs shared remote registry, or impl specific cmd (kind, k3d.)  ? depends on K8s container impl
      Java Hot Reload Nuxeo CLID wraps `docker cp` bundles into container + HTTP valve trigger. Nuxeo CLI wraps `kubectl cp` bundles into container + HTTP Valve trigger Nuxeo CLI wraps `kubectl cp` bundles into container + HTTP Valve trigger
      Web Resources sync `nuxeocli` synchronize based on `docker cp` `nuxeocli` synchronize based on `kubectl cp` `nuxeocli` synchronize based on `kubectl cp`
      Deployment docker-compose (specific) Nuxeo helm chart helm chart
      Debug/Hot Swap Expose 8787 port-forward 8787 port-forward 8787
      Browser Extension Ok Ok Ok
      Data Persistence Local volume on /usr/lib/nuxeo    
      Configuration Local volume on /etc/nuxeo/conf.d Describe in Helm values.yaml Describe in Helm values.yaml

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                akervern Arnaud Kervern
                Participants:
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated: