Code Monkey home page Code Monkey logo

tavros's People

Contributors

jam01 avatar nagima-kulbaeva avatar rlratcliffe avatar rmccright-ms3 avatar serghey-rodin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

tavros's Issues

complete architectural decisions log

  • Prefer Proven FOSS Components with Optional Support for Licensed Derivatives
  • Apache Camel as the Default Integration Framework
  • Spring Boot as the Base Application Framework
  • DataSonnet as the Default Data Transformation Language
  • OpenTracing for In-Process Tracing API
  • Kubernetes as the Computing Platform
  • Kops to Provision a Kubernetes Cluster
  • Flux to Provide Platform GitOps
  • Kubeseal to Securely Manage Secrets in GitOps
  • Keycloak for Indetity and Access Management
  • Kong as Kubernetes Ingress and API gateway
  • PostgreSQL as the Platform's Default Database
  • Gitea for a Lightweight Git Server
  • Kuma for Service Mesh
  • Jenkins for Continuous Delivery Jobs
  • Sonarqube for Application Static Code Analysis
  • Elastic Cloud for Observability Data Aggregation and Visualization
  • Jaeger for Tracing with Elasticsearch Backend
  • Nexus Repository Manager for Artifact Management
  • Prefer Daemonsets Over Sidecars
  • Spring Cloud Config for Application Configuration Management
  • Prefer Kong Enterprise Edition
  • Use Ansible as the Provisioning Engine
  • Helm and Operators for Component Installation and Management
  • Use Ansible Collection to Structure and Package Ansible Code
  • Setup Sandbox and Production Kuma Meshes and Kong Ingress Controllers by Default
  • Setup Sandbox and Production Keycloak Realms by Default
  • cert-manager for Certificate Management
  • Use Markdown Architectural Decision Records

Covert kubectl calls to community.kubernetes ansible module

The kubernetes ansible module provides some built-in options like waiting for resources that will make the code cleaner and easier to maintain. Also that's what Ansible Operators utilize, so it allows us to go in that direction if we decide to.

Add cert-manager component

In order to enable TLS at the Gateway level we need to integrate cert-manager to provide server certificates on demand and handle rotation automatically.

document disaster recovery procedures

In order to provide disaster recovery directions we need to document what needs to be backed up and how. Also how to restore from a failure. It's fine if this is manual for now, but would be good to think through automatic backups.

  • kops cluster state in s3
  • troubadour postgresql database

build a component configuration wizard

Build an user interface that walks a customer through troubadour component configuration and generates the appropriate yaml configuration and triggers a Jenkins provision job

Add support for other SCM providers

With the addition of #58, there are Jenkins environment variables for the SCM info that are being set with the configuration as code. The host is being dynamically set and the scm provider and scm creds are hardcoded. Support should be added to allow these values to be configured dynamically when gitea isn't enabled.

Tie Gitea into Keycloak for SSO

In order to provide a seamless authentication experience to our clients we need to tie Gitea into Keycloak to provide single sign on.

Provide necessary credentials after playbook run

In order for the customer to have access to all the installed components and the cluster itself, we need to provide those credentials in a secure manner. We need to determine what credentials are needed and how to transfer those over securely.

Add Jaeger component

In order to provide further observability of application trace data we'll use Jaeger with a Elasticsearch backend so trace data can be correlated with log and metric data.

See ADR-0017 - Jaeger for Tracing with Elasticsearch Backend for more info

Pin fluxtoolkit to a version

In order to be a repeatable process we need to use the same version in every run. We will upgrade manually when necessary.

Add Camel Jenkinsfiles and associated changes

  • Add the two scripts for the pipeline jobs to config.j2
  • Configure jenkins to have the build user vars plugin when it starts
  • Configure jenkins to have the shared library settings when it starts

Additionally:

  • A Jenkinsfile repo will need to be created publicly
  • Repo will need to be cloned into gitea

A possible enhancement later could be to set the default gitea url in the jenkinsfile to what the url is going to be when it's cloned over, if that's possible

Add Elastic Cloud component

In order to enable log aggregation, and general insight into application workloads through Kibana dashboards we need to add elastisearch and kibana

add jenkins-ci as owner of the org

In order to be able to update Gitea from Jenkins, jenkins-ci needs to be an owner of the org. Otherwise a 403 is returned with the message: Given user is not allowed to create repository in organization.

Create an automated ci test

We have a test-playbook.yaml that is tested locally. In order to enable continuous integration we need to add some assertions and create a Jenkins job to be run on demand.

The test playbook should:

  • provision kubernetes infrastructure from scratch
  • setup our default components
  • deploy a test application and run assertions against supported components, eg.: mesh isolation, https instead of http, etc
  • destroy the kubernetes infrastructure
  • be an on-demand ci job

generate jaeger spark-dependencies job

until the jaeger operator officially supports adding a truststore from the elastic http certificate secret into the spark-dependencies cron job we'll need to generate and maintain that ourselves

adjust postgresql resource allocation

Investigate what's are good request/limit resource allocations for postgresql as multiple components depend on that instance. Perhaps replicate and double limits.

delegate kong rbac to keycloak

In order to provide a single point of identity and access management, how do we delegate/map kong rbac capabilities to Keycloak?

Are there any internal points of extension? If not how can we manually keep them in sync?

Add sonarqube component

In order to provide static code qualitative analysis we'll use sonarqube.

See ADR-0015 - Sonarqube for Application Static Code Analysis for more information

Add EE support to Kong component

In order to enable valuable ee features like admin and developer portals, and oidc or oauth2 plugins, we need to support EE installations of Kongs.

This includes a Keycloak Realm, likely aligned with the Kuma Mesh that the Kong instance is a gateway to. And OIDC plugin to provide SSO into the Admin and Dev Portals.

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.