An open API service indexing awesome lists of open source software.

https://github.com/silverbirder/micro-frontends-on-kubernetes

micro frontends application works on kubernetes
https://github.com/silverbirder/micro-frontends-on-kubernetes

kubernetes micro-frontends minikube

Last synced: 9 months ago
JSON representation

micro frontends application works on kubernetes

Awesome Lists containing this project

README

          

# micro-frontends-on-kubernetes
micro frontends application works on kubernetes
fork by https://github.com/neuland/micro-frontends

![micro-frontends-application](https://res.cloudinary.com/silverbirder/image/upload/v1568757697/micro-frontend-in-kubernetes/micro-frontend-in-kubernetes.png)
# Usage
## My Env
```
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.14.6
BuildVersion: 18G84
$ docker -v
Docker version 19.03.1, build 74b1e89
```

## Install
### minikube
use [minikube](https://github.com/kubernetes/minikube) for single cluster or single node

``` bash
$ brew cask install minikube
$ curl -LO https://storage.googleapis.com/minikube/releases/latest/docker-machine-driver-hyperkit \
&& sudo install -o root -m 4755 docker-machine-driver-hyperkit /usr/local/bin/
$ minikube start --vm-driver=hyperkit
$ eval $(minikube docker-env)
```

### kind
use [kind](https://github.com/kubernetes-sigs/kind) for multi clusters or multi nodes

```bash
$ brew install go
$ go version
go version go1.13 darwin/amd64
$ PATH=${PATH}:$(go env GOPATH)/bin
$ kind create cluster
$ export KUBECONFIG="$(kind get kubeconfig-path --name="kind")"
```

## Build & Load
```bash
$ cd team-blue && docker build -t team-blue . && cd ..
$ cd team-green && docker build -t team-green . && cd ..
$ cd team-red && docker build -t team-red . && cd ..
$ cd team-black && docker build -t team-black . && cd ..
```

※ The yaml files was generated using [kompose](https://github.com/kubernetes/kompose)

next step is for kind
```bash
$ kind load docker-image team-blue:1.0.0
$ kind load docker-image team-green:1.0.0
$ kind load docker-image team-red:1.0.0
$ kind load docker-image team-black:1.0.0
```
### skaffold

[skaffold](https://github.com/GoogleContainerTools/skaffold) is
> Easy and Repeatable Kubernetes Developmen

I use it for minikube

```
$ brew install skaffold
```
## Prepare
### Database

```bash
$ find . -name "mysql*.yaml" | xargs -I {} kubectl apply -f {}
```

```
$ kubectl run mysql-client --image=mysql:5.7 -i --rm --restart=Never -- mysql -h mysql-0.mysql < team-red-secrets && \
kubectl create secret generic team.red --from-env-file=./team-red-secrets
```

※ [sentry](https://docs.sentry.io/error-reporting/quickstart/?platform=browser#configure-the-sdk)

## Apply
```bash
$ find . -name "*.yaml" | grep -v "skaffold.yaml" |xargs -I {} kubectl apply -f {}
$ kubectl port-forward $(k get pods | grep nginx | awk '{print $1}') 3000:3000
```

or

```bash
$ skaffold dev --port-forward
```

## Delete
```bash
$ find . -name "*.yaml"|xargs -I {} kubectl delete -f {}
```

next step is for kind
```bash
$ kind delete cluster --name kind
```

```bash
$ docker images | grep "team-" | awk '{print $3}' | xargs docker rmi -f
```