Skip to content

Example real time quiz application with .NET Core, React, DDD, Event Sourcing, Docker and built-in infrastructure for CI/CD with k8s, jenkins and helm

Notifications You must be signed in to change notification settings

netcorebcn/quiz

Repository files navigation

Quiz App

Simple EventSourcing example using .NET Core, React, Docker, Jenkins and K8s.

Docker

Minikube

  • run with minikube

    • Setup minikube

      ./k8s/hack/setupkube.sh

    • Setup dnsmasq (optional)

      sudo INGRESS_DOMAIN=quiz.internal ./k8s/hack/setupdns.sh

      Notes: For automatic dns wilcards resolution use dnsmasq

    • Install jenkins and quiz app

      • Export the following environment variables:

        export INGRESS_DOMAIN='quiz.internal'
        export QUIZ_ENVIRONMENT='production'
        export TAG_BRANCH=master
        export REGISTRY=localhost:30400
        export TAG=latest
        
        export JENKINS_PASSWORD=changeit
        export GITHUB_REPO=netcorebcn/quiz
        export GITHUB_USER=mygithubuser
        export GITHUB_TOKEN='<TOKEN>'
      • Execute ./k8s/hack/install.sh

      • Add ingress hosts to local host file (only if dnsmasq is not setup)

        echo $(minikube ip) {jenkins,rabbit,registry}.quiz.internal quiz.internal | sudo tee -a /etc/hosts

      • Open http://jenkins.quiz.internal/job/quiz/ and Build!

      • Once its build Open http://quiz.internal and http://quiz.internal?results

      • Github integration for Pull Request workflow

        ./ngrok http jenkins.quiz.internal:80 -host-header=jenkins.quiz.internal

    Setup script example

    You can use full example setup with ngrok and dnsmasq integration: ./k8s/hack/setup.sh, it requires to store the enviroment variables in a secrets file.

Notes

Some slides on the process here: https://www.slideshare.net/PauLpez3/built-in-cicd-with-kubernetes-jenkins-and-helm

We aren't starting from the scratch. We are using ideas and code from other awesome repos.