Code Monkey home page Code Monkey logo

anya's People

Contributors

anjakammer avatar renovate-bot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

anya's Issues

Deployment fails, if Tiller version of Cluster does not match Helm version used by anya

Description

anya uses the latest container image of dtzar/helm-kubectl/. However, the cluster might not use the latest tiller version.
Somehow, anya should know which helm version to use, or there is legacy support for older Tiller versions.

Workaround

Upgrade Tiller, when the deployment fails because of incompatible versions of the client and server. It should be solved by executing the following against the cluster: helm init --upgrade

Solution

  • Using Helm in version 3, so the update and rollback features can still be used.
  • Using Helms rendering option (helm template) would prevent using those features.

Use helm requirements for Brigade components

Description

At the moment, Helmsman installs Brigade components. Since helmsman should not fulfill tasks which can be solved with the helm chart, this should be avoided.

Workaround

The current solution is fine for now.

Solution

Use a Helm requirements file to install all anya dependencies.

Setup CI/CD for anya

Description

anya does not have CI/CD.

Solution

CI/CD Pipeline

  • Consider to use Brigade, anya, Github Actions
  • Use make package to deploy new versions of anya

Static Code Analysis

  • Use kubeval to validate K8s manifests
  • Use kube-score to look out for better yaml design
  • Use conftest to validate conf files
  • Use a Vulnerability Scanner (Snyk)

Testing

  • Use Brigadier to unit test brigade.js file
  • Use KinD for Integration testing

Run Integration tests with kind

Description

As a Developer, I want to run integration tests with anya pipelines.

Workaround

Not needed, new feature

Solution

The user needs to provide a test-container to perform tests over the network. Additionally, there is a need for passing all necessary helm charts for involved services.
Kind is then run in a Brigade job. With kind the services are deployed. After that, the test container is started as a job in kind and runs its tests against the setup.
The termination code will then allow anya to conclude the outcome in addition to the jobs logs.

Smoke tests could be realized in the same way, but the test container is then only checking for a response of the services not for correct responses.

Split Repository

Description

Split resources for installation from the actual script. This is also better for CI/CD #2

Workaround

no workaround needed

Solution

working with a submodule

Run integration tests in temp namespace

Description

such as #11, but without kind. For this implementation, a temporary namespace is created for the integration tests.

Workaround

not needed, new feature

Solution

the deployment manifest needs to get created, versioned, uploaded and can then be used for testing.

List Deployments via GitHub Deployments API

Description

If a Deployment was made, anya should create a deployment entry in the environments tab of a repo in Github.
It should be configurable to only list deployments within a given set of branch names (e.g.: master, staging, development, hotfix-*)

Workaround

not needed -> new Feature

Solution

  • Create a deployment for every successful deployment with the GitHub Deployments API
  • check whether there are branch-name-based restrictions

Perform/Delete Deployment Buttons disappeared

Description

GitHub Action Buttons API changed so that the perform/delete deployment buttons disappeared.

Workaround

Turn on automatic deployment in anya/deploy.yaml

Solution

Look up the new API spec and change the call accordingly.

Push rendered deployment manifests to a state-repository

Description

anya could track all deployments via git commits in a Cluster-State repository for faster recovery and version control of the deployments.

Workaround

Not possible at the moment

Solution

anya renders Kubernetes manifests from the helm template and pushes it to the Cluster-State repository. This will makes more sense when tiller is not used for the deployment anyway.
One state repo maps to one complete setup with all deployed applications and infrastructure.

ToDo

How to deal with different environments?

  • only track production stage?

How does the promotion look like?

  • one repo per environment?
  • one branch per environment?

How to automatically commit manifests to the repository by a GitHub App?

  • create a user?
  • via api doesn't seem to work, we need git collaboration access.

Implement Auto detection

Description

To generate the Dockerfile automatically

Workaround

The current solution is ok

Solution

  • Integrate Buildpacks or Knative into the pipeline
  • assume apps run on HTTP/8080

Use anya to trigger Tekton pipelines

Description

Allow the definition of custom pipelines though Tekton objects. Trigger them through GitHub Events. Output the results via anya integration.

Workaround

Not used yet.

Solution

Fetch the Tekton yamls from the repository

Dependency Dashboard

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

This repository currently has no open or pending branches.

Detected dependencies

helm-values
charts/deployment-template/values.yaml

  • 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.