Giter Site home page Giter Site logo

k8gb-io / k8gb-lite Goto Github PK

View Code? Open in Web Editor NEW
0.0 0.0 1.0 539 KB

POC k8gb reduced by CRD; besides CRD it also reduces the number of reconciliations and allows easy add new providers such as Gateway or Service.

Dockerfile 0.48% Makefile 3.27% Go 95.40% Mustache 0.85%

k8gb-lite's People

Contributors

kuritka avatar shikharcodes avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

shikharcodes

k8gb-lite's Issues

๐Ÿšจ Changes

Changes

  • Get rid of CRD , GSLB CR and API
  • No status needed
  • Simplify reconciliation
  • Simplify watchers
  • Get rid of init errors when booting app
  • significantly reduced reconciliation cycles
  • No errors in reconciliation (especially when when deleting ingress)
  • WRR support in the ingress
  • Metrics, Log is not injected directiy into package. It goes through Reconciler object and is passed to other objects through constructor.
  • Reconciliation tests - completely rewritten into the mocks
  • Api over ingress. No reason to use client.Get()...
  • "k8gb.absa.oss/finalizer" - > "k8gb.io/finalizer"
  • ApiGateway support
    would be clearly done by Mapper interface implementation. (Currently we have ingress mapper implememnted, the Gateway + Routes would be another implementation)
  • Add CoreDNS LB Service support for Infoblox - here
  • Return one Status object via GetStatus() (status Status), containing getHealthStatus, getHealthyRecords. The functions doesn't retrieve any error now. as well as GetStatus(). It returns empty objects instead.
  • GetStatus() If Service can't be loaded in getHealthStatus, the record is UNHEALTHY, Before: error was generated commit
  • GetStatus() If corev1.Endpoint can't be loaded in getHealthStatus, the record is UNHEALTHY, Before: error was generated
  • TCP and UDP digs are separated strategies (brings easier local testing on colima), easy switch between UDP and TCP
  • In FO >2 clusters; When Primary cluster is killed, the first alphabetically sorted takes control and IPs only such cluster are returned. When first alphabetical is killed, second alphabetical takes control etc. CoreDNS of all living clusters always return same cluster IP.

missing

  • tests
  • terratests
  • investigate validations of ingress
  • cleanup Makefile
  • revisit CI/CD pipelines
  • Helm changes
  • documentation changes (diagrams has changed, documented text has changed)
  • Revisit lifecycle, when kill app on secondary cluster (in FO, RR)
  • Revisit /chart, deploy, config folders
  • Local Playground changes (no GSLB)
  • Remove ExternalDNSEndpoint when k8gb POD deleted (minimal ROI, endpoint will be removed togethet with k8gb namespace)

Critical

Nice to have

  • shorten period for CreateZoneDelegation, make it independent from reconciliation
  • Create mapper for DNSEndpoint living in mapper package, move out DNSEndpoint from assistant.
  • Three cluster terratests
  • Expose validators in depresolver and reuse in Mapper
  • Use CRD-plugin@master When deploy-full-local-setup
  • Extend primaryGeoTag as ordered list providing order of substitute regions

killer

Hits

Design Breaks

  • Because of cyrcular imports in mocks I must generate ONE redundant mock (ClientMock) into Mapper package
  • Mapper.SetReference() function sets *LoopState into Mapper. It breaks design because it exists and beause it is public. It needs to be public because of visibility in the Mocks. On the other hand, you don't need to touch it.
  • symlink_slice is symlink from controller utils into terratest utils. I want to avoid duplicates in the code, but at the same time I don't want to create a dependency on a shared package or release k8gb as a shared module. Thanks to symlink I share the code between two uncommitted applications in monorep and I have a single source of truth. It is the only one file that contains functions working with maps and slices.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.