[{"data":1,"prerenderedAt":3246},["ShallowReactive",2],{"blog":3,"posts":17},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":5,"title":7,"description":8,"navigation":9,"_id":11,"_type":12,"_source":13,"_file":14,"_stem":15,"_extension":16},"/blog","",false,"Blog","Læs vores seneste blogindlæg om alt fra teknologi til forretning.",{"icon":10},"i-heroicons-newspaper","content:3.blog.yml","yaml","content","3.blog.yml","3.blog","yml",[18,519,1313,1347,1378,1401],{"_path":19,"_dir":20,"_draft":6,"_partial":6,"_locale":5,"title":21,"description":22,"image":23,"authors":25,"date":31,"badge":32,"body":35,"_type":514,"_id":515,"_source":13,"_file":516,"_stem":517,"_extension":518},"/blog/news/q1-2026-update","news","Q1 Update - Mere båndbredde!","Kubernetes er en open-source platform til at automatisere deployment, skalering og drift af containeriserede applikationer.",{"src":24},"/blog_images/news/q1-2026-update.jpg",[26],{"name":27,"to":28,"avatar":29},"Alexander Møller","https://www.linkedin.com/in/alexanderm%C3%B8ller/",{"src":30},"/hundeklemmen.png","2026-02-12",{"label":33},[34],"News",{"type":36,"children":37,"toc":503},"root",[38,46,51,56,63,68,81,101,129,136,148,153,171,176,180,187,193,205,210,215,255,267,278,281,287,305,310,315,320,350,355,358,364,370,382,393,398,421,426,444,447,453,465,470,493,498],{"type":39,"tag":40,"props":41,"children":42},"element","p",{},[43],{"type":44,"value":45},"text","Da dette er første gang vi laver en kvartalsopdatering, giver det mening at starte med lidt kontekst.",{"type":39,"tag":40,"props":47,"children":48},{},[49],{"type":44,"value":50},"Det seneste år har været ret vildt for Suble.io. Vi har oplevet markant vækst, både i antallet af kunder og i kompleksiteten af de løsninger vi leverer. Det er vi naturligvis enormt taknemmelige for.",{"type":39,"tag":40,"props":52,"children":53},{},[54],{"type":44,"value":55},"Vi er især beærede over den tillid vores kunder viser os ved at placere deres infrastruktur og services hos os. Opbakningen har været større end vi havde forventet, og det er noget vi arbejder hårdt for at leve op til hver dag – både når det gælder stabil drift, netværkskvalitet og fleksible løsninger.",{"type":39,"tag":57,"props":58,"children":60},"h2",{"id":59},"_2025-recap",[61],{"type":44,"value":62},"2025 recap",{"type":39,"tag":40,"props":64,"children":65},{},[66],{"type":44,"value":67},"2025 var et markant år for Suble.io – både hvad angår vækst og udvikling af vores infrastruktur.",{"type":39,"tag":40,"props":69,"children":70},{},[71,73,79],{"type":44,"value":72},"Vi oplevede især en stigende tilgang af ",{"type":39,"tag":74,"props":75,"children":76},"strong",{},[77],{"type":44,"value":78},"erhvervskunder",{"type":44,"value":80},", som havde behov for mere skræddersyede cloud- og hostingløsninger. Mange af disse workloads krævede højere grad af kontrol over netværk, hardware og routing, hvilket betød øget efterspørgsel på:",{"type":39,"tag":82,"props":83,"children":84},"ul",{},[85,91,96],{"type":39,"tag":86,"props":87,"children":88},"li",{},[89],{"type":44,"value":90},"Dedikerede servere",{"type":39,"tag":86,"props":92,"children":93},{},[94],{"type":44,"value":95},"Colocation",{"type":39,"tag":86,"props":97,"children":98},{},[99],{"type":44,"value":100},"Tilpassede netværksopsætninger",{"type":39,"tag":40,"props":102,"children":103},{},[104,106,116,118,127],{"type":44,"value":105},"Særligt vores ",{"type":39,"tag":107,"props":108,"children":110},"a",{"href":109},"/dedicated-server",[111],{"type":39,"tag":74,"props":112,"children":113},{},[114],{"type":44,"value":115},"dedikerede server-platform",{"type":44,"value":117}," og ",{"type":39,"tag":107,"props":119,"children":121},{"href":120},"/colocation",[122],{"type":39,"tag":74,"props":123,"children":124},{},[125],{"type":44,"value":126},"colocation services",{"type":44,"value":128}," har haft stor aktivitet i løbet af året.",{"type":39,"tag":130,"props":131,"children":133},"h3",{"id":132},"netværksopgraderinger",[134],{"type":44,"value":135},"Netværksopgraderinger",{"type":39,"tag":40,"props":137,"children":138},{},[139,141,146],{"type":44,"value":140},"Som en del af vores løbende kapacitetsplanlægning har vi opgraderet vores uplinks fra ",{"type":39,"tag":74,"props":142,"children":143},{},[144],{"type":44,"value":145},"GlobalConnect",{"type":44,"value":147},".",{"type":39,"tag":40,"props":149,"children":150},{},[151],{"type":44,"value":152},"Dette har resulteret i:",{"type":39,"tag":82,"props":154,"children":155},{},[156,161,166],{"type":39,"tag":86,"props":157,"children":158},{},[159],{"type":44,"value":160},"Øget samlet båndbreddekapacitet",{"type":39,"tag":86,"props":162,"children":163},{},[164],{"type":44,"value":165},"Forbedret netværksredundans",{"type":39,"tag":86,"props":167,"children":168},{},[169],{"type":44,"value":170},"Kraftigere upstream DDoS-mitigering",{"type":39,"tag":40,"props":172,"children":173},{},[174],{"type":44,"value":175},"Opgraderingen giver os bedre mulighed for at håndtere både trafikvækst og større netværkshændelser uden at påvirke kundernes workloads.",{"type":39,"tag":177,"props":178,"children":179},"hr",{},[],{"type":39,"tag":181,"props":182,"children":184},"h1",{"id":183},"nye-features-i-q1",[185],{"type":44,"value":186},"Nye features i Q1",{"type":39,"tag":57,"props":188,"children":190},{"id":189},"ny-side-for-dedikerede-servere",[191],{"type":44,"value":192},"Ny side for dedikerede servere",{"type":39,"tag":40,"props":194,"children":195},{},[196,198,203],{"type":44,"value":197},"Vi har gennem længere tid fået henvendelser fra potentielle kunder, som havde svært ved at få et klart billede af hvilke ",{"type":39,"tag":74,"props":199,"children":200},{},[201],{"type":44,"value":202},"dedikerede servere og konfigurationer",{"type":44,"value":204}," vi faktisk tilbyder.",{"type":39,"tag":40,"props":206,"children":207},{},[208],{"type":44,"value":209},"Derfor har vi lanceret en ny side, hvor man kan få et mere teknisk og transparent overblik over platformen.",{"type":39,"tag":40,"props":211,"children":212},{},[213],{"type":44,"value":214},"Her kan man blandt andet:",{"type":39,"tag":82,"props":216,"children":217},{},[218,223,228,233,238],{"type":39,"tag":86,"props":219,"children":220},{},[221],{"type":44,"value":222},"Se hvilke servermodeller vi har på lager",{"type":39,"tag":86,"props":224,"children":225},{},[226],{"type":44,"value":227},"Se typiske anvendelsesområder",{"type":39,"tag":86,"props":229,"children":230},{},[231],{"type":44,"value":232},"Konfigurere netværkshastigheder",{"type":39,"tag":86,"props":234,"children":235},{},[236],{"type":44,"value":237},"Tilvælge DDoS-beskyttelse",{"type":39,"tag":86,"props":239,"children":240},{},[241,243,248,250],{"type":44,"value":242},"Vælge mellem ",{"type":39,"tag":74,"props":244,"children":245},{},[246],{"type":44,"value":247},"Managed BGP",{"type":44,"value":249}," eller ",{"type":39,"tag":74,"props":251,"children":252},{},[253],{"type":44,"value":254},"Self-managed BGP",{"type":39,"tag":40,"props":256,"children":257},{},[258,260,265],{"type":44,"value":259},"Derudover kan man se en ",{"type":39,"tag":74,"props":261,"children":262},{},[263],{"type":44,"value":264},"estimeret pris baseret på konfigurationen",{"type":44,"value":266},", så det er lettere at vurdere om løsningen passer til ens behov.",{"type":39,"tag":40,"props":268,"children":269},{},[270,272,277],{"type":44,"value":271},"Hvis der er behov for hardware eller netværksopsætninger der ikke fremgår af siden, tilbyder vi naturligvis også ",{"type":39,"tag":74,"props":273,"children":274},{},[275],{"type":44,"value":276},"custom deployments",{"type":44,"value":147},{"type":39,"tag":177,"props":279,"children":280},{},[],{"type":39,"tag":57,"props":282,"children":284},{"id":283},"rebuild-af-navneserver-infrastruktur",[285],{"type":44,"value":286},"Rebuild af navneserver-infrastruktur",{"type":39,"tag":40,"props":288,"children":289},{},[290,292,297,299,304],{"type":44,"value":291},"I løbet af sidste år oplevede vi driftsproblemer relateret til vores ",{"type":39,"tag":74,"props":293,"children":294},{},[295],{"type":44,"value":296},"navneserver-setup",{"type":44,"value":298},", som blandt andet håndterer kundernes ",{"type":39,"tag":74,"props":300,"children":301},{},[302],{"type":44,"value":303},"PTR-records",{"type":44,"value":147},{"type":39,"tag":40,"props":306,"children":307},{},[308],{"type":44,"value":309},"Problemerne var primært relateret til redundans og placering af sekundære navneservere.",{"type":39,"tag":40,"props":311,"children":312},{},[313],{"type":44,"value":314},"For at løse dette valgte vi at genopbygge dele af infrastrukturen.",{"type":39,"tag":40,"props":316,"children":317},{},[318],{"type":44,"value":319},"Ændringerne inkluderer blandt andet:",{"type":39,"tag":82,"props":321,"children":322},{},[323,340,345],{"type":39,"tag":86,"props":324,"children":325},{},[326,328,333,335],{"type":44,"value":327},"Migrering af ",{"type":39,"tag":74,"props":329,"children":330},{},[331],{"type":44,"value":332},"ns2",{"type":44,"value":334}," til en ",{"type":39,"tag":74,"props":336,"children":337},{},[338],{"type":44,"value":339},"off-site lokation",{"type":39,"tag":86,"props":341,"children":342},{},[343],{"type":44,"value":344},"Bedre geografisk redundans",{"type":39,"tag":86,"props":346,"children":347},{},[348],{"type":44,"value":349},"Forbedret failover mellem navneservere",{"type":39,"tag":40,"props":351,"children":352},{},[353],{"type":44,"value":354},"Efter migreringen har vi ikke oplevet de samme stabilitetsproblemer, og setup'et giver os en mere robust DNS-infrastruktur fremadrettet.",{"type":39,"tag":177,"props":356,"children":357},{},[],{"type":39,"tag":181,"props":359,"children":361},{"id":360},"hvad-vi-arbejder-på-i-q2",[362],{"type":44,"value":363},"Hvad vi arbejder på i Q2",{"type":39,"tag":57,"props":365,"children":367},{"id":366},"business-ddos-observability",[368],{"type":44,"value":369},"Business DDoS observability",{"type":39,"tag":40,"props":371,"children":372},{},[373,375,380],{"type":44,"value":374},"Vi arbejder i øjeblikket på en ny ",{"type":39,"tag":74,"props":376,"children":377},{},[378],{"type":44,"value":379},"Business DDoS-løsning",{"type":44,"value":381},", målrettet erhvervskunder der ønsker bedre indsigt i netværkshændelser.",{"type":39,"tag":40,"props":383,"children":384},{},[385,387,392],{"type":44,"value":386},"Formålet er ikke kun at mitigere angreb, men også at give kunderne ",{"type":39,"tag":74,"props":388,"children":389},{},[390],{"type":44,"value":391},"observability omkring hvad der faktisk sker under et angreb",{"type":44,"value":147},{"type":39,"tag":40,"props":394,"children":395},{},[396],{"type":44,"value":397},"Den planlagte funktionalitet inkluderer blandt andet:",{"type":39,"tag":82,"props":399,"children":400},{},[401,406,411,416],{"type":39,"tag":86,"props":402,"children":403},{},[404],{"type":44,"value":405},"Notifikationer når et DDoS-angreb opdages",{"type":39,"tag":86,"props":407,"children":408},{},[409],{"type":44,"value":410},"Notifikationer når mitigering aktiveres",{"type":39,"tag":86,"props":412,"children":413},{},[414],{"type":44,"value":415},"Overblik over angrebets størrelse",{"type":39,"tag":86,"props":417,"children":418},{},[419],{"type":44,"value":420},"Rapporter og statistik over tidligere angreb",{"type":39,"tag":40,"props":422,"children":423},{},[424],{"type":44,"value":425},"Dette giver kunder mulighed for at:",{"type":39,"tag":82,"props":427,"children":428},{},[429,434,439],{"type":39,"tag":86,"props":430,"children":431},{},[432],{"type":44,"value":433},"forstå deres trusselsbillede bedre",{"type":39,"tag":86,"props":435,"children":436},{},[437],{"type":44,"value":438},"dokumentere hændelser internt",{"type":39,"tag":86,"props":440,"children":441},{},[442],{"type":44,"value":443},"analysere trafikmønstre efterfølgende",{"type":39,"tag":177,"props":445,"children":446},{},[],{"type":39,"tag":57,"props":448,"children":450},{"id":449},"vi-vil-gerne-høre-fra-jer",[451],{"type":44,"value":452},"Vi vil gerne høre fra jer",{"type":39,"tag":40,"props":454,"children":455},{},[456,458,463],{"type":44,"value":457},"Vi er altid interesserede i ",{"type":39,"tag":74,"props":459,"children":460},{},[461],{"type":44,"value":462},"feature requests og forslag fra vores kunder",{"type":44,"value":464},". Hvis der er noget I savner – enten på dedikerede servere, colocation eller andre services – vil vi meget gerne høre fra jer.",{"type":39,"tag":40,"props":466,"children":467},{},[468],{"type":44,"value":469},"Du kan dele dine idéer via:",{"type":39,"tag":82,"props":471,"children":472},{},[473,483],{"type":39,"tag":86,"props":474,"children":475},{},[476,481],{"type":39,"tag":74,"props":477,"children":478},{},[479],{"type":44,"value":480},"Support",{"type":44,"value":482},": send en mail eller ticket til vores supportteam",{"type":39,"tag":86,"props":484,"children":485},{},[486,491],{"type":39,"tag":74,"props":487,"children":488},{},[489],{"type":44,"value":490},"Discord",{"type":44,"value":492},": hop ind og diskuter idéer med vores community og teamet",{"type":39,"tag":40,"props":494,"children":495},{},[496],{"type":44,"value":497},"Vi tager alle forslag seriøst, og mange af de features vi har lanceret, er kommet direkte fra kundeinput. Så tøv ikke med at skrive!",{"type":39,"tag":40,"props":499,"children":500},{},[501],{"type":44,"value":502},"Flere opdateringer følger i næste kvartal.",{"title":5,"searchDepth":504,"depth":504,"links":505},2,[506,510,511,512,513],{"id":59,"depth":504,"text":62,"children":507},[508],{"id":132,"depth":509,"text":135},3,{"id":189,"depth":504,"text":192},{"id":283,"depth":504,"text":286},{"id":366,"depth":504,"text":369},{"id":449,"depth":504,"text":452},"markdown","content:3.blog:3.news:01.q1-2026-update.md","3.blog/3.news/01.q1-2026-update.md","3.blog/3.news/01.q1-2026-update","md",{"_path":520,"_dir":521,"_draft":6,"_partial":6,"_locale":5,"title":522,"description":523,"image":524,"authors":526,"date":529,"badge":530,"keywords":534,"body":547,"_type":514,"_id":1310,"_source":13,"_file":1311,"_stem":1312,"_extension":518},"/blog/coolify","blog","Sådan installerer og konfigurerer du Coolify på Linux","Denne guide viser dig, hvordan du opsætter Coolify på din Linux Suble VPS.",{"src":525},"/blog_images/coolify/installation/cover.png",[527],{"name":27,"to":28,"avatar":528},{"src":30},"2025-03-18",{"label":531},[532,533],"Hosting","Coolify",[533,535,536,537,538,539,540,532,541,542,543,544,545,546],"Coolify installation","Coolify Opsætning","VPS","Linux","Docker","PaaS","Suble.io","VPS-server","installation","konfiguration","domæne","opsætning",{"type":36,"children":548,"toc":1301},[549,555,576,582,587,641,647,652,681,686,727,733,738,773,778,783,1157,1163,1174,1184,1189,1195,1200,1251,1257,1262,1267,1295],{"type":39,"tag":57,"props":550,"children":552},{"id":551},"introduction",[553],{"type":44,"value":554},"Introduction",{"type":39,"tag":40,"props":556,"children":557},{},[558,560,566,568,574],{"type":44,"value":559},"Coolify er en selvhostet platform-as-a-service (PaaS), der gør det nemmere at køre containere og databaser. Denne guide vil guide dig gennem installation og konfiguration af Coolify på en Suble.io VPS-server. Coolify kan automatisk udgive en ny version af din applikation, når du skubber til dit GitHub-repository (",{"type":39,"tag":107,"props":561,"children":563},{"href":562},"/blog/coolify/github_application",[564],{"type":44,"value":565},"se vores guide til opsætning af applikationer på Coolify",{"type":44,"value":567},"). Derudover kan du også nemt opsætte databaser som MySQL, PostgreSQL og MongoDB, hvor du kan nemt opsætte backups og gendanne dem (",{"type":39,"tag":107,"props":569,"children":571},{"href":570},"/blog/coolify/database",[572],{"type":44,"value":573},"se vores guide til opsætning af databaser på Coolify",{"type":44,"value":575},").",{"type":39,"tag":57,"props":577,"children":579},{"id":578},"for-at-komme-i-gang",[580],{"type":44,"value":581},"For at komme i gang",{"type":39,"tag":40,"props":583,"children":584},{},[585],{"type":44,"value":586},"Denne guide er designet til en Suble.io VPS-server, der kører Ubuntu 24.04, men den bør fungere på enhver Linux-server. Du skal bruge følgende:",{"type":39,"tag":82,"props":588,"children":589},{},[590],{"type":39,"tag":86,"props":591,"children":592},{},[593,595],{"type":44,"value":594},"En nyinstalleret Linux-server (Ubuntu 24.04 anbefales)\n",{"type":39,"tag":82,"props":596,"children":597},{},[598,612],{"type":39,"tag":86,"props":599,"children":600},{},[601,603,611],{"type":44,"value":602},"Du kan finde alle understøttede operativsystemer i den ",{"type":39,"tag":107,"props":604,"children":608},{"href":605,"rel":606},"https://coolify.io/docs/get-started/installation#supported-operating-systems",[607],"nofollow",[609],{"type":44,"value":610},"officielle Coolify-dokumentation",{"type":44,"value":147},{"type":39,"tag":86,"props":613,"children":614},{},[615,617,635,639],{"type":44,"value":616},"Minimumskrav ved udarbejdelsen af denne guide:",{"type":39,"tag":82,"props":618,"children":619},{},[620,625,630],{"type":39,"tag":86,"props":621,"children":622},{},[623],{"type":44,"value":624},"2 CPU-kerner",{"type":39,"tag":86,"props":626,"children":627},{},[628],{"type":44,"value":629},"2 GB RAM",{"type":39,"tag":86,"props":631,"children":632},{},[633],{"type":44,"value":634},"30 GB diskplads",{"type":39,"tag":636,"props":637,"children":638},"br",{},[],{"type":44,"value":640},"Vi anbefaler mindst 4 GB RAM for en bedre oplevelse.",{"type":39,"tag":57,"props":642,"children":644},{"id":643},"step-1-opsæt-din-vps",[645],{"type":44,"value":646},"Step 1 - Opsæt din VPS",{"type":39,"tag":40,"props":648,"children":649},{},[650],{"type":44,"value":651},"For at sikre Coolify bliver installeret korrekt, kræver det du er logget ind som root-bruger. Du kan gøre dette ved at køre følgende kommando:",{"type":39,"tag":653,"props":654,"children":658},"pre",{"className":655,"code":656,"language":657,"meta":5,"style":5},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","sudo su\n","bash",[659],{"type":39,"tag":660,"props":661,"children":662},"code",{"__ignoreMap":5},[663],{"type":39,"tag":664,"props":665,"children":668},"span",{"class":666,"line":667},"line",1,[669,675],{"type":39,"tag":664,"props":670,"children":672},{"style":671},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[673],{"type":44,"value":674},"sudo",{"type":39,"tag":664,"props":676,"children":678},{"style":677},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[679],{"type":44,"value":680}," su\n",{"type":39,"tag":40,"props":682,"children":683},{},[684],{"type":44,"value":685},"Derudover skal du sørge for at din server er opdateret. Du kan gøre dette ved at køre følgende kommando:",{"type":39,"tag":653,"props":687,"children":689},{"className":655,"code":688,"language":657,"meta":5,"style":5},"apt update && apt upgrade -y\n",[690],{"type":39,"tag":660,"props":691,"children":692},{"__ignoreMap":5},[693],{"type":39,"tag":664,"props":694,"children":695},{"class":666,"line":667},[696,701,706,712,717,722],{"type":39,"tag":664,"props":697,"children":698},{"style":671},[699],{"type":44,"value":700},"apt",{"type":39,"tag":664,"props":702,"children":703},{"style":677},[704],{"type":44,"value":705}," update",{"type":39,"tag":664,"props":707,"children":709},{"style":708},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[710],{"type":44,"value":711}," &&",{"type":39,"tag":664,"props":713,"children":714},{"style":671},[715],{"type":44,"value":716}," apt",{"type":39,"tag":664,"props":718,"children":719},{"style":677},[720],{"type":44,"value":721}," upgrade",{"type":39,"tag":664,"props":723,"children":724},{"style":677},[725],{"type":44,"value":726}," -y\n",{"type":39,"tag":57,"props":728,"children":730},{"id":729},"step-2-installer-coolify",[731],{"type":44,"value":732},"Step 2 - Installer Coolify",{"type":39,"tag":40,"props":734,"children":735},{},[736],{"type":44,"value":737},"Installationen af Coolify er ret ligetil. Du skal blot køre følgende kommando:",{"type":39,"tag":653,"props":739,"children":741},{"className":655,"code":740,"language":657,"meta":5,"style":5},"curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash\n",[742],{"type":39,"tag":660,"props":743,"children":744},{"__ignoreMap":5},[745],{"type":39,"tag":664,"props":746,"children":747},{"class":666,"line":667},[748,753,758,763,768],{"type":39,"tag":664,"props":749,"children":750},{"style":671},[751],{"type":44,"value":752},"curl",{"type":39,"tag":664,"props":754,"children":755},{"style":677},[756],{"type":44,"value":757}," -fsSL",{"type":39,"tag":664,"props":759,"children":760},{"style":677},[761],{"type":44,"value":762}," https://cdn.coollabs.io/coolify/install.sh",{"type":39,"tag":664,"props":764,"children":765},{"style":708},[766],{"type":44,"value":767}," |",{"type":39,"tag":664,"props":769,"children":770},{"style":671},[771],{"type":44,"value":772}," bash\n",{"type":39,"tag":40,"props":774,"children":775},{},[776],{"type":44,"value":777},"Når installationen er færdig, vil du se en besked, der fortæller dig, at Coolify er installeret. Du kan nu åbne din webbrowser og navigere til din server IP-adresse for at få adgang til Coolify panelet.",{"type":39,"tag":40,"props":779,"children":780},{},[781],{"type":44,"value":782},"Beskeden vil se sådan ud:",{"type":39,"tag":653,"props":784,"children":786},{"className":655,"code":785,"language":657,"meta":5,"style":5},"\n   ____                            _         _       _   _                 _\n  / ___|___  _ __   __ _ _ __ __ _| |_ _   _| | __ _| |_(_) ___  _ __  ___| |\n | |   / _ \\| '_ \\ / _` | '__/ _` | __| | | | |/ _` | __| |/ _ \\| '_ \\/ __| |\n | |__| (_) | | | | (_| | | | (_| | |_| |_| | | (_| | |_| | (_) | | | \\__ \\_|\n  \\____\\___/|_| |_|\\__, |_|  \\__,_|\\__|\\__,_|_|\\__,_|\\__|_|\\___/|_| |_|___(_)\n                   |___/\n\n\nYour instance is ready to use!\n\nYou can access Coolify through your Public IP: http://192.121.119.81:8000\n",[787],{"type":39,"tag":660,"props":788,"children":789},{"__ignoreMap":5},[790,799,832,956,1088,1097,1106,1115,1123,1131,1140,1148],{"type":39,"tag":664,"props":791,"children":792},{"class":666,"line":667},[793],{"type":39,"tag":664,"props":794,"children":796},{"emptyLinePlaceholder":795},true,[797],{"type":44,"value":798},"\n",{"type":39,"tag":664,"props":800,"children":801},{"class":666,"line":504},[802,807,812,817,822,827],{"type":39,"tag":664,"props":803,"children":804},{"style":671},[805],{"type":44,"value":806},"   ____",{"type":39,"tag":664,"props":808,"children":809},{"style":677},[810],{"type":44,"value":811},"                            _",{"type":39,"tag":664,"props":813,"children":814},{"style":677},[815],{"type":44,"value":816},"         _",{"type":39,"tag":664,"props":818,"children":819},{"style":677},[820],{"type":44,"value":821},"       _",{"type":39,"tag":664,"props":823,"children":824},{"style":677},[825],{"type":44,"value":826},"   _",{"type":39,"tag":664,"props":828,"children":829},{"style":677},[830],{"type":44,"value":831},"                 _\n",{"type":39,"tag":664,"props":833,"children":834},{"class":666,"line":509},[835,840,845,850,855,860,865,870,875,879,883,887,891,895,899,904,908,912,916,920,924,928,932,936,941,947,951],{"type":39,"tag":664,"props":836,"children":837},{"style":671},[838],{"type":44,"value":839},"  /",{"type":39,"tag":664,"props":841,"children":842},{"style":677},[843],{"type":44,"value":844}," ___",{"type":39,"tag":664,"props":846,"children":847},{"style":708},[848],{"type":44,"value":849},"|",{"type":39,"tag":664,"props":851,"children":852},{"style":671},[853],{"type":44,"value":854},"___",{"type":39,"tag":664,"props":856,"children":857},{"style":677},[858],{"type":44,"value":859},"  _",{"type":39,"tag":664,"props":861,"children":862},{"style":677},[863],{"type":44,"value":864}," __",{"type":39,"tag":664,"props":866,"children":867},{"style":677},[868],{"type":44,"value":869},"   __",{"type":39,"tag":664,"props":871,"children":872},{"style":677},[873],{"type":44,"value":874}," _",{"type":39,"tag":664,"props":876,"children":877},{"style":677},[878],{"type":44,"value":874},{"type":39,"tag":664,"props":880,"children":881},{"style":677},[882],{"type":44,"value":864},{"type":39,"tag":664,"props":884,"children":885},{"style":677},[886],{"type":44,"value":864},{"type":39,"tag":664,"props":888,"children":889},{"style":677},[890],{"type":44,"value":874},{"type":39,"tag":664,"props":892,"children":893},{"style":708},[894],{"type":44,"value":849},{"type":39,"tag":664,"props":896,"children":897},{"style":708},[898],{"type":44,"value":767},{"type":39,"tag":664,"props":900,"children":901},{"style":671},[902],{"type":44,"value":903},"_",{"type":39,"tag":664,"props":905,"children":906},{"style":677},[907],{"type":44,"value":874},{"type":39,"tag":664,"props":909,"children":910},{"style":677},[911],{"type":44,"value":826},{"type":39,"tag":664,"props":913,"children":914},{"style":708},[915],{"type":44,"value":849},{"type":39,"tag":664,"props":917,"children":918},{"style":708},[919],{"type":44,"value":767},{"type":39,"tag":664,"props":921,"children":922},{"style":671},[923],{"type":44,"value":864},{"type":39,"tag":664,"props":925,"children":926},{"style":677},[927],{"type":44,"value":874},{"type":39,"tag":664,"props":929,"children":930},{"style":708},[931],{"type":44,"value":849},{"type":39,"tag":664,"props":933,"children":934},{"style":708},[935],{"type":44,"value":767},{"type":39,"tag":664,"props":937,"children":938},{"style":671},[939],{"type":44,"value":940},"_(_",{"type":39,"tag":664,"props":942,"children":944},{"style":943},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[945],{"type":44,"value":946},") ___  _ __  ___",{"type":39,"tag":664,"props":948,"children":949},{"style":708},[950],{"type":44,"value":849},{"type":39,"tag":664,"props":952,"children":953},{"style":708},[954],{"type":44,"value":955}," |\n",{"type":39,"tag":664,"props":957,"children":959},{"class":666,"line":958},4,[960,964,968,973,977,982,987,992,996,1001,1005,1010,1014,1018,1022,1026,1030,1034,1038,1043,1047,1051,1055,1059,1063,1067,1071,1075,1079,1083],{"type":39,"tag":664,"props":961,"children":962},{"style":708},[963],{"type":44,"value":767},{"type":39,"tag":664,"props":965,"children":966},{"style":708},[967],{"type":44,"value":767},{"type":39,"tag":664,"props":969,"children":970},{"style":671},[971],{"type":44,"value":972},"   /",{"type":39,"tag":664,"props":974,"children":975},{"style":677},[976],{"type":44,"value":874},{"type":39,"tag":664,"props":978,"children":979},{"style":943},[980],{"type":44,"value":981}," \\| ",{"type":39,"tag":664,"props":983,"children":984},{"style":708},[985],{"type":44,"value":986},"'",{"type":39,"tag":664,"props":988,"children":989},{"style":677},[990],{"type":44,"value":991},"_ \\ / _` | ",{"type":39,"tag":664,"props":993,"children":994},{"style":708},[995],{"type":44,"value":986},{"type":39,"tag":664,"props":997,"children":998},{"style":677},[999],{"type":44,"value":1000},"__/",{"type":39,"tag":664,"props":1002,"children":1003},{"style":677},[1004],{"type":44,"value":874},{"type":39,"tag":664,"props":1006,"children":1007},{"style":708},[1008],{"type":44,"value":1009},"`",{"type":39,"tag":664,"props":1011,"children":1012},{"style":708},[1013],{"type":44,"value":767},{"type":39,"tag":664,"props":1015,"children":1016},{"style":671},[1017],{"type":44,"value":864},{"type":39,"tag":664,"props":1019,"children":1020},{"style":708},[1021],{"type":44,"value":849},{"type":39,"tag":664,"props":1023,"children":1024},{"style":708},[1025],{"type":44,"value":767},{"type":39,"tag":664,"props":1027,"children":1028},{"style":708},[1029],{"type":44,"value":767},{"type":39,"tag":664,"props":1031,"children":1032},{"style":708},[1033],{"type":44,"value":767},{"type":39,"tag":664,"props":1035,"children":1036},{"style":708},[1037],{"type":44,"value":767},{"type":39,"tag":664,"props":1039,"children":1040},{"style":671},[1041],{"type":44,"value":1042},"/",{"type":39,"tag":664,"props":1044,"children":1045},{"style":677},[1046],{"type":44,"value":874},{"type":39,"tag":664,"props":1048,"children":1049},{"style":708},[1050],{"type":44,"value":1009},{"type":39,"tag":664,"props":1052,"children":1053},{"style":708},[1054],{"type":44,"value":767},{"type":39,"tag":664,"props":1056,"children":1057},{"style":671},[1058],{"type":44,"value":864},{"type":39,"tag":664,"props":1060,"children":1061},{"style":708},[1062],{"type":44,"value":849},{"type":39,"tag":664,"props":1064,"children":1065},{"style":708},[1066],{"type":44,"value":767},{"type":39,"tag":664,"props":1068,"children":1069},{"style":671},[1070],{"type":44,"value":1042},{"type":39,"tag":664,"props":1072,"children":1073},{"style":677},[1074],{"type":44,"value":874},{"type":39,"tag":664,"props":1076,"children":1077},{"style":943},[1078],{"type":44,"value":981},{"type":39,"tag":664,"props":1080,"children":1081},{"style":708},[1082],{"type":44,"value":986},{"type":39,"tag":664,"props":1084,"children":1085},{"style":677},[1086],{"type":44,"value":1087},"_ \\/ __| |\n",{"type":39,"tag":664,"props":1089,"children":1091},{"class":666,"line":1090},5,[1092],{"type":39,"tag":664,"props":1093,"children":1094},{"style":677},[1095],{"type":44,"value":1096}," | |__| (_) | | | | (_| | | | (_| | |_| |_| | | (_| | |_| | (_) | | | \\__ \\_|\n",{"type":39,"tag":664,"props":1098,"children":1100},{"class":666,"line":1099},6,[1101],{"type":39,"tag":664,"props":1102,"children":1103},{"style":677},[1104],{"type":44,"value":1105},"  \\____\\___/|_| |_|\\__, |_|  \\__,_|\\__|\\__,_|_|\\__,_|\\__|_|\\___/|_| |_|___(_)\n",{"type":39,"tag":664,"props":1107,"children":1109},{"class":666,"line":1108},7,[1110],{"type":39,"tag":664,"props":1111,"children":1112},{"style":677},[1113],{"type":44,"value":1114},"                   |___/\n",{"type":39,"tag":664,"props":1116,"children":1118},{"class":666,"line":1117},8,[1119],{"type":39,"tag":664,"props":1120,"children":1121},{"emptyLinePlaceholder":795},[1122],{"type":44,"value":798},{"type":39,"tag":664,"props":1124,"children":1126},{"class":666,"line":1125},9,[1127],{"type":39,"tag":664,"props":1128,"children":1129},{"emptyLinePlaceholder":795},[1130],{"type":44,"value":798},{"type":39,"tag":664,"props":1132,"children":1134},{"class":666,"line":1133},10,[1135],{"type":39,"tag":664,"props":1136,"children":1137},{"style":677},[1138],{"type":44,"value":1139},"Your instance is ready to use!\n",{"type":39,"tag":664,"props":1141,"children":1143},{"class":666,"line":1142},11,[1144],{"type":39,"tag":664,"props":1145,"children":1146},{"emptyLinePlaceholder":795},[1147],{"type":44,"value":798},{"type":39,"tag":664,"props":1149,"children":1151},{"class":666,"line":1150},12,[1152],{"type":39,"tag":664,"props":1153,"children":1154},{"style":677},[1155],{"type":44,"value":1156},"You can access Coolify through your Public IP: http://192.121.119.81:8000\n",{"type":39,"tag":57,"props":1158,"children":1160},{"id":1159},"step-3-konfigurer-coolify",[1161],{"type":44,"value":1162},"Step 3 - Konfigurer Coolify",{"type":39,"tag":40,"props":1164,"children":1165},{},[1166,1168],{"type":44,"value":1167},"Når du åbner Coolify-panelet, vil du blive bedt om at oprette en admin-bruger. Udfyld formularen med dine oplysninger og klik på \"Register\", derefter \"Get started\".\n",{"type":39,"tag":1169,"props":1170,"children":1173},"img",{"alt":1171,"src":1172},"create coolify account","/blog_images/coolify/installation/create_account.png",[],{"type":39,"tag":40,"props":1175,"children":1176},{},[1177,1179],{"type":44,"value":1178},"Du ville derefter blive ført igennem en installationsguide, her er det vigtigt du vælger \"Localhost\" når du bliver spurgt om hvor du ville køre dine applikationer.\n",{"type":39,"tag":1169,"props":1180,"children":1183},{"alt":1181,"src":1182},"choose localhost","/blog_images/coolify/installation/select_server.png",[],{"type":39,"tag":40,"props":1185,"children":1186},{},[1187],{"type":44,"value":1188},"Din Coolify installation er nu klar til brug. Du kan begynde at udrulle dine applikationer og databaser.",{"type":39,"tag":57,"props":1190,"children":1192},{"id":1191},"opsætning-af-domæne-til-coolify",[1193],{"type":44,"value":1194},"Opsætning af domæne til Coolify",{"type":39,"tag":40,"props":1196,"children":1197},{},[1198],{"type":44,"value":1199},"Vi anbefaler at du opsætter et domæne til din Coolify installation, så du kan få adgang til den via et domæne i stedet for en IP-adresse. Du kan gøre dette ved at følge disse trin:",{"type":39,"tag":1201,"props":1202,"children":1203},"ol",{},[1204,1216,1226,1231,1241,1246],{"type":39,"tag":86,"props":1205,"children":1206},{},[1207,1209],{"type":44,"value":1208},"Gå til din domæneregistrator, i denne guide bruger vi ",{"type":39,"tag":107,"props":1210,"children":1213},{"href":1211,"rel":1212},"https://www.cloudflare.com/",[607],[1214],{"type":44,"value":1215},"Cloudflare",{"type":39,"tag":86,"props":1217,"children":1218},{},[1219,1221],{"type":44,"value":1220},"Opret en A-post for dit domæne, der peger på din VPS IP-adresse (Vigtigt du slår \"Proxy\" fra, så den ikke peger på Cloudflare IP-adresse)\n",{"type":39,"tag":1169,"props":1222,"children":1225},{"alt":1223,"src":1224},"cloudflare dns setup","/blog_images/coolify/installation/dns_setup.png",[],{"type":39,"tag":86,"props":1227,"children":1228},{},[1229],{"type":44,"value":1230},"Gå tilbage til Coolify-panelet og klik på \"Settings\" i menuen til venstre",{"type":39,"tag":86,"props":1232,"children":1233},{},[1234,1236],{"type":44,"value":1235},"Under Instance Settings, kan du se et inputfelt med navnet \"Instance's Domain\", her skal du indtaste dit domæne du har oprettet i trin 2\n",{"type":39,"tag":1169,"props":1237,"children":1240},{"alt":1238,"src":1239},"instance domain","/blog_images/coolify/installation/coolify_domain.png",[],{"type":39,"tag":86,"props":1242,"children":1243},{},[1244],{"type":44,"value":1245},"Klik på \"Save\" knappen for at gemme ændringerne",{"type":39,"tag":86,"props":1247,"children":1248},{},[1249],{"type":44,"value":1250},"Du kan nu få adgang til Coolify-panelet via dit domæne i stedet for IP-adressen",{"type":39,"tag":57,"props":1252,"children":1254},{"id":1253},"opsummering",[1255],{"type":44,"value":1256},"Opsummering",{"type":39,"tag":40,"props":1258,"children":1259},{},[1260],{"type":44,"value":1261},"Vi har nu installeret og opsat Coolify på vores nye VPS-server. Vi har også konfigureret et domæne til Coolify, så vi kan få adgang til det via et domæne i stedet for en IP-adresse. Dette gør det lettere at få adgang til Coolify og samt sikre der bliver brugt HTTPS i stedet for HTTP.",{"type":39,"tag":40,"props":1263,"children":1264},{},[1265],{"type":44,"value":1266},"Vi har flere guides til opsætning af applikationer og databaser på Coolify, som du kan finde her:",{"type":39,"tag":82,"props":1268,"children":1269},{},[1270,1278,1286],{"type":39,"tag":86,"props":1271,"children":1272},{},[1273],{"type":39,"tag":107,"props":1274,"children":1275},{"href":562},[1276],{"type":44,"value":1277},"Opsætning af applikationer via GitHub på Coolify",{"type":39,"tag":86,"props":1279,"children":1280},{},[1281],{"type":39,"tag":107,"props":1282,"children":1283},{"href":570},[1284],{"type":44,"value":1285},"Opsætning af databaser på Coolify",{"type":39,"tag":86,"props":1287,"children":1288},{},[1289],{"type":39,"tag":107,"props":1290,"children":1292},{"href":1291},"/blog/coolify/mysql",[1293],{"type":44,"value":1294},"Opsætning af MySQL og PHPMyAdmin på Coolify",{"type":39,"tag":1296,"props":1297,"children":1298},"style",{},[1299],{"type":44,"value":1300},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":5,"searchDepth":504,"depth":504,"links":1302},[1303,1304,1305,1306,1307,1308,1309],{"id":551,"depth":504,"text":554},{"id":578,"depth":504,"text":581},{"id":643,"depth":504,"text":646},{"id":729,"depth":504,"text":732},{"id":1159,"depth":504,"text":1162},{"id":1191,"depth":504,"text":1194},{"id":1253,"depth":504,"text":1256},"content:3.blog:2.coolify:1.index.md","3.blog/2.coolify/1.index.md","3.blog/2.coolify/1.index",{"_path":570,"_dir":1314,"_draft":6,"_partial":6,"_locale":5,"title":1285,"description":1315,"image":1316,"authors":1318,"date":529,"badge":1321,"keywords":1324,"body":1330,"_type":514,"_id":1344,"_source":13,"_file":1345,"_stem":1346,"_extension":518},"coolify","Hvordan man opsætter en database med backups på Coolify",{"src":1317},"/blog_images/coolify/database/cover.png",[1319],{"name":27,"to":28,"avatar":1320},{"src":30},{"label":1322},[532,533,1323],"Database",[533,1325,1326,1327,1328,1323,532,1329],"MySQL","MongoDB","PostgreSQL","Redis","Backup",{"type":36,"children":1331,"toc":1341},[1332,1336],{"type":39,"tag":57,"props":1333,"children":1334},{"id":551},[1335],{"type":44,"value":554},{"type":39,"tag":40,"props":1337,"children":1338},{},[1339],{"type":44,"value":1340},"Kommer snart!",{"title":5,"searchDepth":504,"depth":504,"links":1342},[1343],{"id":551,"depth":504,"text":554},"content:3.blog:2.coolify:database.md","3.blog/2.coolify/database.md","3.blog/2.coolify/database",{"_path":562,"_dir":1314,"_draft":6,"_partial":6,"_locale":5,"title":1348,"description":1349,"image":1350,"authors":1352,"date":529,"badge":1355,"keywords":1358,"body":1362,"_type":514,"_id":1375,"_source":13,"_file":1376,"_stem":1377,"_extension":518},"Kør dine applikationer og containere med Coolify og Github","Sådan opsætter du Coolify og Github til at køre dine applikationer og containere",{"src":1351},"/blog_images/coolify/github_application/cover.png",[1353],{"name":27,"to":28,"avatar":1354},{"src":30},{"label":1356},[532,533,1357],"Github",[533,1357,532,1359,537,539,540,1360,543,544,545,1361],"Container","Opsætning","HTTPS",{"type":36,"children":1363,"toc":1372},[1364,1368],{"type":39,"tag":57,"props":1365,"children":1366},{"id":551},[1367],{"type":44,"value":554},{"type":39,"tag":40,"props":1369,"children":1370},{},[1371],{"type":44,"value":1340},{"title":5,"searchDepth":504,"depth":504,"links":1373},[1374],{"id":551,"depth":504,"text":554},"content:3.blog:2.coolify:github_application.md","3.blog/2.coolify/github_application.md","3.blog/2.coolify/github_application",{"_path":1291,"_dir":1314,"_draft":6,"_partial":6,"_locale":5,"title":1294,"description":1379,"image":1380,"authors":1382,"date":529,"badge":1385,"keywords":1387,"body":1389,"_type":514,"_id":1398,"_source":13,"_file":1399,"_stem":1400,"_extension":518},"Nemt og hurtig opsæt en simpel MySQL database med PHPMyAdmin på Coolify",{"src":1381},"/blog_images/coolify/mysql/cover.png",[1383],{"name":27,"to":28,"avatar":1384},{"src":30},{"label":1386},[532,533,1325],[533,1325,1388,1323,532,1329],"PHPMyAdmin",{"type":36,"children":1390,"toc":1395},[1391],{"type":39,"tag":57,"props":1392,"children":1393},{"id":551},[1394],{"type":44,"value":554},{"title":5,"searchDepth":504,"depth":504,"links":1396},[1397],{"id":551,"depth":504,"text":554},"content:3.blog:2.coolify:mysql.md","3.blog/2.coolify/mysql.md","3.blog/2.coolify/mysql",{"_path":1402,"_dir":521,"_draft":6,"_partial":6,"_locale":5,"title":1403,"description":22,"image":1404,"authors":1406,"date":1409,"badge":1410,"body":1412,"_type":514,"_id":3243,"_source":13,"_file":3244,"_stem":3245,"_extension":518},"/blog/kubernetes","Kubernetes på Suble",{"src":1405},"https://concisesoftware.com/wp-content/uploads/2020/01/Kubernetes-logo.png",[1407],{"name":27,"to":28,"avatar":1408},{"src":30},"2025-01-06",{"label":1411},[532],{"type":36,"children":1413,"toc":3227},[1414,1420,1424,1429,1434,1446,1451,1454,1460,1529,1532,1538,1578,1581,1587,1593,1757,1763,1835,1841,1919,1925,2070,2076,2226,2232,2427,2430,2436,2639,2642,2648,2755,2758,2764,3218,3223],{"type":39,"tag":181,"props":1415,"children":1417},{"id":1416},"kubernetes-setup-guide-on-subleio",[1418],{"type":44,"value":1419},"Kubernetes Setup Guide on Suble.io",{"type":39,"tag":57,"props":1421,"children":1422},{"id":551},[1423],{"type":44,"value":554},{"type":39,"tag":40,"props":1425,"children":1426},{},[1427],{"type":44,"value":1428},"Welcome to our detailed guide on setting up Kubernetes on Suble.io. As you've decided to embark on this journey, you probably already know the immense potential Kubernetes holds for managing containerized applications at scale. If you're still wrapping your head around the basics, we're here to shed some light before diving into the setup process.",{"type":39,"tag":40,"props":1430,"children":1431},{},[1432],{"type":44,"value":1433},"Kubernetes, also known as K8s, is an open-source platform designed to automate deploying, scaling, and managing containerized applications. Containers allow you to bundle your software with all its dependencies, leading to efficient, reliable, and fast deployments. Kubernetes takes it a step further by managing a cluster of machines and orchestrating containers across them. From handling failover for your applications to providing a consistent environment for deployment, Kubernetes offers a range of advantages that help organizations streamline their operations.",{"type":39,"tag":40,"props":1435,"children":1436},{},[1437,1439,1444],{"type":44,"value":1438},"Now, let's talk about our platform — Suble.io. We provide a virtualized environment to host your applications, whether they are small-scale projects or large enterprise solutions. For this guide, we recommend setting up Kubernetes on at least three VMs under the ",{"type":39,"tag":74,"props":1440,"children":1441},{},[1442],{"type":44,"value":1443},"Mega Package",{"type":44,"value":1445}," (4GB each) to ensure sufficient resources for the cluster to function effectively. We also suggest assigning one floating IP address for seamless network access and flexibility.",{"type":39,"tag":40,"props":1447,"children":1448},{},[1449],{"type":44,"value":1450},"This guide provides step-by-step instructions and useful tips to help you configure Kubernetes on Suble.io. Whether you're an experienced developer or a newcomer to container orchestration, this guide aims to get your Kubernetes cluster up and running efficiently.",{"type":39,"tag":177,"props":1452,"children":1453},{},[],{"type":39,"tag":57,"props":1455,"children":1457},{"id":1456},"terminology-and-notation",[1458],{"type":44,"value":1459},"Terminology and Notation",{"type":39,"tag":82,"props":1461,"children":1462},{},[1463,1481,1497,1513],{"type":39,"tag":86,"props":1464,"children":1465},{},[1466,1471,1473,1479],{"type":39,"tag":74,"props":1467,"children":1468},{},[1469],{"type":44,"value":1470},"local$",{"type":44,"value":1472}," ",{"type":39,"tag":660,"props":1474,"children":1476},{"className":1475},[],[1477],{"type":44,"value":1478},"\u003Ccommand>",{"type":44,"value":1480},": Run this command on your local computer.",{"type":39,"tag":86,"props":1482,"children":1483},{},[1484,1489,1490,1495],{"type":39,"tag":74,"props":1485,"children":1486},{},[1487],{"type":44,"value":1488},"all$",{"type":44,"value":1472},{"type":39,"tag":660,"props":1491,"children":1493},{"className":1492},[],[1494],{"type":44,"value":1478},{"type":44,"value":1496},": Run this command on all servers as root.",{"type":39,"tag":86,"props":1498,"children":1499},{},[1500,1505,1506,1511],{"type":39,"tag":74,"props":1501,"children":1502},{},[1503],{"type":44,"value":1504},"master$",{"type":44,"value":1472},{"type":39,"tag":660,"props":1507,"children":1509},{"className":1508},[],[1510],{"type":44,"value":1478},{"type":44,"value":1512},": Run this command on the master server as root.",{"type":39,"tag":86,"props":1514,"children":1515},{},[1516,1521,1522,1527],{"type":39,"tag":74,"props":1517,"children":1518},{},[1519],{"type":44,"value":1520},"worker$",{"type":44,"value":1472},{"type":39,"tag":660,"props":1523,"children":1525},{"className":1524},[],[1526],{"type":44,"value":1478},{"type":44,"value":1528},": Run this command on all worker servers as root.",{"type":39,"tag":177,"props":1530,"children":1531},{},[],{"type":39,"tag":57,"props":1533,"children":1535},{"id":1534},"step-1-preparing-resources",[1536],{"type":44,"value":1537},"Step 1 - Preparing Resources",{"type":39,"tag":1201,"props":1539,"children":1540},{},[1541,1566],{"type":39,"tag":86,"props":1542,"children":1543},{},[1544,1546,1551,1553,1557,1559,1564],{"type":44,"value":1545},"Create ",{"type":39,"tag":74,"props":1547,"children":1548},{},[1549],{"type":44,"value":1550},"3 VM instances",{"type":44,"value":1552},", each with at least 4GB of memory (",{"type":39,"tag":74,"props":1554,"children":1555},{},[1556],{"type":44,"value":1443},{"type":44,"value":1558},"). Use ",{"type":39,"tag":74,"props":1560,"children":1561},{},[1562],{"type":44,"value":1563},"Ubuntu 20.04",{"type":44,"value":1565}," as the operating system.",{"type":39,"tag":86,"props":1567,"children":1568},{},[1569,1571,1576],{"type":44,"value":1570},"Order ",{"type":39,"tag":74,"props":1572,"children":1573},{},[1574],{"type":44,"value":1575},"1 Floating IP",{"type":44,"value":1577}," (optional but highly recommended). This will be used for the Load Balancer later.",{"type":39,"tag":177,"props":1579,"children":1580},{},[],{"type":39,"tag":57,"props":1582,"children":1584},{"id":1583},"step-2-install-containerd-and-kubernetes-packages",[1585],{"type":44,"value":1586},"Step 2 - Install containerd and Kubernetes Packages",{"type":39,"tag":130,"props":1588,"children":1590},{"id":1589},"installing-containerd",[1591],{"type":44,"value":1592},"Installing containerd",{"type":39,"tag":1201,"props":1594,"children":1595},{},[1596,1647,1676],{"type":39,"tag":86,"props":1597,"children":1598},{},[1599,1601],{"type":44,"value":1600},"Download the containerd service file:\n",{"type":39,"tag":653,"props":1602,"children":1604},{"className":655,"code":1603,"language":657,"meta":5,"style":5},"all$ wget https://raw.githubusercontent.com/containerd/containerd/main/containerd.service\nall$ mv containerd.service /usr/lib/systemd/system/\n",[1605],{"type":39,"tag":660,"props":1606,"children":1607},{"__ignoreMap":5},[1608,1625],{"type":39,"tag":664,"props":1609,"children":1610},{"class":666,"line":667},[1611,1615,1620],{"type":39,"tag":664,"props":1612,"children":1613},{"style":671},[1614],{"type":44,"value":1488},{"type":39,"tag":664,"props":1616,"children":1617},{"style":677},[1618],{"type":44,"value":1619}," wget",{"type":39,"tag":664,"props":1621,"children":1622},{"style":677},[1623],{"type":44,"value":1624}," https://raw.githubusercontent.com/containerd/containerd/main/containerd.service\n",{"type":39,"tag":664,"props":1626,"children":1627},{"class":666,"line":504},[1628,1632,1637,1642],{"type":39,"tag":664,"props":1629,"children":1630},{"style":671},[1631],{"type":44,"value":1488},{"type":39,"tag":664,"props":1633,"children":1634},{"style":677},[1635],{"type":44,"value":1636}," mv",{"type":39,"tag":664,"props":1638,"children":1639},{"style":677},[1640],{"type":44,"value":1641}," containerd.service",{"type":39,"tag":664,"props":1643,"children":1644},{"style":677},[1645],{"type":44,"value":1646}," /usr/lib/systemd/system/\n",{"type":39,"tag":86,"props":1648,"children":1649},{},[1650,1652],{"type":44,"value":1651},"Reload systemd unit files:\n",{"type":39,"tag":653,"props":1653,"children":1655},{"className":655,"code":1654,"language":657,"meta":5,"style":5},"all$ systemctl daemon-reload\n",[1656],{"type":39,"tag":660,"props":1657,"children":1658},{"__ignoreMap":5},[1659],{"type":39,"tag":664,"props":1660,"children":1661},{"class":666,"line":667},[1662,1666,1671],{"type":39,"tag":664,"props":1663,"children":1664},{"style":671},[1665],{"type":44,"value":1488},{"type":39,"tag":664,"props":1667,"children":1668},{"style":677},[1669],{"type":44,"value":1670}," systemctl",{"type":39,"tag":664,"props":1672,"children":1673},{"style":677},[1674],{"type":44,"value":1675}," daemon-reload\n",{"type":39,"tag":86,"props":1677,"children":1678},{},[1679,1681],{"type":44,"value":1680},"Install containerd:\n",{"type":39,"tag":653,"props":1682,"children":1684},{"className":655,"code":1683,"language":657,"meta":5,"style":5},"all$ wget https://github.com/containerd/containerd/releases/download/v1.6.2/containerd-1.6.2-linux-amd64.tar.gz\nall$ tar Czxvf /usr/local containerd-1.6.2-linux-amd64.tar.gz\nall$ systemctl enable --now containerd\n",[1685],{"type":39,"tag":660,"props":1686,"children":1687},{"__ignoreMap":5},[1688,1704,1731],{"type":39,"tag":664,"props":1689,"children":1690},{"class":666,"line":667},[1691,1695,1699],{"type":39,"tag":664,"props":1692,"children":1693},{"style":671},[1694],{"type":44,"value":1488},{"type":39,"tag":664,"props":1696,"children":1697},{"style":677},[1698],{"type":44,"value":1619},{"type":39,"tag":664,"props":1700,"children":1701},{"style":677},[1702],{"type":44,"value":1703}," https://github.com/containerd/containerd/releases/download/v1.6.2/containerd-1.6.2-linux-amd64.tar.gz\n",{"type":39,"tag":664,"props":1705,"children":1706},{"class":666,"line":504},[1707,1711,1716,1721,1726],{"type":39,"tag":664,"props":1708,"children":1709},{"style":671},[1710],{"type":44,"value":1488},{"type":39,"tag":664,"props":1712,"children":1713},{"style":677},[1714],{"type":44,"value":1715}," tar",{"type":39,"tag":664,"props":1717,"children":1718},{"style":677},[1719],{"type":44,"value":1720}," Czxvf",{"type":39,"tag":664,"props":1722,"children":1723},{"style":677},[1724],{"type":44,"value":1725}," /usr/local",{"type":39,"tag":664,"props":1727,"children":1728},{"style":677},[1729],{"type":44,"value":1730}," containerd-1.6.2-linux-amd64.tar.gz\n",{"type":39,"tag":664,"props":1732,"children":1733},{"class":666,"line":509},[1734,1738,1742,1747,1752],{"type":39,"tag":664,"props":1735,"children":1736},{"style":671},[1737],{"type":44,"value":1488},{"type":39,"tag":664,"props":1739,"children":1740},{"style":677},[1741],{"type":44,"value":1670},{"type":39,"tag":664,"props":1743,"children":1744},{"style":677},[1745],{"type":44,"value":1746}," enable",{"type":39,"tag":664,"props":1748,"children":1749},{"style":677},[1750],{"type":44,"value":1751}," --now",{"type":39,"tag":664,"props":1753,"children":1754},{"style":677},[1755],{"type":44,"value":1756}," containerd\n",{"type":39,"tag":130,"props":1758,"children":1760},{"id":1759},"installing-runc",[1761],{"type":44,"value":1762},"Installing runc",{"type":39,"tag":1201,"props":1764,"children":1765},{},[1766],{"type":39,"tag":86,"props":1767,"children":1768},{},[1769,1771,1777,1779],{"type":44,"value":1770},"Download and install ",{"type":39,"tag":660,"props":1772,"children":1774},{"className":1773},[],[1775],{"type":44,"value":1776},"runc",{"type":44,"value":1778},":\n",{"type":39,"tag":653,"props":1780,"children":1782},{"className":655,"code":1781,"language":657,"meta":5,"style":5},"all$ wget https://github.com/opencontainers/runc/releases/download/v1.1.6/runc.amd64\nall$ install -m 755 runc.amd64 /usr/local/sbin/runc\n",[1783],{"type":39,"tag":660,"props":1784,"children":1785},{"__ignoreMap":5},[1786,1802],{"type":39,"tag":664,"props":1787,"children":1788},{"class":666,"line":667},[1789,1793,1797],{"type":39,"tag":664,"props":1790,"children":1791},{"style":671},[1792],{"type":44,"value":1488},{"type":39,"tag":664,"props":1794,"children":1795},{"style":677},[1796],{"type":44,"value":1619},{"type":39,"tag":664,"props":1798,"children":1799},{"style":677},[1800],{"type":44,"value":1801}," https://github.com/opencontainers/runc/releases/download/v1.1.6/runc.amd64\n",{"type":39,"tag":664,"props":1803,"children":1804},{"class":666,"line":504},[1805,1809,1814,1819,1825,1830],{"type":39,"tag":664,"props":1806,"children":1807},{"style":671},[1808],{"type":44,"value":1488},{"type":39,"tag":664,"props":1810,"children":1811},{"style":677},[1812],{"type":44,"value":1813}," install",{"type":39,"tag":664,"props":1815,"children":1816},{"style":677},[1817],{"type":44,"value":1818}," -m",{"type":39,"tag":664,"props":1820,"children":1822},{"style":1821},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[1823],{"type":44,"value":1824}," 755",{"type":39,"tag":664,"props":1826,"children":1827},{"style":677},[1828],{"type":44,"value":1829}," runc.amd64",{"type":39,"tag":664,"props":1831,"children":1832},{"style":677},[1833],{"type":44,"value":1834}," /usr/local/sbin/runc\n",{"type":39,"tag":130,"props":1836,"children":1838},{"id":1837},"setting-up-cni-plugins",[1839],{"type":44,"value":1840},"Setting Up CNI Plugins",{"type":39,"tag":1201,"props":1842,"children":1843},{},[1844],{"type":39,"tag":86,"props":1845,"children":1846},{},[1847,1849],{"type":44,"value":1848},"Install CNI plugins:\n",{"type":39,"tag":653,"props":1850,"children":1852},{"className":655,"code":1851,"language":657,"meta":5,"style":5},"all$ wget https://github.com/containernetworking/plugins/releases/download/v1.2.0/cni-plugins-linux-amd64-v1.2.0.tgz\nall$ mkdir -p /opt/cni/bin\nall$ tar Czxvf /opt/cni/bin cni-plugins-linux-amd64-v1.2.0.tgz\n",[1853],{"type":39,"tag":660,"props":1854,"children":1855},{"__ignoreMap":5},[1856,1872,1894],{"type":39,"tag":664,"props":1857,"children":1858},{"class":666,"line":667},[1859,1863,1867],{"type":39,"tag":664,"props":1860,"children":1861},{"style":671},[1862],{"type":44,"value":1488},{"type":39,"tag":664,"props":1864,"children":1865},{"style":677},[1866],{"type":44,"value":1619},{"type":39,"tag":664,"props":1868,"children":1869},{"style":677},[1870],{"type":44,"value":1871}," https://github.com/containernetworking/plugins/releases/download/v1.2.0/cni-plugins-linux-amd64-v1.2.0.tgz\n",{"type":39,"tag":664,"props":1873,"children":1874},{"class":666,"line":504},[1875,1879,1884,1889],{"type":39,"tag":664,"props":1876,"children":1877},{"style":671},[1878],{"type":44,"value":1488},{"type":39,"tag":664,"props":1880,"children":1881},{"style":677},[1882],{"type":44,"value":1883}," mkdir",{"type":39,"tag":664,"props":1885,"children":1886},{"style":677},[1887],{"type":44,"value":1888}," -p",{"type":39,"tag":664,"props":1890,"children":1891},{"style":677},[1892],{"type":44,"value":1893}," /opt/cni/bin\n",{"type":39,"tag":664,"props":1895,"children":1896},{"class":666,"line":509},[1897,1901,1905,1909,1914],{"type":39,"tag":664,"props":1898,"children":1899},{"style":671},[1900],{"type":44,"value":1488},{"type":39,"tag":664,"props":1902,"children":1903},{"style":677},[1904],{"type":44,"value":1715},{"type":39,"tag":664,"props":1906,"children":1907},{"style":677},[1908],{"type":44,"value":1720},{"type":39,"tag":664,"props":1910,"children":1911},{"style":677},[1912],{"type":44,"value":1913}," /opt/cni/bin",{"type":39,"tag":664,"props":1915,"children":1916},{"style":677},[1917],{"type":44,"value":1918}," cni-plugins-linux-amd64-v1.2.0.tgz\n",{"type":39,"tag":130,"props":1920,"children":1922},{"id":1921},"configuring-containerd",[1923],{"type":44,"value":1924},"Configuring containerd",{"type":39,"tag":1201,"props":1926,"children":1927},{},[1928,2001,2038],{"type":39,"tag":86,"props":1929,"children":1930},{},[1931,1933],{"type":44,"value":1932},"Generate the default configuration:\n",{"type":39,"tag":653,"props":1934,"children":1936},{"className":655,"code":1935,"language":657,"meta":5,"style":5},"all$ mkdir -p /etc/containerd/\nall$ containerd config default | sudo tee /etc/containerd/config.toml\n",[1937],{"type":39,"tag":660,"props":1938,"children":1939},{"__ignoreMap":5},[1940,1960],{"type":39,"tag":664,"props":1941,"children":1942},{"class":666,"line":667},[1943,1947,1951,1955],{"type":39,"tag":664,"props":1944,"children":1945},{"style":671},[1946],{"type":44,"value":1488},{"type":39,"tag":664,"props":1948,"children":1949},{"style":677},[1950],{"type":44,"value":1883},{"type":39,"tag":664,"props":1952,"children":1953},{"style":677},[1954],{"type":44,"value":1888},{"type":39,"tag":664,"props":1956,"children":1957},{"style":677},[1958],{"type":44,"value":1959}," /etc/containerd/\n",{"type":39,"tag":664,"props":1961,"children":1962},{"class":666,"line":504},[1963,1967,1972,1977,1982,1986,1991,1996],{"type":39,"tag":664,"props":1964,"children":1965},{"style":671},[1966],{"type":44,"value":1488},{"type":39,"tag":664,"props":1968,"children":1969},{"style":677},[1970],{"type":44,"value":1971}," containerd",{"type":39,"tag":664,"props":1973,"children":1974},{"style":677},[1975],{"type":44,"value":1976}," config",{"type":39,"tag":664,"props":1978,"children":1979},{"style":677},[1980],{"type":44,"value":1981}," default",{"type":39,"tag":664,"props":1983,"children":1984},{"style":708},[1985],{"type":44,"value":767},{"type":39,"tag":664,"props":1987,"children":1988},{"style":671},[1989],{"type":44,"value":1990}," sudo",{"type":39,"tag":664,"props":1992,"children":1993},{"style":677},[1994],{"type":44,"value":1995}," tee",{"type":39,"tag":664,"props":1997,"children":1998},{"style":677},[1999],{"type":44,"value":2000}," /etc/containerd/config.toml\n",{"type":39,"tag":86,"props":2002,"children":2003},{},[2004,2006,2012,2013],{"type":44,"value":2005},"Edit ",{"type":39,"tag":660,"props":2007,"children":2009},{"className":2008},[],[2010],{"type":44,"value":2011},"/etc/containerd/config.toml",{"type":44,"value":1778},{"type":39,"tag":653,"props":2014,"children":2018},{"className":2015,"code":2016,"language":2017,"meta":5,"style":5},"language-toml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n    SystemdCgroup = true\n","toml",[2019],{"type":39,"tag":660,"props":2020,"children":2021},{"__ignoreMap":5},[2022,2030],{"type":39,"tag":664,"props":2023,"children":2024},{"class":666,"line":667},[2025],{"type":39,"tag":664,"props":2026,"children":2027},{},[2028],{"type":44,"value":2029},"[plugins.\"io.containerd.grpc.v1.cri\".containerd.runtimes.runc.options]\n",{"type":39,"tag":664,"props":2031,"children":2032},{"class":666,"line":504},[2033],{"type":39,"tag":664,"props":2034,"children":2035},{},[2036],{"type":44,"value":2037},"    SystemdCgroup = true\n",{"type":39,"tag":86,"props":2039,"children":2040},{},[2041,2043],{"type":44,"value":2042},"Restart containerd:\n",{"type":39,"tag":653,"props":2044,"children":2046},{"className":655,"code":2045,"language":657,"meta":5,"style":5},"all$ systemctl restart containerd\n",[2047],{"type":39,"tag":660,"props":2048,"children":2049},{"__ignoreMap":5},[2050],{"type":39,"tag":664,"props":2051,"children":2052},{"class":666,"line":667},[2053,2057,2061,2066],{"type":39,"tag":664,"props":2054,"children":2055},{"style":671},[2056],{"type":44,"value":1488},{"type":39,"tag":664,"props":2058,"children":2059},{"style":677},[2060],{"type":44,"value":1670},{"type":39,"tag":664,"props":2062,"children":2063},{"style":677},[2064],{"type":44,"value":2065}," restart",{"type":39,"tag":664,"props":2067,"children":2068},{"style":677},[2069],{"type":44,"value":1756},{"type":39,"tag":130,"props":2071,"children":2073},{"id":2072},"installing-kubernetes-packages",[2074],{"type":44,"value":2075},"Installing Kubernetes Packages",{"type":39,"tag":1201,"props":2077,"children":2078},{},[2079],{"type":39,"tag":86,"props":2080,"children":2081},{},[2082,2084],{"type":44,"value":2083},"Add the Kubernetes apt repository:\n",{"type":39,"tag":653,"props":2085,"children":2087},{"className":655,"code":2086,"language":657,"meta":5,"style":5},"all$ curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -\nall$ cat \u003C\u003CEOF >/etc/apt/sources.list.d/kubernetes.list\ndeb http://packages.cloud.google.com/apt/ kubernetes-xenial main\nEOF\nall$ apt-get update\nall$ apt-get install kubeadm kubectl kubelet\n",[2088],{"type":39,"tag":660,"props":2089,"children":2090},{"__ignoreMap":5},[2091,2131,2163,2171,2179,2196],{"type":39,"tag":664,"props":2092,"children":2093},{"class":666,"line":667},[2094,2098,2103,2107,2112,2116,2121,2126],{"type":39,"tag":664,"props":2095,"children":2096},{"style":671},[2097],{"type":44,"value":1488},{"type":39,"tag":664,"props":2099,"children":2100},{"style":677},[2101],{"type":44,"value":2102}," curl",{"type":39,"tag":664,"props":2104,"children":2105},{"style":677},[2106],{"type":44,"value":757},{"type":39,"tag":664,"props":2108,"children":2109},{"style":677},[2110],{"type":44,"value":2111}," https://packages.cloud.google.com/apt/doc/apt-key.gpg",{"type":39,"tag":664,"props":2113,"children":2114},{"style":708},[2115],{"type":44,"value":767},{"type":39,"tag":664,"props":2117,"children":2118},{"style":671},[2119],{"type":44,"value":2120}," apt-key",{"type":39,"tag":664,"props":2122,"children":2123},{"style":677},[2124],{"type":44,"value":2125}," add",{"type":39,"tag":664,"props":2127,"children":2128},{"style":677},[2129],{"type":44,"value":2130}," -\n",{"type":39,"tag":664,"props":2132,"children":2133},{"class":666,"line":504},[2134,2138,2143,2148,2153,2158],{"type":39,"tag":664,"props":2135,"children":2136},{"style":671},[2137],{"type":44,"value":1488},{"type":39,"tag":664,"props":2139,"children":2140},{"style":677},[2141],{"type":44,"value":2142}," cat",{"type":39,"tag":664,"props":2144,"children":2145},{"style":708},[2146],{"type":44,"value":2147}," \u003C\u003C",{"type":39,"tag":664,"props":2149,"children":2150},{"style":708},[2151],{"type":44,"value":2152},"EOF",{"type":39,"tag":664,"props":2154,"children":2155},{"style":708},[2156],{"type":44,"value":2157}," >",{"type":39,"tag":664,"props":2159,"children":2160},{"style":677},[2161],{"type":44,"value":2162},"/etc/apt/sources.list.d/kubernetes.list\n",{"type":39,"tag":664,"props":2164,"children":2165},{"class":666,"line":509},[2166],{"type":39,"tag":664,"props":2167,"children":2168},{"style":677},[2169],{"type":44,"value":2170},"deb http://packages.cloud.google.com/apt/ kubernetes-xenial main\n",{"type":39,"tag":664,"props":2172,"children":2173},{"class":666,"line":958},[2174],{"type":39,"tag":664,"props":2175,"children":2176},{"style":708},[2177],{"type":44,"value":2178},"EOF\n",{"type":39,"tag":664,"props":2180,"children":2181},{"class":666,"line":1090},[2182,2186,2191],{"type":39,"tag":664,"props":2183,"children":2184},{"style":671},[2185],{"type":44,"value":1488},{"type":39,"tag":664,"props":2187,"children":2188},{"style":677},[2189],{"type":44,"value":2190}," apt-get",{"type":39,"tag":664,"props":2192,"children":2193},{"style":677},[2194],{"type":44,"value":2195}," update\n",{"type":39,"tag":664,"props":2197,"children":2198},{"class":666,"line":1099},[2199,2203,2207,2211,2216,2221],{"type":39,"tag":664,"props":2200,"children":2201},{"style":671},[2202],{"type":44,"value":1488},{"type":39,"tag":664,"props":2204,"children":2205},{"style":677},[2206],{"type":44,"value":2190},{"type":39,"tag":664,"props":2208,"children":2209},{"style":677},[2210],{"type":44,"value":1813},{"type":39,"tag":664,"props":2212,"children":2213},{"style":677},[2214],{"type":44,"value":2215}," kubeadm",{"type":39,"tag":664,"props":2217,"children":2218},{"style":677},[2219],{"type":44,"value":2220}," kubectl",{"type":39,"tag":664,"props":2222,"children":2223},{"style":677},[2224],{"type":44,"value":2225}," kubelet\n",{"type":39,"tag":130,"props":2227,"children":2229},{"id":2228},"configuring-sysctl-settings",[2230],{"type":44,"value":2231},"Configuring Sysctl Settings",{"type":39,"tag":1201,"props":2233,"children":2234},{},[2235,2335],{"type":39,"tag":86,"props":2236,"children":2237},{},[2238,2240],{"type":44,"value":2239},"Load required kernel modules:\n",{"type":39,"tag":653,"props":2241,"children":2243},{"className":655,"code":2242,"language":657,"meta":5,"style":5},"all$ cat \u003C\u003CEOF | tee /etc/modules-load.d/k8s.conf\noverlay\nbr_netfilter\nEOF\nall$ modprobe overlay\nall$ modprobe br_netfilter\n",[2244],{"type":39,"tag":660,"props":2245,"children":2246},{"__ignoreMap":5},[2247,2279,2287,2295,2302,2319],{"type":39,"tag":664,"props":2248,"children":2249},{"class":666,"line":667},[2250,2254,2258,2262,2266,2270,2274],{"type":39,"tag":664,"props":2251,"children":2252},{"style":671},[2253],{"type":44,"value":1488},{"type":39,"tag":664,"props":2255,"children":2256},{"style":677},[2257],{"type":44,"value":2142},{"type":39,"tag":664,"props":2259,"children":2260},{"style":708},[2261],{"type":44,"value":2147},{"type":39,"tag":664,"props":2263,"children":2264},{"style":708},[2265],{"type":44,"value":2152},{"type":39,"tag":664,"props":2267,"children":2268},{"style":708},[2269],{"type":44,"value":767},{"type":39,"tag":664,"props":2271,"children":2272},{"style":671},[2273],{"type":44,"value":1995},{"type":39,"tag":664,"props":2275,"children":2276},{"style":677},[2277],{"type":44,"value":2278}," /etc/modules-load.d/k8s.conf\n",{"type":39,"tag":664,"props":2280,"children":2281},{"class":666,"line":504},[2282],{"type":39,"tag":664,"props":2283,"children":2284},{"style":677},[2285],{"type":44,"value":2286},"overlay\n",{"type":39,"tag":664,"props":2288,"children":2289},{"class":666,"line":509},[2290],{"type":39,"tag":664,"props":2291,"children":2292},{"style":677},[2293],{"type":44,"value":2294},"br_netfilter\n",{"type":39,"tag":664,"props":2296,"children":2297},{"class":666,"line":958},[2298],{"type":39,"tag":664,"props":2299,"children":2300},{"style":708},[2301],{"type":44,"value":2178},{"type":39,"tag":664,"props":2303,"children":2304},{"class":666,"line":1090},[2305,2309,2314],{"type":39,"tag":664,"props":2306,"children":2307},{"style":671},[2308],{"type":44,"value":1488},{"type":39,"tag":664,"props":2310,"children":2311},{"style":677},[2312],{"type":44,"value":2313}," modprobe",{"type":39,"tag":664,"props":2315,"children":2316},{"style":677},[2317],{"type":44,"value":2318}," overlay\n",{"type":39,"tag":664,"props":2320,"children":2321},{"class":666,"line":1099},[2322,2326,2330],{"type":39,"tag":664,"props":2323,"children":2324},{"style":671},[2325],{"type":44,"value":1488},{"type":39,"tag":664,"props":2327,"children":2328},{"style":677},[2329],{"type":44,"value":2313},{"type":39,"tag":664,"props":2331,"children":2332},{"style":677},[2333],{"type":44,"value":2334}," br_netfilter\n",{"type":39,"tag":86,"props":2336,"children":2337},{},[2338,2340],{"type":44,"value":2339},"Apply sysctl settings:\n",{"type":39,"tag":653,"props":2341,"children":2343},{"className":655,"code":2342,"language":657,"meta":5,"style":5},"all$ cat \u003C\u003CEOF | tee /etc/sysctl.d/k8s.conf\nnet.bridge.bridge-nf-call-iptables = 1\nnet.ipv4.ip_forward                = 1\nnet.ipv6.conf.default.forwarding   = 1\nEOF\nall$ sysctl --system\n",[2344],{"type":39,"tag":660,"props":2345,"children":2346},{"__ignoreMap":5},[2347,2379,2387,2395,2403,2410],{"type":39,"tag":664,"props":2348,"children":2349},{"class":666,"line":667},[2350,2354,2358,2362,2366,2370,2374],{"type":39,"tag":664,"props":2351,"children":2352},{"style":671},[2353],{"type":44,"value":1488},{"type":39,"tag":664,"props":2355,"children":2356},{"style":677},[2357],{"type":44,"value":2142},{"type":39,"tag":664,"props":2359,"children":2360},{"style":708},[2361],{"type":44,"value":2147},{"type":39,"tag":664,"props":2363,"children":2364},{"style":708},[2365],{"type":44,"value":2152},{"type":39,"tag":664,"props":2367,"children":2368},{"style":708},[2369],{"type":44,"value":767},{"type":39,"tag":664,"props":2371,"children":2372},{"style":671},[2373],{"type":44,"value":1995},{"type":39,"tag":664,"props":2375,"children":2376},{"style":677},[2377],{"type":44,"value":2378}," /etc/sysctl.d/k8s.conf\n",{"type":39,"tag":664,"props":2380,"children":2381},{"class":666,"line":504},[2382],{"type":39,"tag":664,"props":2383,"children":2384},{"style":677},[2385],{"type":44,"value":2386},"net.bridge.bridge-nf-call-iptables = 1\n",{"type":39,"tag":664,"props":2388,"children":2389},{"class":666,"line":509},[2390],{"type":39,"tag":664,"props":2391,"children":2392},{"style":677},[2393],{"type":44,"value":2394},"net.ipv4.ip_forward                = 1\n",{"type":39,"tag":664,"props":2396,"children":2397},{"class":666,"line":958},[2398],{"type":39,"tag":664,"props":2399,"children":2400},{"style":677},[2401],{"type":44,"value":2402},"net.ipv6.conf.default.forwarding   = 1\n",{"type":39,"tag":664,"props":2404,"children":2405},{"class":666,"line":1090},[2406],{"type":39,"tag":664,"props":2407,"children":2408},{"style":708},[2409],{"type":44,"value":2178},{"type":39,"tag":664,"props":2411,"children":2412},{"class":666,"line":1099},[2413,2417,2422],{"type":39,"tag":664,"props":2414,"children":2415},{"style":671},[2416],{"type":44,"value":1488},{"type":39,"tag":664,"props":2418,"children":2419},{"style":677},[2420],{"type":44,"value":2421}," sysctl",{"type":39,"tag":664,"props":2423,"children":2424},{"style":677},[2425],{"type":44,"value":2426}," --system\n",{"type":39,"tag":177,"props":2428,"children":2429},{},[],{"type":39,"tag":57,"props":2431,"children":2433},{"id":2432},"step-4-deploying-and-configuring-the-control-plane",[2434],{"type":44,"value":2435},"Step 4 - Deploying and Configuring the Control Plane",{"type":39,"tag":1201,"props":2437,"children":2438},{},[2439,2476,2534,2601],{"type":39,"tag":86,"props":2440,"children":2441},{},[2442,2444],{"type":44,"value":2443},"On the master node, pull Kubernetes images:\n",{"type":39,"tag":653,"props":2445,"children":2447},{"className":655,"code":2446,"language":657,"meta":5,"style":5},"master$ kubeadm config images pull\n",[2448],{"type":39,"tag":660,"props":2449,"children":2450},{"__ignoreMap":5},[2451],{"type":39,"tag":664,"props":2452,"children":2453},{"class":666,"line":667},[2454,2458,2462,2466,2471],{"type":39,"tag":664,"props":2455,"children":2456},{"style":671},[2457],{"type":44,"value":1504},{"type":39,"tag":664,"props":2459,"children":2460},{"style":677},[2461],{"type":44,"value":2215},{"type":39,"tag":664,"props":2463,"children":2464},{"style":677},[2465],{"type":44,"value":1976},{"type":39,"tag":664,"props":2467,"children":2468},{"style":677},[2469],{"type":44,"value":2470}," images",{"type":39,"tag":664,"props":2472,"children":2473},{"style":677},[2474],{"type":44,"value":2475}," pull\n",{"type":39,"tag":86,"props":2477,"children":2478},{},[2479,2481],{"type":44,"value":2480},"Initialize the control plane:\n",{"type":39,"tag":653,"props":2482,"children":2484},{"className":655,"code":2483,"language":657,"meta":5,"style":5},"master$ kubeadm init        --pod-network-cidr=10.244.0.0/16        --kubernetes-version=v1.27.1        --ignore-preflight-errors=NumCPU        --upload-certs        --apiserver-cert-extra-sans 10.0.0.1\n",[2485],{"type":39,"tag":660,"props":2486,"children":2487},{"__ignoreMap":5},[2488],{"type":39,"tag":664,"props":2489,"children":2490},{"class":666,"line":667},[2491,2495,2499,2504,2509,2514,2519,2524,2529],{"type":39,"tag":664,"props":2492,"children":2493},{"style":671},[2494],{"type":44,"value":1504},{"type":39,"tag":664,"props":2496,"children":2497},{"style":677},[2498],{"type":44,"value":2215},{"type":39,"tag":664,"props":2500,"children":2501},{"style":677},[2502],{"type":44,"value":2503}," init",{"type":39,"tag":664,"props":2505,"children":2506},{"style":677},[2507],{"type":44,"value":2508},"        --pod-network-cidr=10.244.0.0/16",{"type":39,"tag":664,"props":2510,"children":2511},{"style":677},[2512],{"type":44,"value":2513},"        --kubernetes-version=v1.27.1",{"type":39,"tag":664,"props":2515,"children":2516},{"style":677},[2517],{"type":44,"value":2518},"        --ignore-preflight-errors=NumCPU",{"type":39,"tag":664,"props":2520,"children":2521},{"style":677},[2522],{"type":44,"value":2523},"        --upload-certs",{"type":39,"tag":664,"props":2525,"children":2526},{"style":677},[2527],{"type":44,"value":2528},"        --apiserver-cert-extra-sans",{"type":39,"tag":664,"props":2530,"children":2531},{"style":1821},[2532],{"type":44,"value":2533}," 10.0.0.1\n",{"type":39,"tag":86,"props":2535,"children":2536},{},[2537,2539,2545,2547],{"type":44,"value":2538},"Configure ",{"type":39,"tag":660,"props":2540,"children":2542},{"className":2541},[],[2543],{"type":44,"value":2544},"kubectl",{"type":44,"value":2546}," for the root user:\n",{"type":39,"tag":653,"props":2548,"children":2550},{"className":655,"code":2549,"language":657,"meta":5,"style":5},"master$ mkdir -p /root/.kube\nmaster$ cp -i /etc/kubernetes/admin.conf /root/.kube/config\n",[2551],{"type":39,"tag":660,"props":2552,"children":2553},{"__ignoreMap":5},[2554,2574],{"type":39,"tag":664,"props":2555,"children":2556},{"class":666,"line":667},[2557,2561,2565,2569],{"type":39,"tag":664,"props":2558,"children":2559},{"style":671},[2560],{"type":44,"value":1504},{"type":39,"tag":664,"props":2562,"children":2563},{"style":677},[2564],{"type":44,"value":1883},{"type":39,"tag":664,"props":2566,"children":2567},{"style":677},[2568],{"type":44,"value":1888},{"type":39,"tag":664,"props":2570,"children":2571},{"style":677},[2572],{"type":44,"value":2573}," /root/.kube\n",{"type":39,"tag":664,"props":2575,"children":2576},{"class":666,"line":504},[2577,2581,2586,2591,2596],{"type":39,"tag":664,"props":2578,"children":2579},{"style":671},[2580],{"type":44,"value":1504},{"type":39,"tag":664,"props":2582,"children":2583},{"style":677},[2584],{"type":44,"value":2585}," cp",{"type":39,"tag":664,"props":2587,"children":2588},{"style":677},[2589],{"type":44,"value":2590}," -i",{"type":39,"tag":664,"props":2592,"children":2593},{"style":677},[2594],{"type":44,"value":2595}," /etc/kubernetes/admin.conf",{"type":39,"tag":664,"props":2597,"children":2598},{"style":677},[2599],{"type":44,"value":2600}," /root/.kube/config\n",{"type":39,"tag":86,"props":2602,"children":2603},{},[2604,2606],{"type":44,"value":2605},"Deploy the Flannel CNI:\n",{"type":39,"tag":653,"props":2607,"children":2609},{"className":655,"code":2608,"language":657,"meta":5,"style":5},"master$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml\n",[2610],{"type":39,"tag":660,"props":2611,"children":2612},{"__ignoreMap":5},[2613],{"type":39,"tag":664,"props":2614,"children":2615},{"class":666,"line":667},[2616,2620,2624,2629,2634],{"type":39,"tag":664,"props":2617,"children":2618},{"style":671},[2619],{"type":44,"value":1504},{"type":39,"tag":664,"props":2621,"children":2622},{"style":677},[2623],{"type":44,"value":2220},{"type":39,"tag":664,"props":2625,"children":2626},{"style":677},[2627],{"type":44,"value":2628}," apply",{"type":39,"tag":664,"props":2630,"children":2631},{"style":677},[2632],{"type":44,"value":2633}," -f",{"type":39,"tag":664,"props":2635,"children":2636},{"style":677},[2637],{"type":44,"value":2638}," https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml\n",{"type":39,"tag":177,"props":2640,"children":2641},{},[],{"type":39,"tag":57,"props":2643,"children":2645},{"id":2644},"step-5-adding-worker-nodes",[2646],{"type":44,"value":2647},"Step 5 - Adding Worker Nodes",{"type":39,"tag":1201,"props":2649,"children":2650},{},[2651,2689,2722],{"type":39,"tag":86,"props":2652,"children":2653},{},[2654,2656],{"type":44,"value":2655},"Generate the join command on the master node:\n",{"type":39,"tag":653,"props":2657,"children":2659},{"className":655,"code":2658,"language":657,"meta":5,"style":5},"master$ kubeadm token create --print-join-command\n",[2660],{"type":39,"tag":660,"props":2661,"children":2662},{"__ignoreMap":5},[2663],{"type":39,"tag":664,"props":2664,"children":2665},{"class":666,"line":667},[2666,2670,2674,2679,2684],{"type":39,"tag":664,"props":2667,"children":2668},{"style":671},[2669],{"type":44,"value":1504},{"type":39,"tag":664,"props":2671,"children":2672},{"style":677},[2673],{"type":44,"value":2215},{"type":39,"tag":664,"props":2675,"children":2676},{"style":677},[2677],{"type":44,"value":2678}," token",{"type":39,"tag":664,"props":2680,"children":2681},{"style":677},[2682],{"type":44,"value":2683}," create",{"type":39,"tag":664,"props":2685,"children":2686},{"style":677},[2687],{"type":44,"value":2688}," --print-join-command\n",{"type":39,"tag":86,"props":2690,"children":2691},{},[2692,2694],{"type":44,"value":2693},"Execute the join command on each worker node:\n",{"type":39,"tag":653,"props":2695,"children":2697},{"className":655,"code":2696,"language":657,"meta":5,"style":5},"worker$ kubeadm join ...\n",[2698],{"type":39,"tag":660,"props":2699,"children":2700},{"__ignoreMap":5},[2701],{"type":39,"tag":664,"props":2702,"children":2703},{"class":666,"line":667},[2704,2708,2712,2717],{"type":39,"tag":664,"props":2705,"children":2706},{"style":671},[2707],{"type":44,"value":1520},{"type":39,"tag":664,"props":2709,"children":2710},{"style":677},[2711],{"type":44,"value":2215},{"type":39,"tag":664,"props":2713,"children":2714},{"style":677},[2715],{"type":44,"value":2716}," join",{"type":39,"tag":664,"props":2718,"children":2719},{"style":677},[2720],{"type":44,"value":2721}," ...\n",{"type":39,"tag":86,"props":2723,"children":2724},{},[2725,2727],{"type":44,"value":2726},"Verify nodes:\n",{"type":39,"tag":653,"props":2728,"children":2730},{"className":655,"code":2729,"language":657,"meta":5,"style":5},"local$ kubectl get nodes\n",[2731],{"type":39,"tag":660,"props":2732,"children":2733},{"__ignoreMap":5},[2734],{"type":39,"tag":664,"props":2735,"children":2736},{"class":666,"line":667},[2737,2741,2745,2750],{"type":39,"tag":664,"props":2738,"children":2739},{"style":671},[2740],{"type":44,"value":1470},{"type":39,"tag":664,"props":2742,"children":2743},{"style":677},[2744],{"type":44,"value":2220},{"type":39,"tag":664,"props":2746,"children":2747},{"style":677},[2748],{"type":44,"value":2749}," get",{"type":39,"tag":664,"props":2751,"children":2752},{"style":677},[2753],{"type":44,"value":2754}," nodes\n",{"type":39,"tag":177,"props":2756,"children":2757},{},[],{"type":39,"tag":57,"props":2759,"children":2761},{"id":2760},"step-6-setting-up-external-connectivity",[2762],{"type":44,"value":2763},"Step 6 - Setting Up External Connectivity",{"type":39,"tag":1201,"props":2765,"children":2766},{},[2767,2803,2981,3072],{"type":39,"tag":86,"props":2768,"children":2769},{},[2770,2772],{"type":44,"value":2771},"Install MetalLB:",{"type":39,"tag":653,"props":2773,"children":2775},{"className":655,"code":2774,"language":657,"meta":5,"style":5},"local$ kubectl apply -f https://raw.githubusercontent.com/metallb/metallb/v0.13.9/config/manifests/metallb-native.yaml\n",[2776],{"type":39,"tag":660,"props":2777,"children":2778},{"__ignoreMap":5},[2779],{"type":39,"tag":664,"props":2780,"children":2781},{"class":666,"line":667},[2782,2786,2790,2794,2798],{"type":39,"tag":664,"props":2783,"children":2784},{"style":671},[2785],{"type":44,"value":1470},{"type":39,"tag":664,"props":2787,"children":2788},{"style":677},[2789],{"type":44,"value":2220},{"type":39,"tag":664,"props":2791,"children":2792},{"style":677},[2793],{"type":44,"value":2628},{"type":39,"tag":664,"props":2795,"children":2796},{"style":677},[2797],{"type":44,"value":2633},{"type":39,"tag":664,"props":2799,"children":2800},{"style":677},[2801],{"type":44,"value":2802}," https://raw.githubusercontent.com/metallb/metallb/v0.13.9/config/manifests/metallb-native.yaml\n",{"type":39,"tag":86,"props":2804,"children":2805},{},[2806,2808,2935,2938,2940],{"type":44,"value":2807},"Configure MetalLB IP Pool:",{"type":39,"tag":653,"props":2809,"children":2812},{"className":2810,"code":2811,"language":12,"meta":5,"style":5},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","apiVersion: metallb.io/v1beta1\nkind: IPAddressPool\nmetadata:\n  name: first-pool\n  namespace: metallb-system\nspec:\n  addresses:\n  - 89.23.86.53-89.23.86.53\n",[2813],{"type":39,"tag":660,"props":2814,"children":2815},{"__ignoreMap":5},[2816,2835,2852,2864,2881,2898,2910,2922],{"type":39,"tag":664,"props":2817,"children":2818},{"class":666,"line":667},[2819,2825,2830],{"type":39,"tag":664,"props":2820,"children":2822},{"style":2821},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[2823],{"type":44,"value":2824},"apiVersion",{"type":39,"tag":664,"props":2826,"children":2827},{"style":708},[2828],{"type":44,"value":2829},":",{"type":39,"tag":664,"props":2831,"children":2832},{"style":677},[2833],{"type":44,"value":2834}," metallb.io/v1beta1\n",{"type":39,"tag":664,"props":2836,"children":2837},{"class":666,"line":504},[2838,2843,2847],{"type":39,"tag":664,"props":2839,"children":2840},{"style":2821},[2841],{"type":44,"value":2842},"kind",{"type":39,"tag":664,"props":2844,"children":2845},{"style":708},[2846],{"type":44,"value":2829},{"type":39,"tag":664,"props":2848,"children":2849},{"style":677},[2850],{"type":44,"value":2851}," IPAddressPool\n",{"type":39,"tag":664,"props":2853,"children":2854},{"class":666,"line":509},[2855,2860],{"type":39,"tag":664,"props":2856,"children":2857},{"style":2821},[2858],{"type":44,"value":2859},"metadata",{"type":39,"tag":664,"props":2861,"children":2862},{"style":708},[2863],{"type":44,"value":1778},{"type":39,"tag":664,"props":2865,"children":2866},{"class":666,"line":958},[2867,2872,2876],{"type":39,"tag":664,"props":2868,"children":2869},{"style":2821},[2870],{"type":44,"value":2871},"  name",{"type":39,"tag":664,"props":2873,"children":2874},{"style":708},[2875],{"type":44,"value":2829},{"type":39,"tag":664,"props":2877,"children":2878},{"style":677},[2879],{"type":44,"value":2880}," first-pool\n",{"type":39,"tag":664,"props":2882,"children":2883},{"class":666,"line":1090},[2884,2889,2893],{"type":39,"tag":664,"props":2885,"children":2886},{"style":2821},[2887],{"type":44,"value":2888},"  namespace",{"type":39,"tag":664,"props":2890,"children":2891},{"style":708},[2892],{"type":44,"value":2829},{"type":39,"tag":664,"props":2894,"children":2895},{"style":677},[2896],{"type":44,"value":2897}," metallb-system\n",{"type":39,"tag":664,"props":2899,"children":2900},{"class":666,"line":1099},[2901,2906],{"type":39,"tag":664,"props":2902,"children":2903},{"style":2821},[2904],{"type":44,"value":2905},"spec",{"type":39,"tag":664,"props":2907,"children":2908},{"style":708},[2909],{"type":44,"value":1778},{"type":39,"tag":664,"props":2911,"children":2912},{"class":666,"line":1108},[2913,2918],{"type":39,"tag":664,"props":2914,"children":2915},{"style":2821},[2916],{"type":44,"value":2917},"  addresses",{"type":39,"tag":664,"props":2919,"children":2920},{"style":708},[2921],{"type":44,"value":1778},{"type":39,"tag":664,"props":2923,"children":2924},{"class":666,"line":1117},[2925,2930],{"type":39,"tag":664,"props":2926,"children":2927},{"style":708},[2928],{"type":44,"value":2929},"  -",{"type":39,"tag":664,"props":2931,"children":2932},{"style":677},[2933],{"type":44,"value":2934}," 89.23.86.53-89.23.86.53\n",{"type":39,"tag":636,"props":2936,"children":2937},{},[],{"type":44,"value":2939},"Apply the configuration:",{"type":39,"tag":653,"props":2941,"children":2943},{"className":655,"code":2942,"language":657,"meta":5,"style":5},"local$ kubectl -n metallb-system apply -f ip-pool.yml\n",[2944],{"type":39,"tag":660,"props":2945,"children":2946},{"__ignoreMap":5},[2947],{"type":39,"tag":664,"props":2948,"children":2949},{"class":666,"line":667},[2950,2954,2958,2963,2968,2972,2976],{"type":39,"tag":664,"props":2951,"children":2952},{"style":671},[2953],{"type":44,"value":1470},{"type":39,"tag":664,"props":2955,"children":2956},{"style":677},[2957],{"type":44,"value":2220},{"type":39,"tag":664,"props":2959,"children":2960},{"style":677},[2961],{"type":44,"value":2962}," -n",{"type":39,"tag":664,"props":2964,"children":2965},{"style":677},[2966],{"type":44,"value":2967}," metallb-system",{"type":39,"tag":664,"props":2969,"children":2970},{"style":677},[2971],{"type":44,"value":2628},{"type":39,"tag":664,"props":2973,"children":2974},{"style":677},[2975],{"type":44,"value":2633},{"type":39,"tag":664,"props":2977,"children":2978},{"style":677},[2979],{"type":44,"value":2980}," ip-pool.yml\n",{"type":39,"tag":86,"props":2982,"children":2983},{},[2984,2986],{"type":44,"value":2985},"Deploy the NGINX Ingress Controller:",{"type":39,"tag":653,"props":2987,"children":2989},{"className":655,"code":2988,"language":657,"meta":5,"style":5},"local$ helm pull oci://ghcr.io/nginxinc/charts/nginx-ingress --untar --version 0.17.1\nlocal$ cd nginx-ingress\nlocal$ helm install nginx-ingress .\n",[2990],{"type":39,"tag":660,"props":2991,"children":2992},{"__ignoreMap":5},[2993,3030,3047],{"type":39,"tag":664,"props":2994,"children":2995},{"class":666,"line":667},[2996,3000,3005,3010,3015,3020,3025],{"type":39,"tag":664,"props":2997,"children":2998},{"style":671},[2999],{"type":44,"value":1470},{"type":39,"tag":664,"props":3001,"children":3002},{"style":677},[3003],{"type":44,"value":3004}," helm",{"type":39,"tag":664,"props":3006,"children":3007},{"style":677},[3008],{"type":44,"value":3009}," pull",{"type":39,"tag":664,"props":3011,"children":3012},{"style":677},[3013],{"type":44,"value":3014}," oci://ghcr.io/nginxinc/charts/nginx-ingress",{"type":39,"tag":664,"props":3016,"children":3017},{"style":677},[3018],{"type":44,"value":3019}," --untar",{"type":39,"tag":664,"props":3021,"children":3022},{"style":677},[3023],{"type":44,"value":3024}," --version",{"type":39,"tag":664,"props":3026,"children":3027},{"style":1821},[3028],{"type":44,"value":3029}," 0.17.1\n",{"type":39,"tag":664,"props":3031,"children":3032},{"class":666,"line":504},[3033,3037,3042],{"type":39,"tag":664,"props":3034,"children":3035},{"style":671},[3036],{"type":44,"value":1470},{"type":39,"tag":664,"props":3038,"children":3039},{"style":677},[3040],{"type":44,"value":3041}," cd",{"type":39,"tag":664,"props":3043,"children":3044},{"style":677},[3045],{"type":44,"value":3046}," nginx-ingress\n",{"type":39,"tag":664,"props":3048,"children":3049},{"class":666,"line":509},[3050,3054,3058,3062,3067],{"type":39,"tag":664,"props":3051,"children":3052},{"style":671},[3053],{"type":44,"value":1470},{"type":39,"tag":664,"props":3055,"children":3056},{"style":677},[3057],{"type":44,"value":3004},{"type":39,"tag":664,"props":3059,"children":3060},{"style":677},[3061],{"type":44,"value":1813},{"type":39,"tag":664,"props":3063,"children":3064},{"style":677},[3065],{"type":44,"value":3066}," nginx-ingress",{"type":39,"tag":664,"props":3068,"children":3069},{"style":677},[3070],{"type":44,"value":3071}," .\n",{"type":39,"tag":86,"props":3073,"children":3074},{},[3075,3077,3179],{"type":44,"value":3076},"Deploy a test web application:",{"type":39,"tag":653,"props":3078,"children":3080},{"className":2810,"code":3079,"language":12,"meta":5,"style":5},"apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: web-app\nspec:\n  replicas: 1\n  ...\n",[3081],{"type":39,"tag":660,"props":3082,"children":3083},{"__ignoreMap":5},[3084,3100,3116,3127,3143,3154,3171],{"type":39,"tag":664,"props":3085,"children":3086},{"class":666,"line":667},[3087,3091,3095],{"type":39,"tag":664,"props":3088,"children":3089},{"style":2821},[3090],{"type":44,"value":2824},{"type":39,"tag":664,"props":3092,"children":3093},{"style":708},[3094],{"type":44,"value":2829},{"type":39,"tag":664,"props":3096,"children":3097},{"style":677},[3098],{"type":44,"value":3099}," apps/v1\n",{"type":39,"tag":664,"props":3101,"children":3102},{"class":666,"line":504},[3103,3107,3111],{"type":39,"tag":664,"props":3104,"children":3105},{"style":2821},[3106],{"type":44,"value":2842},{"type":39,"tag":664,"props":3108,"children":3109},{"style":708},[3110],{"type":44,"value":2829},{"type":39,"tag":664,"props":3112,"children":3113},{"style":677},[3114],{"type":44,"value":3115}," Deployment\n",{"type":39,"tag":664,"props":3117,"children":3118},{"class":666,"line":509},[3119,3123],{"type":39,"tag":664,"props":3120,"children":3121},{"style":2821},[3122],{"type":44,"value":2859},{"type":39,"tag":664,"props":3124,"children":3125},{"style":708},[3126],{"type":44,"value":1778},{"type":39,"tag":664,"props":3128,"children":3129},{"class":666,"line":958},[3130,3134,3138],{"type":39,"tag":664,"props":3131,"children":3132},{"style":2821},[3133],{"type":44,"value":2871},{"type":39,"tag":664,"props":3135,"children":3136},{"style":708},[3137],{"type":44,"value":2829},{"type":39,"tag":664,"props":3139,"children":3140},{"style":677},[3141],{"type":44,"value":3142}," web-app\n",{"type":39,"tag":664,"props":3144,"children":3145},{"class":666,"line":1090},[3146,3150],{"type":39,"tag":664,"props":3147,"children":3148},{"style":2821},[3149],{"type":44,"value":2905},{"type":39,"tag":664,"props":3151,"children":3152},{"style":708},[3153],{"type":44,"value":1778},{"type":39,"tag":664,"props":3155,"children":3156},{"class":666,"line":1099},[3157,3162,3166],{"type":39,"tag":664,"props":3158,"children":3159},{"style":2821},[3160],{"type":44,"value":3161},"  replicas",{"type":39,"tag":664,"props":3163,"children":3164},{"style":708},[3165],{"type":44,"value":2829},{"type":39,"tag":664,"props":3167,"children":3168},{"style":1821},[3169],{"type":44,"value":3170}," 1\n",{"type":39,"tag":664,"props":3172,"children":3173},{"class":666,"line":1108},[3174],{"type":39,"tag":664,"props":3175,"children":3176},{"style":1821},[3177],{"type":44,"value":3178},"  ...\n",{"type":39,"tag":653,"props":3180,"children":3182},{"className":655,"code":3181,"language":657,"meta":5,"style":5},"local$ kubectl -n default apply -f web-app-deployment.yml\n",[3183],{"type":39,"tag":660,"props":3184,"children":3185},{"__ignoreMap":5},[3186],{"type":39,"tag":664,"props":3187,"children":3188},{"class":666,"line":667},[3189,3193,3197,3201,3205,3209,3213],{"type":39,"tag":664,"props":3190,"children":3191},{"style":671},[3192],{"type":44,"value":1470},{"type":39,"tag":664,"props":3194,"children":3195},{"style":677},[3196],{"type":44,"value":2220},{"type":39,"tag":664,"props":3198,"children":3199},{"style":677},[3200],{"type":44,"value":2962},{"type":39,"tag":664,"props":3202,"children":3203},{"style":677},[3204],{"type":44,"value":1981},{"type":39,"tag":664,"props":3206,"children":3207},{"style":677},[3208],{"type":44,"value":2628},{"type":39,"tag":664,"props":3210,"children":3211},{"style":677},[3212],{"type":44,"value":2633},{"type":39,"tag":664,"props":3214,"children":3215},{"style":677},[3216],{"type":44,"value":3217}," web-app-deployment.yml\n",{"type":39,"tag":40,"props":3219,"children":3220},{},[3221],{"type":44,"value":3222},"Congratulations! You now have a fully functional Kubernetes cluster on Suble.io with external connectivity.",{"type":39,"tag":1296,"props":3224,"children":3225},{},[3226],{"type":44,"value":1300},{"title":5,"searchDepth":504,"depth":504,"links":3228},[3229,3230,3231,3232,3240,3241,3242],{"id":551,"depth":504,"text":554},{"id":1456,"depth":504,"text":1459},{"id":1534,"depth":504,"text":1537},{"id":1583,"depth":504,"text":1586,"children":3233},[3234,3235,3236,3237,3238,3239],{"id":1589,"depth":509,"text":1592},{"id":1759,"depth":509,"text":1762},{"id":1837,"depth":509,"text":1840},{"id":1921,"depth":509,"text":1924},{"id":2072,"depth":509,"text":2075},{"id":2228,"depth":509,"text":2231},{"id":2432,"depth":504,"text":2435},{"id":2644,"depth":504,"text":2647},{"id":2760,"depth":504,"text":2763},"content:3.blog:1.kubernetes.md","3.blog/1.kubernetes.md","3.blog/1.kubernetes",1775471120162]