
Het ecosysteem van containertechnologieën ontwikkelt zich snel en verandert, waardoor er een gebrek is aan goede werkpraktijken in dit gebied. Desondanks worden Kubernetes en containers steeds vaker gebruikt - zowel voor de modernisering van oude applicaties als voor de ontwikkeling van moderne cloudapplicaties.
Opdracht heeft prognoses, tips en beste praktijken verzameld voor marktleiders van Gartner, 451 Research, StacxRoх en anderen. Deze zullen helpen om de implementatie van containers in productieomgevingen te waarborgen en te versnellen.
Hoe te begrijpen of uw bedrijf klaar is om containers in een productieomgeving te implementeren
, zal meer dan 75% van de organisaties in 2022 containerized applicaties in productie gebruiken. Dit is aanzienlijk meer dan nu, waar minder dan 30% van de bedrijven dergelijke applicaties gebruikt.
Volgens , is de verwachte markt voor het toepassen van containertechnologieën in 2022 $ 4,3 miljard. Dit is meer dan het dubbele van de bedragen die in 2019 werden voorspeld, met een marktgroei van 30%.
In 87% van de respondenten gaf aan momenteel gebruik te maken van containertechnologieën. Ter vergelijking: in 2017 waren dit er 55%.
Ondanks de toenemende belangstelling en groei van de implementatie van containers, vereist de uitrol in productie training vanwege technologische onvolwassenheid en gebrek aan knowhow. Organisaties moeten realistisch kijken naar de bedrijfsprocessen die containerisatie van applicaties vereisen. IT-leiders moeten beoordelen of zij over de vaardigheden beschikken die nodig zijn om vooruit te gaan, met inachtneming van de noodzaak van snelle training.
zijn van mening dat de vragen in de onderstaande afbeelding helpen te begrijpen of u klaar bent om containers in productie te implementeren:

De meest voorkomende fouten bij het toepassen van containers in productie
Organisaties onderschatten vaak de inspanningen die nodig zijn voor het operationeel maken van containers in productie. enkele veelvoorkomende fouten in klantscenario's bij het toepassen van containers in productieomgevingen:

Hoe de veiligheid van containers te waarborgen
Beveiliging moet niet als een 'later' kwestie worden behandeld. Het moet ingebouwd zijn in het DevOps-proces, wat heeft geleid tot de term DevSecOps. Organisaties moeten plannen voor gedurende de hele levenscyclus van de ontwikkeling, inclusief het bouw-, ontwikkelings-, implementatie- en uitvoeringsproces van de applicatie.
:
- Integreer het proces voor het scannen van applicatiebeelden om kwetsbaarheden te identificeren in de continue integratie/continue levering (CI/CD) pipeline. Applicaties worden gescand tijdens de bouw- en software-implementatiefases. Benadruk de noodzaak van scannen en identificatie van open source-componenten, bibliotheken en frameworks. Het gebruik van verouderde kwetsbare versies door ontwikkelaars is een van de belangrijkste oorzaken van kwetsbaarheden in containers.
- Verbeter de configuratie met behulp van tests van het Center for Internet Security (), die beschikbaar zijn voor zowel Docker als Kubernetes.
- Zorg ervoor dat u toegangscontrole toepast, verantwoordelijkheden scheidt en een beleid voor geheimenbeheer implementeert. Vertrouwelijke informatie, zoals Secure Sockets Layer (SSL)-sleutels of database-credentials, wordt versleuteld door de orchestrator of externe beheerdiensten en beschikbaar gesteld tijdens de uitvoering.
- Vermijd containers met verhoogde bevoegdheden door beveiligingsbeleid te beheren, dit vermindert potentiële risico's op hacking.
- Gebruik beveiligingstools die white-listing, gedragsmonitoring en anomaliedetectie bieden om kwaadaardige activiteiten te voorkomen.
:
- Gebruik de ingebouwde mogelijkheden van Kubernetes. Stel toegang voor gebruikers in met behulp van rollen. Zorg ervoor dat u geen onnodige machtigingen aan individuele entiteiten verleent, ook al kan het enige tijd duren om de minimaal vereiste machtigingen na te denken. Het kan verleidelijk zijn om de clusterbeheerder brede bevoegdheden te geven, omdat het tijd bespaart in de startfase. Echter, elke compromis of fout in het account kan later verwoestende gevolgen hebben.
- Vermijd duplicatie van toegangsrechten. Het kan soms nuttig zijn om verschillende rollen te laten overlappen, maar dit kan problemen veroorzaken bij het beheer en 'dode zones' creëren bij het verwijderen van rechten. Bovendien is het belangrijk om ongebruikte en inactieve rollen te verwijderen.
- Stel netwerkbeleid in: isoleer modules om de toegang te beperken; geef expliciet toegang tot internet aan de modules die dit nodig hebben, met behulp van labels; geef expliciet toestemming voor communicatie tussen modules die met elkaar moeten communiceren.
Hoe monitoring van containers en de services daarin te organiseren
Beveiliging en monitoring — bij de implementatie van Kubernetes-clusters. Ontwikkelaars zijn vaak meer gefocust op de functies van de applicaties die ze ontwikkelen dan op de aspecten .
:
- Probeer de toestand van containers of de services daarin te monitoren in combinatie met de monitoring van de hostsystemen.
- Geef de voorkeur aan leveranciers en tools met diepe integratie in containerorkestratie, vooral Kubernetes.
- Kies tools die gedetailleerde logging, automatische detectie van services en realtime aanbevelingen bieden met behulp van analytics en/of machine learning.
:
- Tools te gebruiken voor automatische detectie en het volgen van metrieken van containers, correlatie van prestatiestatistieken zoals CPU, geheugen en uptime.
- Zorg voor optimale capaciteitsplanning door de tijd tot capaciteitsuitputting te voorspellen op basis van de monitoringgegevens van containers.
- Organiseer de monitoring van applicaties die in containers zijn geplaatst op basis van beschikbaarheid en prestaties, wat nuttig is voor zowel capaciteitsplanning als het oplossen van prestatieproblemen.
- Automatiseer werkprocessen door ondersteuning te bieden voor het beheer en de schaling van containers en hun implementatie-omgevingen.
- Automatiseer toegangscontrole om de gebruikersbasis te volgen, verouderde en gastaccounts uit te schakelen en onnodige privileges te verwijderen.
- Zorg ervoor dat uw gereedschapsset deze containers en toepassingen in verschillende omgevingen (cloud, lokaal of hybride) kan volgen om de prestaties in infrastructuur, netwerk, systemen en toepassingen te visualiseren en te vergelijken.
Hoe gegevens op te slaan en hun beveiliging te waarborgen
Met het toenemende aantal stateful containers moeten klanten rekening houden met het opslaan van gegevens buiten de host, evenals met de noodzaak om deze gegevens te beschermen.
Volgens , staat gegevensbeveiliging bovenaan de lijst van beveiligingsproblemen die door de meeste respondenten (61%) worden genoemd.
Gegevensencryptie is de belangrijkste beveiligingsstrategie (64%), echter maken respondenten ook gebruik van runtime monitoring
(49%), kwetsbaarheidsscans in registries (49%), kwetsbaarheidsscans in CI/CD-pijplijnen (49%) en anomaliedetectie via runtime-beveiliging (48%).
:
- Kies opslagoplossingen die zijn gebouwd op de principes van . Kies bij voorkeur oplossingen die voldoen aan de opslagvereisten voor containerservices, hardware-onafhankelijk zijn, door API worden beheerd, een gedistribueerde architectuur hebben, lokale implementatie en implementatie in de publieke cloud ondersteunen.
- Vermijd proprietaire plugins en interfaces. Kies fabrikanten die integratie met Kubernetes bieden en standaardinterfaces ondersteunen, zoals CSI (Container Storage Interfaces).
Hoe te werken met netwerken
Het traditionele model van bedrijfsnetwerken, waarbij IT-professionals netwerkomgevingen voor ontwikkeling, testen, kwaliteitsborging en productie voor elk project opzetten, sluit niet altijd goed aan bij de workflow van continue ontwikkeling. Bovendien dekken container netwerken meerdere niveaus.
In hoogwaardige richtlijnen verzameld waaraan de implementatie van een cluster-netwerkoplossing moet voldoen:
- Pods die op dezelfde node zijn gepland, moeten in staat zijn om gegevens uit te wisselen met andere modules zonder gebruik te maken van NAT (Network Address Translation).
- Alle systeemdemons (achtergrondprocessen, zoals kubelet) die op een bepaalde knoop draaien, kunnen communiceren met pods die op dezelfde knoop draaien.
- Pods die gebruik maken van moeten in staat zijn om met alle andere pods op alle andere knopen te communiceren zonder NAT te gebruiken. Houd er rekening mee dat het hostnetwerk alleen wordt ondersteund op Linux-hosts.
Netwerkoplossingen moeten nauw geïntegreerd zijn met de primitieve en beleidsstructuren van Kubernetes. IT-leiders moeten streven naar een hoge mate van netwerkenautomatisering, en ontwikkelaars de juiste tools en voldoende flexibiliteit bieden.
:
- Bepaal of uw CaaS (container als service) of uw SDN (Software Defined Network) netwerken van Kubernetes ondersteunt. Als dat niet het geval is of de ondersteuning onvoldoende is, gebruik dan een netwerkinterface CNI (Container Network Interface) voor uw containers die de benodigde functionaliteit en beleidsstructuren ondersteunt.
- Zorg ervoor dat uw CaaS of PaaS (platform als service) de creatie van inkomende controllers en/of load balancers ondersteunt die het inkomende verkeer tussen de knopen van het cluster verdelen. Als deze mogelijkheid er niet is, overweeg dan het gebruik van externe proxy's of service mesh-mechanismen.
- Opleiding voor uw netingenieurs in Linux-netwerken en netwerkautomatiseringstools is noodzakelijk om de vaardigheidskloof te verkleinen en flexibiliteit te vergroten.
Hoe het levenscyclusbeheer van applicaties te beheren
Voor geautomatiseerde en ononderbroken levering van applicaties moeten containerorkestratie worden aangevuld met andere automatiseringstools, zoals Infrastructure as Code (IaC)-producten. Dit omvat Chef, Puppet, Ansible en Terraform.
Ook zijn er automatiseringstools nodig voor de bouw en uitrol van applicaties (zie ""). Containers bieden ook uitbreidingsmogelijkheden die vergelijkbaar zijn met de mogelijkheden die beschikbaar waren bij de implementatie van virtuele machines (VM's). Daarom moeten IT-leiders over .
:
- Stel normen voor basiscontainerimages vast met betrekking tot grootte, licentiëring en flexibiliteit voor ontwikkelaars om componenten toe te voegen.
- Gebruik configuratiebeheersystemen om de levenscyclus van containers te beheren die configuraties opslaan in lagen op basis van basisafbeeldingen, die zich in publieke of private repositories bevinden.
- Integreer het CaaS-platform met automatiseringtools om de volledige applicatieworkflow te automatiseren.
Hoe containers te beheren met orkestrators
De belangrijkste functionaliteiten voor het implementeren van containers worden geleverd op de niveaus van orkestratie en planning. Tijdens de planning worden containers geplaatst op de meest optimale hosts in het cluster, zoals vereist door de orkestratieniveaus.
Kubernetes is de facto de standaard geworden voor containerorkestratie met een actief ecosysteem, ondersteund door de meeste toonaangevende commerciële aanbieders.
:
- Bepaal de basisvereisten voor beveiligingsbeheer, monitoring, beleidsbeheer, gegevensopslag, netwerkbeheer en de levenscyclus van containers.
- Kies op basis van deze vereisten het hulpmiddel dat het beste aansluit bij uw behoeften en gebruiksscenario's.
- Gebruik Gartner-onderzoek (zie ""), om de voor- en nadelen van verschillende implementatiemodellen van Kubernetes te begrijpen en het meest geschikte voor uw taak te kiezen.
- Kies een leverancier die hybride orkestratie voor werkcontainers in meerdere omgevingen kan bieden, met nauwe integratie met backends, gedeelde beheerschema's en consistente prijsmodellen.
Hoe gebruik te maken van de mogelijkheden van cloudproviders
, dat de belangstelling voor het implementeren van containers in publieke IaaS-clouds toeneemt door de beschikbaarheid van kant-en-klare CaaS-aanbiedingen, evenals de nauwe integratie van deze aanbiedingen met andere producten die door cloudproviders worden aangeboden.
IaaS-clouds bieden vraaggestuurde hulpbronconsumptie, snelle schaalbaarheid en , wat helpt om de noodzaak van diepgaande kennis van infrastructuur en het onderhoud ervan te vermijden. De meeste cloudproviders bieden containerbeheer aan, en sommige bieden verschillende orkestratie-opties.
De belangrijkste cloudleveranciers van beheerde diensten zijn in de tabel weergegeven:
Cloudprovider
Type service
Product/dienst
Alibaba
Native Cloud Service
Alibaba Cloud Container Service, Alibaba Cloud Container Service for Kubernetes
Amazon Web Services (AWS)
Native Cloud Service
Amazon Elastic Container Services (ECS), Amazon ECS for Kubernetes (EKS), AWS Fargate
Giant Swarm
MSP
Giant Swarm Managed Kubernetes Infrastructure
Google
Native Cloud Service
Google Container Engine (GKE)
IBM
Native Cloud Service
IBM Cloud Kubernetes Service
Microsoft
Native Cloud Service
Azure Kubernetes Service, Azure Service Fabric
Oracle
Native Cloud Service
OCI Container Engine for Kubernetes
Platform9
MSP
Managed Kubernetes
Red Hat
Hosted Service
OpenShift Dedicated & Online
VMware
Hosted Service
Cloud PKS (Beta)
Mail.ru Cloud Solutions*
Native Cloud Service
Mail.ru Cloud Containers
* Laten we eerlijk zijn, we hebben onszelf hier ook toegevoegd tijdens de vertaling 🙂
Leveranciers van publieke clouds voegen ook nieuwe mogelijkheden toe en lanceren lokale producten. In de nabije toekomst zullen cloudleveranciers de ondersteuning voor hybride clouds en multi-cloudomgevingen verder ontwikkelen.
:
- Evalueer objectief de mogelijkheden van uw organisatie om de juiste tools te implementeren en beheren, en overweeg alternatieve services voor het beheer van cloudcontainers.
- Kies software zorgvuldig en gebruik open source waar mogelijk.
- Kies leveranciers met uniforme operationele modellen in hybride omgevingen, die het beheer van gecombineerde clusters vanuit één paneel aanbieden, en ook leveranciers die het gebruik van IaaS eenvoudiger maken.
:
- Zoek naar distributies die van nature hoge beschikbaarheid ondersteunen. Dit omvat ondersteuning voor meerdere belangrijke architecturen, hoog beschikbare etcd-componenten en ook back-up- en herstelopties.
- Om de mobiliteit van Kubernetes-omgevingen te verzekeren, is het beter om cloudleveranciers te kiezen die een breed scala aan implementatiemodellen ondersteunen: van on-premises tot hybride en multi-cloud.
- De aanbiedingen van leveranciers moeten ook worden beoordeeld op basis van de eenvoud van configuratie, installatie en het opzetten van clusters, evenals updates, monitoring en probleemoplossing. Een basisvereiste is de ondersteuning voor volledig geautomatiseerde clusterupdates met nul downtime. De gekozen oplossing moet ook handmatige updates mogelijk maken.
- Identiteits- en toegangsbeheer is belangrijk, zowel vanuit veiligheids- als vanuit beheeroogpunt. Zorg ervoor dat de gekozen Kubernetes-distributie integratie ondersteunt met de authenticatie- en autorisatietools die binnen het bedrijf worden gebruikt. RBAC en gedetailleerde toegangscontrole zijn ook belangrijke functie-sets.
- De gekozen distributie moet ofwel een eigen netwerkoplossing hebben, die op software gebaseerd is en een breed scala aan vereisten dekt die door verschillende applicaties of infrastructuur worden gesteld, of ondersteuning bieden voor een van de populaire CNI-gebaseerde netwerken, zoals Flannel, Calico, kube-router of OVN.
De implementatie van containertechnologie in productie wordt een hoofdfocus, zoals blijkt uit de resultaten van een enquête uitgevoerd op over infrastructuur, operaties en cloudstrategieën (IOCS) in december 2018:

Zoals we zien, gebruikt 27% van de ondervraagden al containers in hun werk, en 63% is van plan dit te doen.
In 24% van de respondenten gaf aan meer dan een half miljoen dollar per jaar te investeren in containertechnologieën, terwijl 17% van de respondenten meer dan een miljoen dollar per jaar aan deze technologieën besteedt.
Dit artikel is voorbereid door het cloudplatformteam. .
Wat verder te lezen over dit onderwerp:
- .
- .
- .
Bron: habr.com
