Detta är min egen Kubernetes setup som jag använder
Blog Post by Stefan Holmberg
Här kommer en liten genomgång av hur mitt Kuberneteskluster ser ut i produktion. Jag kommer återkomma med mer angående fördelar/nackdelar/vad jag kommer göra annorlunda nästa gång etc etc
Det är nämligen så att Kubernetes lämpas sig ypperligt även för små företag! 2022-11-20: Min egen setup som jag använder har förändrats en del, jag återkommer med ny artikel inom kort
Det kluster jag beskriver här gäller de sajter jag kör rörande min kursverksamhet.
systementor.se
- kursregistreringar, nyheter
- MS SQL Server
- .NET 5.0
aspcode.net
- online kurser
- MS SQL Server
- .NET 5.0
- – massa content utanför databas också = bilder, zippfiler, pdf:er etc etc
test.aspcode.net
- sajt för examinering, tester både för aspcode.net studenter men också utifrån
- MS SQL Server
- .NET 5.0
- – massa content utanför databas också = bilder, zippfiler, pdf:er etc etc
blog.systementor.se
- Denna sajt
- WordPress
- MySQL
- PHP
MUST HAVES:
webfarm
varje sajt ska köras på minst tre noder för deployment utan nedtid
SSO
single signon mellan aspcode.net och test.aspcode.net samt möjlighet att utöka
Rimlig kostnad
ja, Azure är billigt. Om man bortser från: blue/green web deployment med deras teknik (slots) kräver ju standard eller premium plan. En endaste SQL Server databas är billig (från 50kr/mån). Men jag behöver 4-5 stycken och dessutom gånger 2 (stage environment)
Min kedja från kod -> sajt
Jag kodar i Visual Studio 2019 Community Edition. Lokal SQL Server + MySQL (men startar dessa on demand som docker images). Jag har också Redis i en docker image när jag utvecklar lokalt
Jag pushar kod till Github alt. Azure Devops. Jag har i Azure Devops Build pipelines som triggas och bygger Docker image (alla mina .NET sajter kör jag på Linux. Billigt och resurssnålt) och pushar till mitt egna
docker image registry (ligger inuti mitt Kubernetes-kluster)
Manuell verifiering innan jag via kommandoraden deployar med “kubectl rollout”. Denna kommer ta ur en nod i taget och uppdatera så tjänsten aldrig tas ned vid deploy.
Så det coola med Kubernetes (ja för jag kör såklart det som orkestrering) är att det fungerar som min admin-slav. Dag som natt. Dvs jag säger till Kubernetes tex, denna service (sajt) vill jag köra på tex 3 noder (replicas nedan)
apiVersion: apps/v1 kind: Deployment metadata: name: systementorse labels: app: systementorse spec: replicas: 3 selector: matchLabels: app: systementorse
Och sen monitorerar min snälla Kubernetes-slav allt och ser till att så är fallet, även om en instans går ner osv osv
Ok, så i mitt Kubernetes-kluster kör jag:
- en lastbalanserare
- nginx ingress controller
samt följande allt på (Linux) Docker images
– tre instanser systementor.se .NET 5.0
– tre instanser aspcode.net .NET 5.0
– tre instanser test.aspcode.net .NET 5.0
– en instans registry admin UI – tror det är Ruby faktiskt!
– en instans registry (japp motsvarande hub.docker.com – fast privat och närmare MINA noder)
– en instans MS SQL Server
– en instans MySQL Server
– en backup docker image – körs som cronjob on demand – kör backup på SQL-servrarna och pushar backup-filerna till
Backblaze B2 (S3 kompatibelt)
Var?
Jag har valt DigitalOcean som provider för Kubernetes-klustret, Backblaze B2 för lagring, och sen har jag fortfarande (fasar ut eftersom) lite Azure Blob Storage som ligger och skvalpar
Kostnaden för motsvarande setup i Azure för webbsajter och databas hamnar minst på 6 gånger mer. Iofs kan man få man allt i Azure helt managed men med Kubernetes och schemalagda jobb så löses och autokorrigeras ganska mycket
Intresserad?
Gå vår Kubernetes utbildning så får du göra allt det här
Rekommenderade kurser inom detta ämne
.
Kubernetes och Docker för utvecklare |