comparison

This commit is contained in:
Adolfo Delorenzo 2021-03-28 23:32:05 -06:00
parent e61ec35755
commit 07c29826ad

View File

@ -1,29 +1,71 @@
Recommended content:
From a single server MVP to scale easy with Portainer
We assume you already have you web-app running within a container
Select your orchestration (what is best practice, what are reasons, what are limits ???)
Hello, Adolfo from Portainer here
- Kubernetes
- Docker Swarm
We have prepared a set of comparison videos of Portainer vs 4 different Kubernetes management tools:
10-100 server : Docker Swarm
50-200 server: microk8s (easy as docker swarm, but prepare for further growth ???)
100-100.000: kubernetes
Setup infrastructure (swarm or microk8s)
Launch servers (virtual or bare metal)
Create master
Join further nodes
Launch Portainer
Launch reverse proxy via Portainer
The reverse proxy will automatically load balance all incoming requests to the web-app containers
The proxy will hot reload when containers change, not interrupt ongoing and long-running requests (?)
The proxy can automatically forward to services based on sub-domains and/or paths via labels (?)
Launch services (web-app and others)
Launch you services with Portainer, set labels for sub-domain and/or path
Example: www (wordpress), api (nodejs) (?)
Database: only one instance per server on dedicated servers
Scale up
Check metrics
Easily scale services up and down, add more servers
7. b. Manage credentials, pass them to the web-app so it can connect to the database.
Kubernetes Dashboard
Lens
CrossPlane
Rancher UI
the idea is to basically show the steps required to deploy an application on each of the tools vs Portainer and I am going to use a basic implementation of the redis database.
Here I start with Portainer vs Kubernetes Dashboard with a redis server deployment. In both cases I use microk8s and the process starts with the search for the proper container image in both cases.
In Portainer I used the Applications menu option and deployed redis with ,
bitnami/redis
apiVersion: v1
kind: ConfigMap
metadata:
name: example-redis-config
data:
redis-config: ""
apiVersion: v1
kind: Pod
metadata:
name: redis
spec:
containers:
- name: redis
image: redis:5.0.4
command:
- redis-server
- "/redis-master/redis.conf"
env:
- name: MASTER
value: "true"
ports:
- containerPort: 6379
resources:
limits:
cpu: "0.1"
volumeMounts:
- mountPath: /redis-master-data
name: data
- mountPath: /redis-master
name: config
volumes:
- name: data
emptyDir: {}
- name: config
configMap:
name: example-redis-config
items:
- key: redis-config
path: redis.conf
token=$(microk8s kubectl -n kube-system get secret | grep default-token | cut -d " " -f1)
microk8s kubectl -n kube-system describe secret $token
kubectl create clusterrolebinding --user system:serviceaccount:kube-system:default kube-system-cluster-admin --clusterrole cluster-admin