CircleCI Field Guide
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

CERA Architecture

3 Layers of CERA

The CERA demo environment is broken into 3 main layers. This is both for some practical technical reasons, and also allows a better isolation of traditional roles across Application, Platform, and Infrastructure teams.

  1. Global Layer
    Would be run by your Central IT/Infrastructure team with access priveleged (not root) acces to AWS environment. In our demo environment we use SSO roles to access this profile.
  2. EKS Layer
    Provisions the EKS cluster and network. The only K8s interactions are the Istio (and friends) installation for basic network routing with HTTPS.
  3. Platform Layer (consumed by app teams)
    The final piece of the monorepo creates the core services and a handful of empty namespaces with pre-configured OIDC access to Vault and K8s.

Multi Region Support

Our own demo cluster, (supporting this fieldguide!) is HA across 2-3 regions at a time. This is controlled with a pipeline enum and some regional mapping rules.

fieldguide.circleci-fieldeng.com resolves the closest, but you can directly view cluster sites with fieldguide.REGION.circleci-fieldeng.com (currently EMEA or NAMER)

Diagrams

Monorepo Structure

Structure of modules in https://github.com/AwesomeCICD/ceratf-deployment-monorepo/tree/main

Global

+String aws_account

+String operator_iam_role

+String pipeline_iam_role

+String circleci_org_id

+String root_domain

+String common_aws_tags

+String user_login_ids

+String dyanmo_db_table

+String s3_bucket_path

+create_iam_policies()

+route_domain()

+setup_oidc()

EKS_Layer

+String region_name

+provision_network()

+provision_eks()

+regional_dns_records()

+istio_ingress()

+vault_install()

Platform_Layer

+String cci_release_token

+String nexus_admin_password

+Array[String] app_namespaces

+install_nexus()

+create_custom_appspaces()

+configure_vault_policies()

+install_argo_rollouts()

+install_cci_releases()

Monorepo layers

Multi-Region Example

Field Engineering Multi-Region deployment of CERA