How to enable mfe on Kubernetes?

I’ve enabled other plugins which are running fine on a recently upgraded installation of Maple that is running on a newly-created Kubernetes cluster. For some reason i’m getting an error about kubernetes “trying and failing to pull image for openedx/mfe-*** (mfe)”.

I’m following the installation instructions from the README, which are as follows

          pip install tutor-mfe
          tutor plugins enable mfe
          tutor config save

# console output:
# ----------------------
Successfully built tutor-mfe
Installing collected packages: tutor-mfe
Successfully installed tutor-mfe-13.0.4
Plugin mfe enabled
Configuration saved to /home/runner/work/openedx_devops/openedx_devops/tutor/config.yml
You should now re-generate your environment with `tutor config save`.
Configuration saved to /home/runner/work/openedx_devops/openedx_devops/tutor/config.yml

Seems simple, but I end up with a status of “ImagePullBackOff” afterwards. see screen shot below.


Has anyone seen this before?

I also have this exact error message since past few days.

@chintan, Here’s what I learned:

  1. mfe runs from its own image which you need to build and push to a public registry, the same as you already are doing for openedx.
  2. during deployments you need to point tutor to this registry.

I added a Github Actions workflow to the Cookiecutter devops repo that demonstrates step one: tutor_build_mfe_image.yml, and i also added the additional step to the prod deployment workflow, tutor_deploy_prod.yml

Summarizing the exact commands:

  1. build the image:
          pip install tutor-mfe
          tutor plugins enable mfe
          tutor config save --set MFE_DOCKER_IMAGE=URI-OF-YOUR-IMAGE
          tutor images build mfe
          tutor images push mfe
          docker tag URI-OF-YOUR-IMAGE:latest
          docker push URI-OF-YOUR-IMAGE:latest
  1. deploy the plugin
          tutor config save --set MFE_DOCKER_IMAGE=URI-OF-YOUR-IMAGE
          pip install tutor-mfe
          tutor plugins enable mfe
          tutor config save

Note that unlike the openedx image, subsequent rebuilds of the mfe image are not automatically redeployed into the Kubernetes cluster. For some reason, I have to manually restart the mfe pod in order to get the latest build of the mfe image running in the cluster.

I can also share real-world code for this, as follows:

2 Likes

Note to anyone with this issue: The ingress for mfe looks like the following

  - host: apps.yourdomain.edu
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: mfe
            port:
              number: 8002
2 Likes

An update on this question: since tutor 14.x it’s no longer necessary to build your own container as overhangio now takes care of this for you. see: https://hub.docker.com/r/overhangio/openedx-mfe

see this thread for configuration details related to olive release and tutor 15.x: How to configure MFE's on Kubernetes Olive.1 with tutor version 15.x?