Merge pull request #8 from giolekva/k3d
dev-env: scripts to configure local dev cluster with internal container registry
#7
diff --git a/apps/container-registry/install.yaml b/apps/container-registry/install.yaml
new file mode 100644
index 0000000..bec3383
--- /dev/null
+++ b/apps/container-registry/install.yaml
@@ -0,0 +1,77 @@
+---
+apiVersion: v1
+kind: Namespace
+metadata:
+ name: container-registry
+---
+apiVersion: v1
+kind: Service
+metadata:
+ name: registry
+ namespace: container-registry
+spec:
+ # NOTE(lekva): We use NodePort type service here so container registry accessible
+ # from every node in the cluster without any extra whitelisting.
+ # It is easy to expose such services on host muchine from local dev environment.
+ type: NodePort
+ selector:
+ app: registry
+ ports:
+ - port: 5000
+ nodePort: 30500
+ targetPort: 5000
+---
+apiVersion: networking.k8s.io/v1
+kind: Ingress
+metadata:
+ name: ingress
+ namespace: container-registry
+ annotations:
+ kubernetes.io/ingress.class: "traefik"
+spec:
+ rules:
+ - host: "dev-container-registry"
+ http:
+ paths:
+ - pathType: Prefix
+ path: "/"
+ backend:
+ service:
+ name: container-registry
+ port:
+ number: 5000
+---
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+ name: registry
+ namespace: container-registry
+spec:
+ selector:
+ matchLabels:
+ app: registry
+ replicas: 1
+ template:
+ metadata:
+ labels:
+ app: registry
+ spec:
+ containers:
+ - name: registry
+ image: registry:2
+ imagePullPolicy: IfNotPresent
+ env:
+ # - name: REGISTRY_REDIRECT_DISABLE
+ # value: "true"
+ # - name: REGISTRY_LOG_LEVEL
+ # value: "debug"
+ # - name: REGISTRY_LOG_ACCESSLOG_DISABLED
+ # value: "false"
+ # - name: REGISTRY_HTTP_RELATIVEURLS
+ # value: "true"
+ # - name: REGISTRY_HTTP_HOST
+ # value: "http://dev-container-registry:8080"
+ - name: REGISTRY_HTTP_ADDR
+ value: 0.0.0.0:5000
+ ports:
+ - containerPort: 5000
diff --git a/dev/create_dev_cluster.sh b/dev/create_dev_cluster.sh
new file mode 100755
index 0000000..e407591
--- /dev/null
+++ b/dev/create_dev_cluster.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+ROOT="$(dirname -- $(pwd))"
+
+k3d cluster create pcloud-dev \
+ --servers=1 \
+ --k3s-server-arg="--disable=traefik" \
+ --port="8080:80@loadbalancer" \
+ --port="30500:30500@server[0]"
+k3d kubeconfig merge pcloud-dev --switch-context
+
+# Traefik
+helm repo add traefik https://containous.github.io/traefik-helm-chart
+helm repo update
+kubectl create namespace traefik
+helm --namespace=traefik install traefik traefik/traefik \
+ --set additionalArguments="{--providers.kubernetesingress,--global.checknewversion=true}" \
+ --set ports.traefik.expose=True
+
+# Container Registry
+## You ca build and push images from host machine to lcoal dev environment using:
+## docker build --tag=localhost:30500/foo/bar:latest .
+## docker push pcloud-localhost:30500/foo/bar:latest
+kubectl apply -f $ROOT/apps/container-registry/install.yaml
diff --git a/dev/install_core_services.sh b/dev/install_core_services.sh
new file mode 100755
index 0000000..09e72dd
--- /dev/null
+++ b/dev/install_core_services.sh
@@ -0,0 +1,28 @@
+ROOT="$(dirname -- $(pwd))"
+
+# Knowledge Graph
+cd "$ROOT/controller"
+docker build --tag=localhost:30500/giolekva/pcloud-api-server .
+docker push localhost:30500/giolekva/pcloud-api-server
+kubectl create namespace pcloud
+helm --namespace=pcloud install init chart \
+ --set image.name=localhost:30500/giolekva/pcloud-api-server \
+ --set image.pullPolicy=Always
+
+# Application Manager
+cd "$ROOT/appmanager"
+docker build --tag=localhost:30500/giolekva/pcloud-app-manager .
+docker push localhost:30500/giolekva/pcloud-app-manager
+kubectl create namespace pcloud-app-manager
+helm --namespace=pcloud-app-manager install init chart \
+ --set image.name=localhost:30500/giolekva/pcloud-app-manager \
+ --set image.pullPolicy=Always
+
+# Event Processor
+cd "$ROOT/events"
+docker build --tag=localhost:30500/giolekva/pcloud-event-processor .
+docker push localhost:30500/giolekva/pcloud-event-processor
+kubectl create namespace pcloud-event-processor
+helm --namespace=pcloud-event-processor install init chart \
+ --set image.name=localhost:30500/giolekva/pcloud-event-processor \
+ --set image.pullPolicy=Always
diff --git a/dev/minikube.sh b/dev/minikube.sh
deleted file mode 100755
index 039fac6..0000000
--- a/dev/minikube.sh
+++ /dev/null
@@ -1,37 +0,0 @@
-ROOT="$(dirname -- $(pwd))"
-
-minikube start --driver=docker
-
-# Traefik
-helm repo add traefik https://containous.github.io/traefik-helm-chart
-helm repo update
-kubectl create namespace traefik
-helm --namespace=traefik install traefik traefik/traefik \
- --set additionalArguments="{--providers.kubernetesingress,--global.checknewversion=true}" \
- --set ports.traefik.expose=True
-
-eval $(minikube docker-env)
-
-# Knowledge Graph
-cd "$ROOT/controller"
-docker build --tag=giolekva/pcloud-api-server .
-kubectl create namespace pcloud
-helm --namespace=pcloud install init chart \
- --set image.name=giolekva/pcloud-api-server \
- --set image.pullPolicy=Never
-
-# Application Manager
-cd "$ROOT/appmanager"
-docker build --tag=giolekva/pcloud-app-manager .
-kubectl create namespace pcloud-app-manager
-helm --namespace=pcloud-app-manager install init chart \
- --set image.name=giolekva/pcloud-app-manager \
- --set image.pullPolicy=Never
-
-# Event Processor
-cd "$ROOT/events"
-docker build --tag=giolekva/pcloud-event-processor .
-kubectl create namespace pcloud-event-processor
-helm --namespace=pcloud-event-processor install init chart \
- --set image.name=giolekva/pcloud-event-processor \
- --set image.pullPolicy=Never