Skip to content

AwesomeCICD/ceratf-deployment-monorepo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

C.E.R.A

CircleCI Enterprise Reference Architecture

A new monorepo for CERA Terraform deployment

Index

What is CERA?

CERA, CircleCI Enterprise Reference Architecture, is a full scale enterprise environment that includes the following services:

  • Full Stack Logging Solution
  • Re-deployable infrastructure using infrastructure as code
  • A production like application - Circle Banking App (cba)
  • CircleCI's Fieldguide comment: <> (- On Prem VCS)
  • Artifact Repository
  • Container Registry
  • Argo Rollouts
  • CCI Release Agent
  • Kiali, Grafana, Prometheus, Istio & Cert-Manager
  • TODO: Add more services

Why does CircleCI need CERA?

CERA grew from the need of CircleCI shifting to larger enterprise customers. To make a truly impactful demo for enterprise customers it is important to understand an enterprise like environment, the pain points surrounding an enterprise like environment, and what technologies are in an enterprise like environment.

Goals of CERA

Focusing our talented Field Engineering team's effort on supporting CircleCI's Enterprise Reference Architecture, the goals are as follows:

  • Have an effective environment to showcase CircleCI's enterprise level features
  • Show off more complex use cases of CircleCI's platform
  • Have an environment that can be tailored to different personas inside an enterprise customer (Mobile Developer, DevOps Engineer, Frontend/Backend Developer, Centralized Ops Team)
  • Flexible environment that is easy to add or modify
  • Re-deployable with little to no effort
  • Easily Maintainable
  • TODO: Define and solidify goals with team

At the end of the day CircleCI needs an environment that Field Engineering can utilize for demos.

Wall of Work and Organization

CERA has a lot of moving parts and will require collaboration to be complex. In order to stay organized this project will be utilizing JIRA. JIRA will act as a wall of work where individuals can look and be assigned tasks. By utilizing JIRA the Field Engineering team can effectively collaborate on multiple tasks across different time zones.

How we work

TODO

Diagrams

Here is the link to the diagrams!

Cluster Information

Here is the link containing information on accessing the CERA EKS Cluster. (CCI Employees only)

Workflows & Layers

Screenshot

Global

Our global module represents common resources needed by all clusters. If this path is triggerd, an apply will propigate through all layers of our infrastructure (Global -> EKS -> Platform)

Services deployed at the global layers include:

  • Route 53
  • IAM
  • Kuma

(namer/emea/japac-eks)

Our EKS layer and modules will handle the deployment of our EKS clusters in each of the regions above. If this path is triggerd, an apply will trigger the following jobs (EKS -> Platform)

Services deployed at the EKS layer include:

  • EKS cluster to eu-west-2, us-west-2 or ap-northeast-1, depending on what region is triggered
  • Istio service mesh
  • Vault

(namer/emea/japac-platforms)

Our platform layer and modules will handle the deployment of the required services to our clusters in each of the regions above. If this path is triggerd, an apply will trigger the following jobs at the Platform level only

Services & configuration deployed at the platform layer include:

  • Vault config
  • Nexus
  • Nexus Config
  • Argo Rollouts
  • CircleCI Release Agent

TOO

Use Cases

Global Trigger

  1. Global -> Everything
    • Global -> NAMER -> NAMER-Platforms
    • Global -> EMEA -> EMEA-Platforms
    • Global -> JAPAC -> JAPAC-Platforms

Namer-all

  1. NAMER -> NAMER-Platforms
  2. NAMER-Platforms

EMEA-all

  1. EMEA -> EMEA-Platforms
  2. EMEA-Platforms

JAPAC-all

  1. JAPAC -> JAPAC-Platforms
  2. JAPAC-Platforms

Platforms

  1. NAMER-Platforms
  2. EMEA-Platforms
  3. JAPAC-Platforms

Trooubleshooting

Teardown Stuck Istio Namespace

If deleting istio-system namespace hangs, try this to force;fully remove Kiali finalizers.

kubectl get kialis.kiali.io kiali "istio-system" -o json \\n  | tr -d "\n" | sed "s/\"finalizers\": \[[^]]\+\]/\"finalizers\": []/" \\n  | kubectl replace --raw /api/spaces/istio-system/finalize -f -

Or print the kialis.kiali.io kiali to yaml and manually remove finalizers, and apply.

About

Monorepo for CERA Terraform deployments

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published