Removere iamnonum pluma ramum in Kubernetes botri

Removere iamnonum pluma ramum in Kubernetes botri

Salvete! Pluma ramus (aka praevisum, retractationis app) - hoc est cum non solum dominus ramus explicatur, sed etiam singula rogatio trahere ad unum domicilium. Potes inspicere utrum signum in ambitu productionis operatum sit, pluma aliis programmatibus vel artificiis productis ostendi potest. Dum opus in petitione traheretur, singulae novae explicandae currenti explicant pro vetusto codice deletum est, et nova explicatio ad novum codicem evolvit. Quaestiones oriri possunt cum petitionem traho in ramum magistri immiserint. Ramo plumario non opus est, sed copiae Kubernetes in botro adhuc sunt.

Pluma de ramis

Aditus ad ramos plumandos in Kubernetes accessus spatiis nominalibus utendus est. In summa, figuratio productio sic se habet:

kind: Namespace
apiVersion: v1
metadata:
  name: habr-back-end
...

kind: Deployment
apiVersion: apps/v1
metadata:
  namespace: habr-back-end
spec:
  replicas: 3
...

Pro pluma ramo, spatium nominale creatum est cum suo identificatorio (exempli gratia, numerus viverra postulatio) et quaedam praepositionis/postfixi species (exempli gratia, -pr-):

kind: Namespace
apiVersion: v1
metadata:
  name: habr-back-end-pr-17
...

kind: Deployment
apiVersion: apps/v1
metadata:
  namespace: habr-back-end-pr-17
spec:
  replicas: 1
...

In genere scripsi Kubernetes Operator (Applicatio quae accessum ad facultates botrum portassent) link to project in Github. Spatia nomina removet quae ad ramorum plumam pertinent vetus. In Kubernetes, si spatium nominandi deles, aliae facultates in illo spatio etiam automatice deletae sunt.

$ kubectl get pods --all-namespaces | grep -e "-pr-"
NAMESPACE            ... AGE
habr-back-end-pr-264 ... 4d8h
habr-back-end-pr-265 ... 5d7h

Legere potes quomodo ad efficiendum ramos pluma in botro hic и hic.

motus

Intueamur amet viverra petitionem lifecycle cum continua integratione (continuous integration):

  1. Nos novam calamo committimus impellentem.
  2. Ad struendum, linteamina et/vel probationes currunt.
  3. Kubernetes trahere petitionem figurarum in musca generantur (exempli gratia: numerus eius insertus est in exemplaribus perfectis).
  4. Usura kubectl applicabilis, configurationes botro adduntur (explicandae).
  5. Trahere petitionem in ramum magistri mergitur.

Dum opus in petitione traheretur, singulae novae explicandae currenti explicant pro vetusto codice deletum est, et nova explicatio ad novum codicem evolvit. Sed cum petitio viverra in ramum magistri immiscet, solus dominus ramus aedificabitur. Quam ob rem evenit ut iam obliti sumus de petitione trahere, eiusque facultates Kubernetes adhuc in botro sunt.

Quam utor

Instrue consilium cum imperio infra:

$ kubectl apply -f https://raw.githubusercontent.com/dmytrostriletskyi/stale-feature-branch-operator/master/configs/production.yml

Facere lima cum his content et install via kubectl apply -f:

apiVersion: feature-branch.dmytrostriletskyi.com/v1
kind: StaleFeatureBranch
metadata:
  name: stale-feature-branch
spec:
  namespaceSubstring: -pr-
  afterDaysWithoutDeploy: 3

parametri namespaceSubstring opus est spatiis nomina eliquare ad petitiones trahendi ab aliis spatiis nominalibus. Exempli gratia, si botrus habet nomina sequentia; habr-back-end, habr-front-end, habr-back-end-pr-17, habr-back-end-pr-33ergo candidati deletionis erunt habr-back-end-pr-17, habr-back-end-pr-33.

parametri afterdaysWithoutDeploy vetus spatiis nomina delere opus est. Exempli gratia, si spatio spatio creatur 3 дня 1 час dorsum et modulus indicat 3 дня, spatium hoc delebitur. Etiam in contrariam partem operatur, si spatio nominali creatur 2 дня 23 часа dorsum et modulus indicat 3 дняSpatium hoc non delebitur.

Unus modulus plus est, cuius curam habet quotiens omnia nomina spatia lustrare et dies sine instruere inhibere. checkEveryMinutes. Defaltam aequalem 30 минутам.

Quam facit hoc opus

Re, opus erit;

  1. Docker quoniam opus est in singulis environment.
  2. Minikube excitabit Kubernetes botrum illitum.
  3. kubectl - order line interface pro botrum procuratio.

Attollimus Kubernetes botrum localiter;

$ minikube start --vm-driver=docker
minikube v1.11.0 on Darwin 10.15.5
Using the docker driver based on existing profile.
Starting control plane node minikube in cluster minikube.

indicamus kubectl Botrus loci utor per default:

$ kubectl config use-context minikube
Switched to context "minikube".

Configurationes Download ad productionem environment:

$ curl https://raw.githubusercontent.com/dmytrostriletskyi/stale-feature-branch-operator/master/configs/production.yml > stale-feature-branch-production-configs.yml

Cum configurationes productionis ad reprimendam spatia nomina antiqua configurantur, et botrus recenter noster eas non habet, nos mutabilem ambitum mutabimus. IS_DEBUG on true. Hoc valore parametri afterDaysWithoutDeploy non computatur, spatiis nominalibus diebus non explicatur, modo ad substringi eventum.-pr-).

Si in Linux:

$ sed -i 's|false|true|g' stale-feature-branch-production-configs.yml

Si in macOS:

$ sed -i "" 's|false|true|g' stale-feature-branch-production-configs.yml

Inaugurari propositi:

$ kubectl apply -f stale-feature-branch-production-configs.yml

Reprehendo quod a resource apparuit in botro StaleFeatureBranch:

$ kubectl api-resources | grep stalefeaturebranches
NAME                 ... APIGROUP                             ... KIND
stalefeaturebranches ... feature-branch.dmytrostriletskyi.com ... StaleFeatureBranch

Reprehendimus operator in botro apparuit:

$ kubectl get pods --namespace stale-feature-branch-operator
NAME                                           ... STATUS  ... AGE
stale-feature-branch-operator-6bfbfd4df8-m7sch ... Running ... 38s

Si acta eius spectes, parata est ad facultates processuras StaleFeatureBranch:

$ kubectl logs stale-feature-branch-operator-6bfbfd4df8-m7sch -n stale-feature-branch-operator
... "msg":"Operator Version: 0.0.1"}
...
... "msg":"Starting EventSource", ... , "source":"kind source: /, Kind="}
... "msg":"Starting Controller", ...}
... "msg":"Starting workers", ..., "worker count":1}

Nos install parata facta fixtures (Paratus facta configurationibus ad exemplar botrum portassent facultates) pro resource StaleFeatureBranch:

$ kubectl apply -f https://raw.githubusercontent.com/dmytrostriletskyi/stale-feature-branch-operator/master/fixtures/stale-feature-branch.yml

Configurationes indicant ut quaeram spatia spatiorum cum substring -pr- quondam in 1 минуту.:

apiVersion: feature-branch.dmytrostriletskyi.com/v1
kind: StaleFeatureBranch
metadata:
  name: stale-feature-branch
spec:
  namespaceSubstring: -pr-
  afterDaysWithoutDeploy: 1 
  checkEveryMinutes: 1

Auctor respondit et paratus est ad nomina spatiis reprimendam;

$ kubectl logs stale-feature-branch-operator-6bfbfd4df8-m7sch -n stale-feature-branch-operator
... "msg":"Stale feature branch is being processing.","namespaceSubstring":"-pr-","afterDaysWithoutDeploy":1,"checkEveryMinutes":1,"isDebug":"true"}

install fixtures, duo nomina continens (project-pr-1, project-pr-2) et eos deployments, services, ingress, et sic porro:

$ kubectl apply -f https://raw.githubusercontent.com/dmytrostriletskyi/stale-feature-branch-operator/master/fixtures/first-feature-branch.yml -f https://raw.githubusercontent.com/dmytrostriletskyi/stale-feature-branch-operator/master/fixtures/second-feature-branch.yml
...
namespace/project-pr-1 created
deployment.apps/project-pr-1 created
service/project-pr-1 created
horizontalpodautoscaler.autoscaling/project-pr-1 created
secret/project-pr-1 created
configmap/project-pr-1 created
ingress.extensions/project-pr-1 created
namespace/project-pr-2 created
deployment.apps/project-pr-2 created
service/project-pr-2 created
horizontalpodautoscaler.autoscaling/project-pr-2 created
secret/project-pr-2 created
configmap/project-pr-2 created
ingress.extensions/project-pr-2 created

Reprehendimus omnes facultates superiores feliciter creatas esse;

$ kubectl get namespace,pods,deployment,service,horizontalpodautoscaler,configmap,ingress -n project-pr-1 && kubectl get namespace,pods,deployment,service,horizontalpodautoscaler,configmap,ingress -n project-pr-2
...
NAME                              ... READY ... STATUS  ... AGE
pod/project-pr-1-848d5fdff6-rpmzw ... 1/1   ... Running ... 67s

NAME                         ... READY ... AVAILABLE ... AGE
deployment.apps/project-pr-1 ... 1/1   ... 1         ... 67s
...

Cum includi debug, spatiis nominalibus project-pr-1 и project-pr-2ideoque omnes aliae facultates statim deleri debebunt neglecto modulo afterDaysWithoutDeploy. Hoc videri potest in operante omnia:

$ kubectl logs stale-feature-branch-operator-6bfbfd4df8-m7sch -n stale-feature-branch-operator
... "msg":"Namespace should be deleted due to debug mode is enabled.","namespaceName":"project-pr-1"}
... "msg":"Namespace is being processing.","namespaceName":"project-pr-1","namespaceCreationTimestamp":"2020-06-16 18:43:58 +0300 EEST"}
... "msg":"Namespace has been deleted.","namespaceName":"project-pr-1"}
... "msg":"Namespace should be deleted due to debug mode is enabled.","namespaceName":"project-pr-2"}
... "msg":"Namespace is being processing.","namespaceName":"project-pr-2","namespaceCreationTimestamp":"2020-06-16 18:43:58 +0300 EEST"}
... "msg":"Namespace has been deleted.","namespaceName":"project-pr-2"}

Si paratas facultates quaeras, in statu erunt Terminating (Processus deletionis) vel iam deletum (output imperium inanis est).

$ kubectl get namespace,pods,deployment,service,horizontalpodautoscaler,configmap,ingress -n project-pr-1 && kubectl get namespace,pods,deployment,service,horizontalpodautoscaler,configmap,ingress -n project-pr-2
...

Creatio iterare potes processus fixtures pluries et fac intra minutum removeantur.

alterum

Quid fieri potest loco operantis qui in botro operatur? Plures sunt aditus, omnes imperfecti (et eorum vitia sunt subiectiva), et quisque sibi statuit quid sit optimum ad aliquod consilium;

  1. Ramus plumae delete inter continuam integrationem fabricandi rami magistri.

    • Ad hoc debes scire quod petitio trahere ad committendum quod aedificatur. Cum in pluma ramus spatii spatiorum nominativus contineat petitionem identificantis trahendi eius numerum, vel nomen rami, identificatrix semper certa debet in committo habere.
    • Magister ramum aedificat deficiunt. Exempli gratia, sequentes gradus habes: depone consilium, currendi probationes, aedifica consilium, fac remissionem, notificationes mitte, purga pluma ramus ultimi rogationis trahere. Si aedificatio defecerit in notificatione mittendo, omnes facultates in botro manually delere debebis.
    • Sine contextu, pluma deletis ramis in architecto aedificatum non apparet.

  2. Usura webhooks (exempli gratia).

    • Hoc ne sit aditus. Exempli gratia Imagouna tantum species pipelineis adiuvat facultatem ut eius configurationes in fonte codice inveniantur. Cum webhooks uteris, necesse est ut litteras tuas scribeas ut eas expedias. Scriptum hoc in Jenkins interface ponendum erit, quod difficile est dictu.

  3. Write Cronjob et Kubernetes botrum addere.

    • Vacat in scripto et auxilio.
    • Auctor iam in simili stilo operatur, documentum est et confirmatur.

Tibi gratias ago pro attente ad articulum. Link to the project on Github.

Source: www.habr.com

Add a comment