Giter Site home page Giter Site logo

epam / edp-headlamp Goto Github PK

View Code? Open in Web Editor NEW
8.0 5.0 6.0 26.76 MB

The single management point of all the EDP resources

Home Page: https://epam.github.io/edp-install/

License: Apache License 2.0

JavaScript 0.05% Dockerfile 0.01% Makefile 0.11% Smarty 0.09% TypeScript 99.71% CSS 0.04%
adminconsole cicd edp headlamp kubernetes kubernetes-dashboard kubernetes-ui ui customresources

edp-headlamp's Introduction

codecov

EDP Portal

Central management tool in the EDP ecosystem. Powered by Headlamp.

License Coverage

❗ Please refer to EDP documentation to get the notion of the main concepts and guidelines.

Overview

EDP Portal is built on the top of Headlamp. All EDP-specific functionality is written as Headlamp plugins.

overview.mp4

Assets

EDP Components page screenshot
EDP Component page screenshot
EDP configuration page screenshot
EDP Create Component Start screenshot
EDP Create Component screenshot
EDP Create Component Doc screenshot
EDP Create Component Editor screenshot
EDP Create Component Advanced screenshot
EDP CDPipeline page screenshot
EDP CDPipeline page screenshot
EDP CI Pipeline screenshot
EDP overview page screenshot

Installation

In order to install the EDP Headlamp, follow the steps below:

  1. To add the Helm EPAMEDP Charts for local client, run "helm repo add":

    helm repo add epamedp https://epam.github.io/edp-helm-charts/stable
  2. Choose available Helm chart version:

    helm search repo epamedp/edp-headlamp -l

    Example response:

    NAME                	            CHART VERSION	APP VERSION	    DESCRIPTION
    epamedp/edp-headlamp	            0.13.0        	0.13.0      	A Helm chart for EDP Headlamp

    NOTE: It is highly recommended to use the latest released version.

  3. Full chart parameters available in deploy-templates/README.md.

  4. Install edp-headlamp in the namespace with the helm command; find below the installation command example:

    helm install edp-headlamp epamedp/edp-headlamp --namespace <edp-project> --version <chart_version> --set name=edp-headlamp --set global.platform=<platform_type>
  5. Check the namespace that should contain edp-headlamp deployment in a running status.

Local Development

Development versions are also available, please refer to the snapshot Helm Chart repository page.

Requirements

Start Local Development

  • Run the npm run start command.
  • Open the Headlamp desktop application.

edp-headlamp's People

Contributors

artem-zahumonnyi avatar blobor avatar callmevladik avatar epmd-edp avatar k-zbar avatar mariiabochechko avatar nikolaymarusenko avatar oleksandr123234 avatar sergk avatar victormysyk avatar yevheniipokhvalii avatar yuriiboichuk avatar zmotso avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

edp-headlamp's Issues

Headlamp should contain configuration section for DefectDojo integration

In headlamp we have section (like gitserver, remote cluster) which contains credentials for DefectDojo integration

Acceptance Criteria:

  • user can manage DD secret with Configuration section;
  • inherit behaviour as for secrets for registry/sonar/nexus integration;
  • in EDP env can be create only ONE secret;
  • user cannot redefine name "defectdojo-ciuser-token";
  • add description for each fields in DefectDojo section;
  • in case if secret have ownerRef (managed by external-secret operator) lets hide button to modify object (save/remove) and add label managed-by - External secret operator (get value from secret object) like default branch

Secret Structure:

apiVersion: v1
kind: Secret
metadata:
  name: defectdojo-ciuser-token
  namespace: <edp-project>
  labels:
   app.edp.epam.com/secret-type: defectdojo
data:
  token: <base64_token>
  url: <base64_url>
type: Opaque

Provide link to QG pipeline in CD part

Image

As EDP User, I want to have valid link from Headlamp UI to QG pipeline in CD part.

Acceptance Criteria:

  • QG pipeline have valid link to Tekton pipeline;

Add notification about unset namespaces

Acceptance Criteria:

  • in case if EDP user use cd pipelines we need to enable new namespaces to allow list in Headlamp settings;
  • add notification and link for user to define default and allowed ns;

Move Up the Create App button on the Overview Headlamp page

The button to open the dialog for adding a EDP component at the bottom of the page and it is not always convenient and visual, let's raise it up.

Acceptance Criteria:

  • button to open the dialog for onboarding EDP applications can be easily found on the top of Overview Headlamp page;

Provide link to Kibana logs from headlamp for the deployed applications

Acceptance Criteria:

Image

Headlamp should contain configuration section for registry integration

In headlamp we have section (like gitserver, remote cluster) which contains credentials for harbor integration

Acceptance Criteria:

  • User is able to create secret for harbor integration
  • Secret has agreed label
  • User is able to manage secret

Secret Structure:

kind: Secret
metadata:
  name: kaniko-docker-config
  namespace: <edp-project>
type: Opaque
stringData:
  config.json: |
    {
      "auths" : {
        "harbor-registry.com": { "auth": "<base64 encoded "user:secret" string>" }
      }
    }

Where:

  • kaniko-docker-config - Secret Name;
  • harbor-registry.com - Registry endpoint;
  • User - User for integration with Registry;
  • Secret - Secret for integration with Registry;
  • to generate in base64 use command - echo -n "user:secret" | base64;
  • example - echo -n "robot$edp-project+edp:secret" | base64;
  • use label to display and create secret: app.edp.epam.com/secret-type=registry;
  • provide example for values to make sure user know pattern for data;

Fix image tags real-time updating

STR:

Create any application and test codebases
Run build pipeline for application
Create CD Pipeline with QG autotest
Deploy the application and promote using autotest
After promotion go to the applications tab and open Image stream version popup 

AR: Stable version isn't displayed in the Image stream version popup without the page refreshing

ER: Stable version should be displayed in the Image stream version popup

Provide link to Grafana from Headlamp for the deployed applications

Acceptance Criteria:

Steps:

  • check kind: EDPComponent with type: grafana - if CR exist - show Link in Headlamp UI;
  • get EDPComponent.grafana.spec.url (for example : https://grafana.example.com/)

Image

Release 0.9.0

Acceptance Criteria:

  • edp-headlamp 0.9.0 released;

Headlamp should contain configuration section for Jira integration

In headlamp we have section (like gitserver, remote cluster) which contains credentials for Jira integration

Acceptance Criteria:

  • user can manage Jira secret with Configuration section;
  • inherit behavior as for secrets for registry/sonar/nexus integration;
  • in EDP env can be create only ONE secret;
  • user cannot redefine name "jira-ciuser";

Secret Structure:

apiVersion: v1
kind: Secret
metadata:
  name: jira-user
  namespace: <edp-project>
  labels:
   app.edp.epam.com/secret-type: jira
data:
  username: <base64_token>
  password: <base64_url>
type: Opaque

Release 0.8.0

Acceptance Criteria:

  • edp-headlamp 0.8.0 released;

Add DependencyTrack Configuration page

This task is the copy of Sonar approach, we need to add new section in configuration

Acceptance criteria:

A new tab in the configuration section with the name DependencyTrack
secret name: ci-dependency-track
secret data field: token
label: app.edp.epam.com/secret-type=dependency-track
Put dependencytrack tab near defectdojo

Use branding from: https://github.com/DependencyTrack/branding 

Refact configuration section

Clarify description for gitops repository

Acceptance Criteria:

is case if something wrong use can understand potential reason from error message on gitops section;
status of gitOps repository available like in gitservers
git server - mandatory field in marketplace section (please add autofill and enable required flag);

Hide the DEPLOY button in Headlamp UI for the Jenkins deploy scenario

In Jenkins deploy scenario, the DEPLOY button in the CD Pipeline details page doesn't work since the logic of the button implies triggering Argo CD, which impossible when we use Jenkins.

So it's desired to hide the button or make it gray (inactive) then.

Acceptance Criteria:

  • In Jenkins deploy scenario Deploy button inactive OR return link to proper cd-pipeline in Jenkins;

Redesign CD pipeline page structure

Currently the page with CD pipelines is quite overloaded with information, let's make an approach so that there is one combined page to understand the nesting structure of CD pipelines and also a page for each CD stage with a detailed display of data.

Acceptance Criteria:

  • EDP user can open a separate page to display detailed information for each CD stages;
  • CD pipelines page contain information about main pipeline structure, without detailed information about CD stages;

Update GitServer provisioning

Acceptance Criteria:

  • git server can be presented only one;
  • git server status can be seen;
  • secret name - hardcode - ci-gitlab/github;
  • gerrit - without modification;

MarketPlace Page empty

STR:

Open EDP in incognito mode
Go to the Marketplace tab

AR: Marketplace tab is empty

ER: Should be displayed all available Marketplaces

image

Merge codebase info and application info sections on project creating dialog

Take out separately the options for choosing the type of project and the available strategy.

Implement 'default branch' autofill (main by default). And move default branch options to 'Advanced Settings' sections in create project dialog.
Rename 'Application name' field to 'Component name'.
'Git Server' and 'Git repo relative path' must be in one line to improve user experience.
Implement button with icons for 'Build tool' field instead of drop-down.
Implement 'Project name' autofill and get value from 'Repository URL' parameter.

Add description for new 'Create project' dialog:

Application: Used to deploy services. It includes configuration files, deployment scripts, and other resources needed to create and manage the application's infrastructure.

Library: Provides reusable code that can be incorporated into services. It includes additional functions, modules that might be shared across services.

Autotests: Onboard and start defining Quality Gate for deployment pipelines here...

Create from template: Create a sample project from a template to start quickly.

Import project: Onboard your existing code to the EDP platform.

Clone project: Clone code from third-party VCS providers.

Image

Fix latest, stable image stream buttons, fix adding registry secrets

STR:

Go to EDP configuration screen on Registry tab
Remove all external secrets
Add new one

ER: User should be able to add new secrets

AR: Create service account button is inactive

Detailed information isn't displayed for already created secrets

In other cases in no secret message tab name starts with a capital letter.

STR:

Create and build any application
Create CD pipeline
During deployment select application and press Latest button

ER: Latest image stream version should be selected

AR: Image stream version is empty, same problem for stable button

Redesign EDP Components page

This is new section in 'Configuration' section. Main goal - manage EDP component with EDP Portal.

Acceptance Criteria:

EDP user can manage (create/update/delete) EDP Components via Configuration section in EDP Portal;
align with gitserver approach;

Git Server. Git Ops issues

  • fix git server creation(sshPort, httpsPort number type)
  • fix crash on gitops page when there is no git server
  • show no git servers message when there is no git server

Update headlamp to 0.19.1

Recently, we've updated headlamp to 0.19.0 which has issues, so we've rollback'ed it to previous version with appropriate code changes. We have to update headlamp to 0.19.1 and bring back those code changes.

As a EDP User, I want to have capability to define values.yaml file per cd stage (environment)

Acceptance Criteria:

  • EDP user can manage values as gitops approach;
  • use EDP Portal to modify and save custom values.yaml;
  • user can use approach to deploy envs with custom values;

language: helm
framework: gitops
build_tool: helm

Example Argo CD application with custom values:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: mm-fastapi-custom
spec:
  destination:
    name: in-cluster
    namespace: demo-deploy-dev
  project: demo
  sources:
  - repoURL: ssh://[email protected]:30222/edp-gitops
    targetRevision: main
    ref: values
  - helm:
      valueFiles:
        - $values/deploy/dev/mm-fastapi-values.yaml
      parameters:
        - name: image.tag
          value: 0.1.0-SNAPSHOT.2
        - name: image.repository
          value: registry.example.com/demo/mm-fastapi
      releaseName: mm-fastapi
    path: deploy-templates
    repoURL: ssh://[email protected]:30222/mm-fastapi
    targetRevision: build/0.1.0-SNAPSHOT.2
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
      - CreateNamespace=true

Template:

apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: mm-fastapi-custom
spec:
  destination:
    name: in-cluster
    namespace: demo-deploy-dev
  project: demo
  sources:
  - repoURL: ssh://[email protected]:30222/edp-gitops
    targetRevision: main
    ref: values
  - helm:
      valueFiles:
        - $values/<cdpipelinename>/<cdstagename>/<application-name>-values.yaml
      parameters:
        - name: image.tag
          value: 0.1.0-SNAPSHOT.2
        - name: image.repository
          value: registry.example.com/demo/mm-fastapi
      releaseName: mm-fastapi
    path: deploy-templates
    repoURL: ssh://[email protected]:30222/mm-fastapi
    targetRevision: build/0.1.0-SNAPSHOT.2
  syncPolicy:
    automated:
      prune: true
      selfHeal: true
    syncOptions:
      - CreateNamespace=true

Pattern to provision edp-gitops repository:

apiVersion: v2.edp.epam.com/v1
kind: Codebase
metadata:
  labels:
    app.edp.epam.com/codebaseType: system
  name: edp-gitops
spec:
  buildTool: helm
  ciTool: tekton
  defaultBranch: main
  deploymentScript: helm-chart
  description: Custom values for deploy applications
  emptyProject: false
  framework: gitops
  gitServer: gerrit # can be depend on gitserver
  gitUrlPath: <path_to_repo>/edp-gitops
  jenkinsSlave: null
  jiraIssueMetadataPayload: null
  jobProvisioning: null
  lang: helm
  strategy: create
  ticketNamePattern: null
  type: system
  versioning:
    startFrom: 0.1.0-SNAPSHOT
    type: edp

EDP Portal steps:

  • Add CD pipeline (GitOps) in configuration page;
  • in CD pipeline (GitOps) configuration user can provide only path to repo;
  • user cannot modify path after apply;
  • after apply describe short information about codebase provisioning (repo path);
  • Add custom values checkbox in cd stage;
  • If user set checkbox with custom values to true - EDP portal create kind: Application with additional values path;
  • when user provide path to codebase with custom values - user can create CD pipeline and new codebase must contain type app.edp.epam.com/codebaseType: system and name edp-gitops;
  • hide deletion button if codebase contain app.edp.epam.com/codebaseType: system;
  • if user do not configure CD pipeline (GitOps) in Configuration section - use cannot create CD pipeline in Environment page;
  • add lock icon (System Repository) if have app.edp.epam.com/codebaseType: system label;
  • Git Repo relative path available only for github, gitlab integration;
  • add hardcoded field Repository Name;

Repository schema:
cdpipelinename/сdstagename/application-name-values.yaml

image
image
image

Release 0.7.0

Acceptance Criteria:

  • edp-headlamp 0.7.0 released;

Add ECR Registry into registry configuration

apiVersion: v1
kind: ServiceAccount
metadata:
name: tekton
annotations:
eks.amazonaws.com/role-arn: arn:aws:iam::093899590031:role/AWSIRSACoreSandboxEdpDeliveryKaniko

apiVersion: v1
kind: ServiceAccount
metadata:
name: tekton
annotations:
eks.amazonaws.com/role-arn: <ARN_VALUE>

image

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.