Best Practices en Best Practices voor het uitvoeren van containers en Kubernetes in productieomgevingen

Best Practices en Best Practices voor het uitvoeren van containers en Kubernetes in productieomgevingen
Het ecosysteem van containerisatietechnologie evolueert en verandert snel, waardoor er op dit gebied een gebrek is aan goede werkpraktijken. Kubernetes en containers worden echter steeds vaker ingezet, zowel voor het moderniseren van legacy-applicaties als voor het ontwikkelen van moderne cloud-applicaties. 

Team Kubernetes aaS van Mail.ru verzamelde voorspellingen, advies en best practices voor marktleiders van Gartner, 451 Research, StacxRoх en anderen. Ze zullen de inzet van containers in productieomgevingen mogelijk maken en versnellen.

Hoe u weet of uw bedrijf klaar is om containers in een productieomgeving te implementeren

Volgens GartnerIn 2022 zal meer dan 75% van de organisaties gecontaineriseerde applicaties in productie gebruiken. Dit is aanzienlijk meer dan momenteel, wanneer minder dan 30% van de bedrijven dergelijke toepassingen gebruikt. 

Volgens 451 OnderzoekDe verwachte markt voor containertechnologietoepassingen in 2022 zal 4,3 miljard dollar bedragen, wat meer dan het dubbele is van het verwachte bedrag in 2019, met een marktgroei van 30%.

В Portworx en Aqua Security onderzoek 87% van de respondenten zei dat ze momenteel containertechnologieën gebruiken. Ter vergelijking: in 2017 waren er 55% van dergelijke respondenten. 

Ondanks de groeiende interesse en adoptie van containers vereist het in productie nemen ervan een leercurve vanwege technologische onvolwassenheid en gebrek aan knowhow. Organisaties moeten realistisch zijn over bedrijfsprocessen waarvoor applicatiecontainerisatie vereist is. IT-leiders moeten evalueren of ze over de vaardigheden beschikken om vooruit te komen met de noodzaak om snel te leren. 

Gartner-experts We denken dat de vragen in de onderstaande afbeelding u zullen helpen bepalen of u klaar bent om containers in productie te implementeren:

Best Practices en Best Practices voor het uitvoeren van containers en Kubernetes in productieomgevingen

De meest voorkomende fouten bij het gebruik van containers in de productie

Organisaties onderschatten vaak de inspanning die nodig is om containers in productie te laten werken. Gartner ontdekte Enkele veel voorkomende fouten in klantscenario's bij het gebruik van containers in productieomgevingen:

Best Practices en Best Practices voor het uitvoeren van containers en Kubernetes in productieomgevingen

Hoe containers veilig te houden

Beveiliging kan niet “later” worden geregeld. Het moet in het DevOps-proces worden ingebouwd en daarom bestaat er zelfs een speciale term: DevSecOps. Organisaties moeten plannen bescherming van uw containeromgeving gedurende de gehele ontwikkelingslevenscyclus, inclusief het bouw- en ontwikkelingsproces, de implementatie en lancering van de applicatie.

Aanbevelingen van Gartner

  1. Integreer het proces van het scannen van applicatie-images op kwetsbaarheden in uw continue integratie/continue levering (CI/CD) pijplijn. Applicaties worden gescand tijdens de softwareontwikkelings- en lanceringsfase. Benadruk de noodzaak om open source-componenten, bibliotheken en raamwerken te scannen en te identificeren. Ontwikkelaars die oude, kwetsbare versies gebruiken, zijn een van de belangrijkste oorzaken van containerkwetsbaarheden.
  2. Verbeter uw configuratie met Center for Internet Security-tests (CIS), die beschikbaar zijn voor zowel Docker als Kubernetes.
  3. Zorg ervoor dat u toegangscontroles afdwingt, zorgt voor scheiding van taken en een beleid voor geheimbeheer implementeert. Gevoelige informatie, zoals Secure Sockets Layer (SSL)-sleutels of databasereferenties, wordt gecodeerd door de orkestrator of beheerservices van derden en tijdens runtime zichtbaar gemaakt
  4. Vermijd verhoogde containers door beveiligingsbeleid te beheren om potentiële inbreukrisico's te verminderen.
  5. Gebruik beveiligingstools die whitelisting, gedragsmonitoring en detectie van afwijkingen bieden om kwaadaardige activiteiten te voorkomen.

Aanbevelingen van StacxRox:

  1. Maak gebruik van de ingebouwde mogelijkheden van Kubernetes. Toegang instellen voor gebruikers die rollen gebruiken. Zorg ervoor dat u geen onnodige machtigingen verleent aan individuele entiteiten, ook al kan het enige tijd duren voordat u nadenkt over de minimaal vereiste machtigingen. Het kan verleidelijk zijn om de clusterbeheerder brede bevoegdheden te geven, omdat dit in eerste instantie tijd bespaart. Elk compromis of elke fout in het account kan later echter tot verwoestende gevolgen leiden. 
  2. Vermijd dubbele toegangsrechten. Het kan soms handig zijn om verschillende rollen te laten overlappen, maar dit kan leiden tot operationele problemen en ook tot blinde vlekken bij het verwijderen van rechten. Het is ook belangrijk om ongebruikte en inactieve rollen te verwijderen.
  3. Stel netwerkbeleid in: isoleer modules om de toegang daartoe te beperken; sta expliciet internettoegang toe voor die modules die dit nodig hebben met behulp van tags; Laat expliciet communicatie toe tussen de modules die met elkaar moeten communiceren. 

Hoe u de monitoring van containers en diensten daarin organiseert

Beveiliging en monitoring - belangrijkste problemen van bedrijven bij het implementeren van Kubernetes-clusters. Ontwikkelaars zijn altijd meer gefocust op de kenmerken van de applicaties die ze ontwikkelen dan op de aspecten ervan het monitoren van deze aanvragen

Aanbevelingen van Gartner:

  1. Probeer de status van containers of services daarin te monitoren in combinatie met het monitoren van hostsystemen.
  2. Zoek naar leveranciers en tools met diepe integratie in containerorkestratie, vooral Kubernetes.
  3. Kies tools die gedetailleerde logboekregistratie, automatische servicedetectie en realtime aanbevelingen bieden met behulp van analyses en/of machine learning.

De SolarWinds-blog adviseert:

  1. Gebruik tools om automatisch containerstatistieken te ontdekken en bij te houden, waarbij prestatiestatistieken zoals CPU, geheugen en uptime met elkaar in verband worden gebracht.
  2. Zorg voor een optimale capaciteitsplanning door de uitputtingsdata van de capaciteit te voorspellen op basis van containermonitoringstatistieken.
  3. Bewaak gecontaineriseerde applicaties op beschikbaarheid en prestaties, handig voor zowel capaciteitsplanning als het oplossen van prestatieproblemen.
  4. Automatiseer workflows door beheer- en schaalondersteuning te bieden voor containers en hun hostingomgevingen.
  5. Automatiseer toegangscontrole om uw gebruikersbestand te monitoren, verouderde accounts en gastaccounts uit te schakelen en onnodige rechten te verwijderen.
  6. Zorg ervoor dat uw toolset deze containers en applicaties in meerdere omgevingen (cloud, on-premise of hybride) kan monitoren om de prestaties van infrastructuur, netwerk, systemen en applicaties te visualiseren en te benchmarken.

Hoe u gegevens opslaat en de veiligheid ervan waarborgt

Met de toename van stateful worker-containers moeten klanten rekening houden met de aanwezigheid van gegevens buiten de host, evenals met de noodzaak om die gegevens te beschermen. 

Volgens Portworx en Aqua Security onderzoekstaat gegevensbeveiliging bovenaan de lijst van beveiligingsproblemen die door de meerderheid van de respondenten (61%) worden genoemd. 

Gegevensversleuteling is de belangrijkste beveiligingsstrategie (64%), maar de respondenten maken ook gebruik van runtimemonitoring

(49%), registers scannen op kwetsbaarheden (49%), scannen op kwetsbaarheden in CI/CD-pijplijnen (49%) en afwijkingen blokkeren via runtime-beveiliging (48%).

Aanbevelingen van Gartner:

  1. Kies opslagoplossingen die gebaseerd zijn op principes microservice-architectuur. Het is beter om je te concentreren op diensten die voldoen aan de vereisten voor gegevensopslag voor containerdiensten, die hardware-onafhankelijk zijn, API-gestuurd zijn, een gedistribueerde architectuur hebben, lokale implementatie en implementatie in de publieke cloud ondersteunen.
  2. Vermijd eigen plug-ins en interfaces. Kies leveranciers die Kubernetes-integratie bieden en standaardinterfaces ondersteunen, zoals CSI (Container Storage Interfaces).

Hoe je met netwerken kunt werken

Het traditionele bedrijfsnetwerkmodel, waarbij IT-teams voor elk project genetwerkte ontwikkel-, test-, kwaliteitsborgings- en productieomgevingen creëren, sluit niet altijd goed aan bij de continue ontwikkelingsworkflow. Bovendien omvatten containernetwerken meerdere lagen.

В blog Magalix verzameld regels op hoog niveau waaraan de implementatie van een clusternetwerkoplossing moet voldoen:

  1. Pods die op hetzelfde knooppunt zijn gepland, moeten met andere pods kunnen communiceren zonder NAT (Network Address Translation) te gebruiken.
  2. Alle systeemdaemons (achtergrondprocessen zoals kubelet) die op een bepaald knooppunt worden uitgevoerd, kunnen communiceren met pods die op hetzelfde knooppunt worden uitgevoerd.
  3. Peulen gebruiken hostnetwerk, moet kunnen communiceren met alle andere pods op alle andere knooppunten zonder NAT te gebruiken. Houd er rekening mee dat hostnetwerken alleen worden ondersteund op Linux-hosts.

Netwerkoplossingen moeten nauw worden geïntegreerd met Kubernetes-primitieven en -beleid. IT-leiders moeten streven naar een hoge mate van netwerkautomatisering en ontwikkelaars voorzien van de juiste tools en voldoende flexibiliteit.

Aanbevelingen van Gartner:

  1. Ontdek of uw CaaS (container as a service) of uw SDN (Software Defined Network) Kubernetes-netwerken ondersteunt. Als dit niet het geval is of als de ondersteuning onvoldoende is, gebruik dan de CNI-netwerkinterface (Container Network Interface) voor uw containers, die de noodzakelijke functionaliteit en beleid ondersteunt.
  2. Zorg ervoor dat uw CaaS of PaaS (platform as a service) het maken van ingangscontrollers en/of load balancers ondersteunt die binnenkomend verkeer over clusterknooppunten verdelen. Als dit geen optie is, kunt u proberen proxy's of servicemeshes van derden te gebruiken.
  3. Train uw netwerkingenieurs op het gebied van Linux-netwerken en netwerkautomatiseringstools om de vaardigheidskloof te verkleinen en de flexibiliteit te vergroten.

Hoe u de levenscyclus van een applicatie beheert

Voor geautomatiseerde en naadloze levering van applicaties moet u containerorkestratie aanvullen met andere automatiseringstools, zoals Infrastructure as Code (IaC)-producten. Deze omvatten Chef, Puppet, Ansible en Terraform. 

Ook automatiseringstools voor het bouwen en uitrollen van applicaties zijn nodig (zie “Magic Quadrant voor orkestratie van applicatiereleases"). Containers bieden ook uitbreidbaarheidsmogelijkheden die vergelijkbaar zijn met de mogelijkheden die beschikbaar zijn bij de implementatie van virtuele machines (VM's). Daarom moeten IT-leiders dit hebben Tools voor het beheer van de levenscyclus van containers.

Aanbevelingen van Gartner:

  1. Stel standaarden in voor basiscontainerimages op basis van grootte, licenties en flexibiliteit voor ontwikkelaars om componenten toe te voegen.
  2. Gebruik configuratiebeheersystemen om de levenscyclus van containers te beheren die de configuratie op basis van basisimages in openbare of privéopslagplaatsen baseren.
  3. Integreer uw CaaS-platform met automatiseringstools om uw volledige applicatieworkflow te automatiseren.

Hoe u containers beheert met orkestrators

De kernfunctionaliteit voor het inzetten van containers wordt geleverd op de orkestratie- en planningslagen. Tijdens de planning worden containers op de meest optimale hosts in het cluster geplaatst, zoals bepaald door de vereisten van de orkestratielaag. 

Kubernetes is de de facto standaard voor containerorkestratie geworden met een actieve community en wordt ondersteund door de meeste toonaangevende commerciële leveranciers. 

Aanbevelingen van Gartner:

  1. Definieer basisvereisten voor beveiligingscontroles, monitoring, beleidsbeheer, gegevenspersistentie, netwerken en beheer van de levenscyclus van containers.
  2. Op basis van deze vereisten selecteert u de tool die het beste bij uw vereisten en gebruiksscenario's past.
  3. Maak gebruik van onderzoek van Gartner (zie "Hoe u een Kubernetes-implementatiemodel kiest") om de voor- en nadelen van verschillende Kubernetes-implementatiemodellen te begrijpen en de beste voor uw toepassing te kiezen.
  4. Selecteer een provider die hybride orkestratie kan bieden voor werkcontainers in meerdere omgevingen met strakke backend-integratie, gemeenschappelijke beheerplannen en consistente prijsmodellen.

Hoe u de mogelijkheden van cloudproviders kunt gebruiken

Gartner gelooftdie interesse in het inzetten van containers op de publieke cloud IaaS groeit dankzij de beschikbaarheid van kant-en-klare CaaS-aanbiedingen, evenals de nauwe integratie van deze aanbiedingen met andere producten die worden aangeboden door cloudproviders.

IaaS-clouds bieden on-demand resourceverbruik, snelle schaalbaarheid en dienst beheer, waardoor de noodzaak van diepgaande kennis van de infrastructuur en het onderhoud ervan zal worden vermeden. De meeste cloudproviders bieden een containerbeheerservice, en sommige bieden meerdere orkestratieopties. 

De belangrijkste cloudbeheerde serviceproviders worden in de tabel weergegeven: 

Cloudprovider
Dienst Type
Product/dienst

Alibaba
Native cloudservice
Alibaba Cloud Container Service, Alibaba Cloud Container Service voor Kubernetes

Amazon Web Services (AWS)
Native cloudservice
Amazon Elastic Container Services (ECS), Amazon ECS voor Kubernetes (EKS), AWS Fargate

Gigantische zwerm
MSP
Giant Swarm beheerde Kubernetes-infrastructuur

Kopen Google Reviews
Native cloudservice
Google Container Engine (GKE)

IBM
Native cloudservice
IBM Cloud Kubernetes-service

Microsoft
Native cloudservice
Azure Kubernetes-service, Azure Service Fabric

Oracle
Native cloudservice
OCI Container Engine voor Kubernetes

Platform9
MSP
Beheerde Kubernetes

Red Hat
Gehoste service
OpenShift toegewijd en online

VMware
Gehoste service
Cloud PKS (bèta)

Mail.ru cloudoplossingen*
Native cloudservice
Mail.ru-cloudcontainers

* We zullen het niet verbergen, we hebben onszelf hier toegevoegd tijdens de vertaling :)

Publieke cloudproviders voegen ook nieuwe mogelijkheden toe en brengen producten op locatie uit. In de nabije toekomst zullen cloudproviders ondersteuning ontwikkelen voor hybride clouds en multi-cloudomgevingen. 

Gartner-aanbevelingen:

  1. Evalueer objectief het vermogen van uw organisatie om de juiste tools te implementeren en te beheren, en overweeg alternatieve cloudcontainerbeheerservices.
  2. Kies software zorgvuldig, gebruik waar mogelijk open source.
  3. Kies providers met gemeenschappelijke besturingsmodellen in hybride omgevingen die centraal beheer van federatieve clusters bieden, maar ook providers die het eenvoudig maken om IaaS zelf te hosten.

Enkele tips voor het kiezen van een Kubernetes aaS-provider uit het Replex-blog:

  1. Het is de moeite waard om te zoeken naar distributies die kant-en-klare hoge beschikbaarheid ondersteunen. Dit omvat ondersteuning voor meerdere belangrijke architecturen, zeer beschikbare etcd-componenten en back-up en herstel.
  2. Om mobiliteit in uw Kubernetes-omgevingen te garanderen, kunt u het beste cloudproviders kiezen die een breed scala aan implementatiemodellen ondersteunen, van on-premises tot hybride tot multi-cloud. 
  3. Het aanbod van providers moet ook worden geëvalueerd op basis van het gemak van installatie, installatie en clustercreatie, evenals updates, monitoring en probleemoplossing. De basisvereiste is het ondersteunen van volledig geautomatiseerde clusterupdates zonder downtime. De oplossing die u kiest, moet u ook de mogelijkheid bieden updates handmatig uit te voeren. 
  4. Identiteits- en toegangsbeheer is belangrijk vanuit zowel een beveiligings- als een governanceperspectief. Zorg ervoor dat de Kubernetes-distributie die u kiest de integratie ondersteunt met de authenticatie- en autorisatietools die u intern gebruikt. RBAC en fijnmazige toegangscontrole zijn ook belangrijke functiesets.
  5. De distributie die u kiest, moet een native, softwaregedefinieerde netwerkoplossing hebben die een breed scala aan verschillende applicatie- of infrastructuurvereisten dekt, of een van de populaire CNI-gebaseerde netwerkimplementaties ondersteunen, waaronder Flannel, Calico, kube-router of OVN.

De introductie van containers in de productie wordt de belangrijkste richting, zoals blijkt uit de resultaten van een onderzoek Gartner-sessies over infrastructuur, operaties en cloudstrategieën (IOCS) in december 2018:

Best Practices en Best Practices voor het uitvoeren van containers en Kubernetes in productieomgevingen
Zoals u kunt zien, gebruikt 27% van de respondenten al containers in hun werk, en 63% is van plan dit te gaan doen.

В Portworx en Aqua Security onderzoek 24% van de respondenten gaf aan meer dan een half miljoen dollar per jaar te investeren in containertechnologieën, en 17% van de respondenten gaf er meer dan een miljoen dollar per jaar aan uit. 

Artikel opgesteld door het cloudplatformteam Mail.ru Cloud-oplossingen.

Wat nog meer te lezen over het onderwerp:

  1. DevOps Best Practices: DORA-rapport.
  2. Kubernetes in de geest van piraterij met een sjabloon voor implementatie.
  3. 25 Handige tools voor de implementatie en adoptie van Kubernetes.

Bron: www.habr.com

Voeg een reactie