Nostra exsecutio continua instruere in elit diam

Nos apud Verum Engineering processum ereximus ad continuam traditionem updates to servitoribus emptoris et hanc experientiam participare volumus.

Incipiendum est, systema online emptori elaboravimus et eam in nostro botro Kubernetes explicavimus. Nunc solutio nostra summus onus ad suggestum emptoris contulit, cuius processum continuum instruere plene automatice constituimus. Propter hoc tempus ad nundinas acceleravimus - traditio mutationum producti ambitus.

In hoc articulo loquemur de omnibus statibus instruere continui (CD) processus vel traditio updates ad suggestum emptoris:

  1. Quomodo hic processus incipit?
  2. synchronisation cum Git repositorium emptoris,
  3. conventus backend and frontend;
  4. latae applicationis instruere in ambitu experimenti;
  5. latae instruere ad Prod.

Particulas per viam ponemus partiamur.

Nostra exsecutio continua instruere in elit diam

1. Committitur CD

Continua instruere incipit cum elit mutationes impellentium ad emissionem rami nostri repositorii Git.

Applicatio nostra in architecturae microserviciis incurrit et omnia eius membra in uno reposito reponuntur. Propter hoc, omnia micromerita collecta et inaugurata sunt, etiam si una mutatur.

Opus per unum repositum pluribus de causis constituimus;

  • Otium evolutionis - applicatio est active evolutionis, ut simul cum toto codice operari potes.
  • Una CI/CD pipeline est quae in tuto ponit applicationem quasi unius systematis omnes probationes praetermittit et in environment productionis emptoris traditur.
  • confusionem in versionibus removemus - tabulam microservii versionum reponere non habemus et eius configurationem pro singulis microserviis in Helm scriptis describendum.

2. Synchronisatio cum repositorio Git codice fonte emptoris

Mutationes factae automatice synchronae sunt cum repositorio Git emptoris. Configuratur ibi applicatio conventus, quae post adaequationem rami emittitur, et continuationi instruere. Ambo processus oriuntur in ambitu eorum a Git repositorio.

Cum repositorio emptoris directe laborare non possumus quia ambitus nostros ad progressionem et probationem indigemus. Ad haec repositorio nostro Git utimur - congruenter cum Git reposito. Cum primum cursores elit in opportunitate rami repositorii mutat, GitLab has mutationes statim ad emptorem impellit.

Nostra exsecutio continua instruere in elit diam

Post haec ecclesiam facere debes. Constat pluribus gradibus: coetus retro et frontend, probatio et traditio ad productionem.

3. Concurrentes backend et frontend

Aedificium tergum et frontem sunt duo opera parallela quae in systemate GitLab Cursoris peraguntur. Eius conventus originalis figura in eodem reposito collocatur.

Tutorial pro scripto YAML scriptum ad aedificationem in GitLab.

GitLab Currens codicem e repositorio requisito sumit, eum cum applicatione Javae aedificandi iussu colligit et in registro Docker mittit. Hic tergum et frontem congregamus, imagines Docker obtinemus, quas in repositorio latere emptoris ponimus. Ad administrare Docker imaginibus utimur Gradle plugin.

Imaginum nostrorum versiones conformiter facimus cum versione emissione quae in Docker publici iuris erit. Nam lenis operationes varias compositiones fecimus;

1. Vasa inter ambitus experimenti et ambitus productionis non reaedificantur. Parametrizationes fecimus, ut idem continens operari posset omnibus fundis, variabilibus, ambitibus, officiis tam in ambitu quam in productione sine reaedificatione.

2. Ad applicationem per Helm update, versionem eius denotare debes. Exstruimus tergum, frontem ac applicationem - haec tria diversa sunt, ideo interest ut eadem versione applicationis ubique utatur. Ad hoc opus notitias ex Git historia utimur, quandoquidem nostri K8S glomerati schematis et applicationes in eodem Git repositorio sunt.

Applicatio versionis ex mandato exsecutionis consequitur
git describe --tags --abbrev=7.

4. Automatica instruere omnes mutationes in environment (UAT)

Proximus gradus in hac aedificandi scriptura est ut sponte botrum K8S renovaret. Hoc modo evenit ut tota applicatione constructa et artificia omnia ad Subcriptio Docker divulgentur. Post hoc probatio renovationis incipit.

Botrus update is coepi usura Galea Update. Si ergo aliquid secundum consilium non processit, Helm automatice et independenter omnes suas mutationes revolvet. Labore suo moderari non oportet.

K8S conformationem botri suppeditamus una cum ecclesia. Proximum igitur est illud renovare: configMaps, instruere, officia, arcana, aliasque K8S figurationes quas mutavimus.

Gubernaculum deinde decurrit renovatio RollOut ipsius applicationis in ambitu experimenti. Antequam ad productionem applicationis explicatur. Hoc fit ut usores manually explorare possint negotium lineamenta quae in ambitus enucleatae inponimus.

5. Lorem instruere omnes mutationes Prod

Ad explicandam renovationem ad ambitum productionis, solum opus est ut unam conjunctionem in GitLab strepat - et continentia statim ad environment productionis traditae sunt.

Eadem applicatio in variis ambitibus – experimento ac productione operari potest sine reaedificatione. Eisdem artificiis utimur, nihil mutamus in applicatione, et extra parametros ponimus.

Flexibilis parameterization occasus applicationis pendet a ambitu in quo applicatio exsecutioni mandabitur. Nos omnes ambitus ambitus extrinsecus movimus: omnia per K8S configurationem et Helm parametris parametrita sunt. Cum Helm conventum ad rem probandam disponit, unctiones probatae ad eam applicantur et unctiones producti ad ambitum producendum applicantur.

Difficillimum erat omnia usitata officia et variabiles ambitus ex ambitu parameterizare, easque in variabiles ambitus ambitus transferre, ac parametri ambitus ad Helm descriptiones configurationes.

Usus occasus applicationis ambitus variabiles. Eorum bona in vasis configmap utentes K8S positae sunt, quod est templated uti Go template. Exempli causa, ambitus ambitus variabilis ad nomen domain nomen ponens sic fieri potest:

APP_EXTERNAL_DOMAIN: {{ (pluck .Values.global.env .Values.app.properties.app_external_domain | first) }}

.Values.global.env - hoc variabile nomen ambientis (prod, scaena, UAT) reponit.
.Values.app.properties.app_external_domain - in hoc variabili constituimus optatum locum in file .Values.yaml

Cum adaequationis applicationem, Helm tabellam configmap.yaml a templates creat et APP_EXTERNAL_DOMAIN valorem desideratum refert secundum ambitum in quo applicatio renovationis incipit. Hoc variabile iam in vase positum est. Accessi ex applicatione potest, ut cuiusque ambitus applicatio alium valorem huius variabilis habebit.

Relate nuper, K8S subsidium in Spring Cloud apparuit, inter opera cum configMaps: Ver Cloud Kubernetes. Dum consilium active enucleat ac mutando funditus, eo in productione uti non possumus. Sed actuose eius conditionem monitor et in DEV configurationibus utimur. Quam primum stabilit, transibimus ab utendo variabilium rerum ad eam.

in summa

Ita, continua instruere configuratur et laborat. Omnes updates cum uno keystroke occurrunt. Partus mutationum ad productum environment latae sententiae est. Et, praesertim, updates systema non cessant.

Nostra exsecutio continua instruere in elit diam

Futurum consilia: automatic database migratio

Cogitavimus de upgradatione datorum et possibilitate has mutationes revolvendi. Ceterum duo applicationis versiones simul currunt: vetus currit, nova molitur. Veterem autem solum avertemus, cum certo sciamus opera versionis novae. Migratio datorum permittat te laborare cum utraque applicationis versione.

Ergo non possumus simpliciter immutare nomen columnae vel alia notitia. Sed possumus novam columnam creare, datam ex veteri columna in eam imitari et triggers scribere quod, cum notitia adaequationis, simul in alia columna eam effingo et renovabo. Et post feliciter instruere novam versionem applicationis, post tempus auxilium launch, veterem columnam et felis quae superflua facta est delere poterimus.

Si nova applicationis versio recte non operatur, ad priorem versionem revolvere possumus, incluso priori datorum versione. In summa, mutationes nostrae sinebunt te simul cum pluribus versionibus elaborare.

Cogitemus migrationem datorum automate per K8S officium, eam in processus CD integrantes. Quam experientiam in Habre certius participabimus.

Source: www.habr.com