Giter VIP home page Giter VIP logo

solution-infra-local-dev's Introduction

Solution delivery, local development setup

Setting up a local, K8-based dev environment for solution delivery.

Solution delivery projects are based on handling code and configuration items. Efficient and fun deliveries depend on good tooling that supports you in handling the full life-cycle of code. This guide will help you get started with setting up a local development environment aligned with our solution delivery guidelines.

There are three, main steps:

  1. Basic tools. The local coding environment and container support.
  2. (Optional) Core infrastructure services. These are the core services (from our foundational infrastructure) like monitoring and secrets handling that help you with local development.
  3. (Optional) Extended infrastructure services. These are the complete services that you get from our production infrastructure. Eg. workflows, event handling, continuous deployment, etc.

Basic tools

You should install a set of basic tools that will help you with the development lifecycle for code and configuration. With the basic tools you have the minimum setup you need to develop and manage code and configuration. Please have a look at 1-basic-tools for an overview.

Some parts of the development workflow may benefit from extra tooling. For example, handling secrets, authoring workflows, handling metrics and alterting. In these cases you may want to explore the additional development services below.

Infrastructure / development services

Our solution infrastructure provides a set of services to help you develop, host, monitor and maintain solutions. This includes workflows / orchestration, handling secrets, metrics and monitoring, etc. Most of these services are hosted on our cloud Kubernetes environments and we can deploy local flavors of it to support local development.

There are two ways to install the development services locally:

  1. Manual install of selected services. This the recommended alternative for most scenarios.
  2. Automated install (and management) of the full services stack. Offers "all you can eat" with automated updates, but eats a bit of resources from your dev machine (4 - 6GB RAM, 1 x CPU).

Manual install of selected services

You can manually install selected development services. A manual install is as simple as running a single command--you can also uninstall a service with a single command. You can install/uninstall services as many times as you want without the risk of "polluting" your local machine since everything is containerized.

This way, you can tailor your setup towards your specific development needs and have a setup with low overhead. As a starting point, we recommend installing the core infrastructure services.

Install:

  • Recomended: Go to ./3-k8-setup-core/README.md to install the core services including metrics and monitoring and follow the instructions. There you will find more information on the different development services/tools and how to enable them. Enjoy!
  • Optionally, add the extended development services from ./4-k8-setup-extended/README.md. This will add more load to you system, but you also get support for running workflows and event handling.

Automated install of all services

The automated install will use a local Argo CD (our automated deployment tool) to install all development services and continuously monitor them. Argo CD will monitor the development services Github repository and automatically install updates for you.

This option gives you (nearly) all the services and automated management of them. The main drawback is that hosting all services locally can tax your computer's resources. Running Argo CD and the full development services requires 4 - 8 GB RAM and 2 x CPU.

One alternative to avoid continuously taxing your computer, is by stopping/suspending the local K8s cluster hosting the dev services when you don't need them. Then you can start/resume it when needed. Both Docker and Minikube supports stop/start.

Install:

  • Go to 2-argo-cd and follow the instructions. This step installs Argo CD which will help manage your dev services.

solution-infra-local-dev's People

Contributors

kjetilh33 avatar renovate[bot] avatar

Stargazers

emil-elate avatar Infant Alex avatar

Watchers

Peter Nicolai Motzfeldt avatar Louis Salin avatar Vegard Økland avatar Ermias avatar Robert Collins avatar Trygve Andre Tønnesland avatar James Cloos avatar Emil Sandstø avatar Aleksandrs Livincovs avatar Nakarin Phooripoom avatar Ilya petin avatar Wim Notredame avatar Øystein Hagen Pettersen avatar Sergei avatar Eirik L. Vullum avatar Daniel Priori avatar  avatar David Liu avatar Nils Barlaug avatar Vibha Srinivasan avatar Johan avatar Robert Lombardo avatar Jacek Lakomiec avatar Alireza Kandeh avatar Rogerio Saboia Júnior avatar Udeshika Sewwandi avatar Per Magne Florvaag avatar QuocViet Le avatar Priyanka Perera avatar Cecilie Uppard avatar Shehan Neomal Mark Fonseka avatar Shashan avatar  avatar

solution-infra-local-dev's Issues

Argo Workflows - scope

Hi,

We would like to get your feedback on the current Argo workflow configurations we have been using for the local setup.

As you know, Argo workflow is using namespace scoped configurations (https://argoproj.github.io/argo-workflows/managed-namespace/) i.e. allowing us to have the argo services as well as the workflows only on the same namespace (argo) but the production cluster is configured with a cluster-scope i.e. allowing us to use other namespaces for workflows as well.

This is not a major limitation as such for local development but It kinda restricts us from using other namespaces for workflows and it will be nice to have a setup which is similar to production cluster for local playground as well.

Looking forward to hearing your thoughts on this.

Contributors: Infant Alex & Stig

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

helm-values
4-k8-setup-extended/external-secrets-operator/values.yaml
kustomize
3-k8-setup-core/grafana-operator/kustomization.yaml
  • ghcr.io/grafana-operator/grafana-operator v5.0.1
3-k8-setup-core/victoria-metrics/kustomization.yaml
  • VictoriaMetrics/operator v0.34.1
  • victoriametrics/operator v0.34.1

  • Check this box to trigger a request for Renovate to run again on this repository

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.