Skip to content
This repository has been archived by the owner on Jun 24, 2024. It is now read-only.

🚨 Changes #1

Open
kuritka opened this issue Jan 13, 2023 · 0 comments
Open

🚨 Changes #1

kuritka opened this issue Jan 13, 2023 · 0 comments

Comments

@kuritka
Copy link
Contributor

kuritka commented Jan 13, 2023

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.
@kuritka kuritka changed the title Changes 🚨 Changes Jan 13, 2023
kuritka added a commit that referenced this issue Jan 20, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant