Giter Site home page Giter Site logo

krateo's Introduction

Krateo Platformops

Krateo Platformops is an open source tool platform that gives users the capability to create any desired resource on basically any infrastructure they'd like. Be it a K8s cluster, microservice, application, pipeline, database or anything else, Krateo has got your back. The only requirement is for the resource to be descriptible via a YAML file representing the resource's desired state (rings a bell? 😉).

Krateo allows for:

  • Creating any kind of resources within and outside the Kubernetes cluster it runs on: whilst Krateo runs as a Deployment in a Kubernetes cluster, it can also create resources outside the cluster. You can use Krateo to create anything from new Kubernetes clusters, Logstash pipelines, Docker registries, API gateways, and many others.
  • Focusing on the management of services: Krateo frees the user from most of the burden of cluster management, giving them the ability to entirely focus on the services that must be run. This results a phenomenal user experience that drastically reduces wastes of time.
  • Single-handedly monitoring and controlling resources: Krateo also acts as a centralized control plane, letting users monitor anything ranging from CI/CD pipelines to pod statuses and open tickets on your JIRA. All the information you need is present on a single page -- you'll never have to guess the correct dashboard ever again.

Our mission

With Krateo, we aim at putting together many awesome tools from the CNCF landscape to provide our users with a simple-to-use, complete and modular platform that allows for creating resources on any infrastructure. We see Krateo as a powerful tool that improves the workflow of teams by defining clear roles in which the infrastructure team creates the resource templates needed by the developers, and the developers are the final users that use those templates and can manage the lifecycle of the created resources from a simple, unified dashboard.

In our vision, Krateo is:

  • a self-service platform, where users can autonomously choose what to create and where;
  • a complete controlplane that eases and centralizes many processes, putting all the relevant information in a single page rather than distributing it on tens of different locations;
  • a multi-cloud provider tool: it works with all the major cloud providers and with on-prem installations;
  • either managed or easily installable on your existing Kubernetes cluster.

Getting started

You will find whatever you need in the official documentation.

If you want a playground for testing Krateo, give a look at our free self-service lab.

krateo's People

Contributors

braghettos avatar lucasepe avatar mirio 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  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  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

krateo's Issues

Is this project closed ?

It's been nearly 1 year since the last commit! Have you guys stopped building this wonderful tool?

Refresh repository content to centralize v2 info

Is your feature request related to a problem? Please describe.
This repo was initially conceived to host the Krateo v1 CLI but know we would like to use it as a central point where users can find all the info they need to explore Krateo PlatformOps.
The new CLI will be developed in a dedicated repo.

QuickStart Installer Go Panic

Describe the bug
If you attempted to install a fresh cluster, it resulted in a Go panic while waiting for the Vcluster to become ready.

To Reproduce
Steps to reproduce the behavior:

  1. Run curl -L https://github.com/krateoplatformops/krateo/releases/latest/download/kind-vcluster.sh | sh
  2. Wait 120sec
  3. Checkout the installer log
  4. See error

Logs

2024/05/07 08:51:01 executing step with id: install-vcluster (chart)
2024/05/07 08:51:14 DBG [chart:install-vcluster]: set (name: service.type, value: NodePort)
2024/05/07 08:51:14 DBG [chart:install-vcluster]: set (name: service.nodePort, value: 30090)
2024/05/07 08:51:14 DBG [chart:install-vcluster]: set (name: openshift.enable, value: false)
2024/05/07 08:51:14 DBG [chart:install-vcluster]: set (name: securityContext.allowPrivilegeEscalation, value: false)
2024/05/07 08:51:14 DBG [chart:install-vcluster]: set (name: init.manifests, value: apiVersion: v1
ki...)
2024/05/07 08:51:14 DBG [chart:install-vcluster]: set (name: init.helm[0].chart.name, value: installer)
2024/05/07 08:51:14 DBG [chart:install-vcluster]: set (name: init.helm[0].chart.repo, value: https://charts.kr...)
2024/05/07 08:51:14 DBG [chart:install-vcluster]: set (name: init.helm[0].chart.namespace, value: krateo-system)
2024/05/07 08:51:14 DBG [chart:install-vcluster]: set (name: init.helm[0].release.name, value: installer)
2024/05/07 08:51:14 DBG [chart:install-vcluster]: set (name: init.helm[0].release.namespace, value: krateo-system)
2024/05/07 08:51:14 DBG [chart:install-vcluster]: set (name: init.helm[0].values, value: krateoplatformops...)
2024/05/07 08:51:27 DBG: creating 1 resource(s)
2024/05/07 08:51:27 DBG: creating 11 resource(s)
2024/05/07 08:51:28 DBG: beginning wait for 11 resources with timeout of 5m0s
2024/05/07 08:51:29 DBG: Deployment is not ready: krateo-system/vcluster-k8s. observedGeneration (0) does not match spec generation (1).
2024/05/07 08:51:30 DBG: Deployment is not ready: krateo-system/vcluster-k8s. 0 out of 1 expected pods are ready
...
2024/05/07 08:56:16 DBG: Deployment is not ready: krateo-system/vcluster-k8s. 0 out of 1 expected pods are ready
2024/05/07 08:56:18 DBG: Deployment is not ready: krateo-system/vcluster-k8s. 0 out of 1 expected pods are ready
[controller-runtime] log.SetLogger(...) was never called; logs will not be displayed.
Detected at:
	>  goroutine 652 [running]:
	>  runtime/debug.Stack()
	>  	/usr/local/go/src/runtime/debug/stack.go:24 +0x5e
	>  sigs.k8s.io/controller-runtime/pkg/log.eventuallyFulfillRoot()
	>  	/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/log/log.go:60 +0xcd
	>  sigs.k8s.io/controller-runtime/pkg/log.(*delegatingLogSink).Enabled(0xc0003c7800, 0x10?)
	>  	/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/log/deleg.go:111 +0x32
	>  github.com/go-logr/logr.Logger.Info({{0x2496820?, 0xc0003c7800?}, 0xc0007217a8?}, {0xc000e90450, 0x2b}, {0xc000d92120, 0x6, 0x6})
	>  	/go/pkg/mod/github.com/go-logr/[email protected]/logr.go:276 +0x72
	>  sigs.k8s.io/controller-runtime/pkg/internal/recorder.(*Provider).getBroadcaster.func1.1(0xc000246000)
	>  	/go/pkg/mod/sigs.k8s.io/[email protected]/pkg/internal/recorder/recorder.go:104 +0x1e7
	>  k8s.io/client-go/tools/record.(*eventBroadcasterImpl).StartEventWatcher.func1()
	>  	/go/pkg/mod/k8s.io/[email protected]/tools/record/event.go:401 +0x11d
	>  created by k8s.io/client-go/tools/record.(*eventBroadcasterImpl).StartEventWatcher in goroutine 79
	>  	/go/pkg/mod/k8s.io/[email protected]/tools/record/event.go:387 +0x109

VCluster Log:

2024-05-07 09:18:31	INFO	event.coredns-68bdd584b4-pc2sz.17cd2a455a961714	syncer/syncer.go:146	create virtual event kube-system/coredns-68bdd584b4-pc2sz.17cd2a455a961714	{"component": "vcluster"}
2024-05-07 09:21:15	ERROR	handler/handler.go:49	Error while proxying request: context canceled	{"component": "vcluster"}
2024-05-07 09:21:15	ERROR	filters/timeout.go:142	post-timeout activity - time-elapsed: 9.364108ms, GET "/readyz" result: <nil>	{"component": "vcluster"}
2024-05-07 09:21:16	INFO	pod.coredns-68bdd584b4-pc2sz	syncer/syncer.go:134	update virtual pod kube-system/coredns-68bdd584b4-pc2sz, because status has changed	{"component": "vcluster"}

Server (please complete the following information):

  • OS: Almalinux 9
  • Helm: v3.14.4
  • Kind: v0.22.0

definition type string

If you have something like this

 organization:
     description: Organization
     type: string

the cli ignores the field

default values + config file name

  • krateo config core saves the file with name "module-core.cfg", but krateo install core search a file named "krateo-module-core.cfg"
  • krateo config core wants the explicit tag -t for the repo Url, if it is not specified must be use the default https://github.com/krateoplatformops

Predictable Load Balancer names

Is your feature request related to a problem? Please describe.

I am installing Krateo on a digital ocean managed kubernetes environment. Installation goes fine, happy days, the load balancer is created.

Now I want to assign an A record to the load balancer public IP address, but I need to consult the cloud provider console in order to find it.

Describe the solution you'd like

I would like to be able to give the load balancer a name via a command-line flag or configuration file.

Describe alternatives you've considered

I haven't tried any alternatives. From browsing the code here, I can't tell if it's possible.

A possible alternative is to tell krateo to use an existing load balancer that I've already created.

Additional context

This is being done in the context of a small personal demo using Terraform:

# LB created by krateo.
data "digitalocean_loadbalancer" "krateo" {
  depends_on = [null_resource.k_install]
  # id         = "d72d4916-9023-4616-b292-33032dda4799" # <- obtained from the console
  name = "a377b25f30a4149538465e330ca32e50" # <- obtained from the console.
}

resource "cloudflare_record" "k" {
  zone_id = data.cloudflare_zone.k.id
  type    = "A"
  name    = var.krateo_endpoint
  value   = data.digitalocean_loadbalancer.krateo.ip
}

RBAC permission missing after krateo and installation of module-core

Hi,
as the title says, after initializing the cluster through krateo init via CLI i tried to install Krateo-module-core (development branch; which includes argo-cd) and when the module tries to deploy the required objects to deploy an instance of ArgoCD I got the following RBAC permissions errors:

Events:
  Type     Reason                   Age                From                                                             Message
  ----     ------                   ----               ----                                                             -------
  Warning  ComposeResources         78s (x3 over 79s)  defined/compositeresourcedefinition.apiextensions.crossplane.io  cannot render composed resource from resource template at index 4: cannot use dry-run create to name composed resource: tokens.argocd.krateoplatformops.io is forbidden: User "system:serviceaccount:crossplane-system:crossplane" cannot create resource "tokens" in API group "argocd.krateoplatformops.io" at the cluster scope
  Warning  ComposeResources         78s (x3 over 79s)  defined/compositeresourcedefinition.apiextensions.crossplane.io  cannot apply composed resource: cannot get object: providerconfigs.argocd.krateoplatformops.io "krateo-module-core-6j7tt-provider-argocd-providerconfig" is forbidden: User "system:serviceaccount:crossplane-system:crossplane" cannot get resource "providerconfigs" in API group "argocd.krateoplatformops.io" at the cluster scope

To reproduce this situation please run the following 3 steps:

krateo installation fails with error author field is required

installing krateo on a local kubernetes cluste the core installation fails with following output
the github repository is empty

root@NBK-FPACE:/krateo# krateo install core -r https://github.com/xxx -t xxxxx
[debug] pulled 'krateo-package-module-core.yaml' (rev: 0b54fa87)
[debug]
[debug] apiVersion: pkg.crossplane.io/v1
[debug] kind: Configuration
[debug] metadata:
[debug] name: krateo-module-core
[debug] spec:
[debug] package: ghcr.io/krateoplatformops/krateo-module-core:latest
[debug] packagePullPolicy: Always
[debug] revisionActivationPolicy: Automatic
[debug] revisionHistoryLimit: 1
[debug]
[error] author field is required

Quickstart problems

Describe the bug
I've tried the new krateo installer, but I've got some answers:

  • In the UI, only the link to the templates' tab is visible; I assume there are others, correct?
  • If you submit a template, you receive a success message, but nothing changes.
  • It's unclear why there are mobile device cards in the templates.

To Reproduce
Steps to reproduce the behavior:

  1. Install Krateo
  2. Access the UI

Screenshots
Screenshot 2024-04-24 alle 15 29 12

Desktop (please complete the following information):

  • OS: MacOS Ventura 13.2.1
  • Browser Chrome
  • Version 124.0.6367.62

Update quickstart for Krateo 2 beta release

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Move quickstarts to new Krateo PlatformOps installer

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Problem with using ldap connection to active directory

Hello,
https://docs.krateo.io/app/app-settings/#authentication
I am trying to set up authentication via Active directory and I get an error:

Logs form auth-service pod

2023-02-03T10:52:48.917Z info: /user - GET - ::ffff:172.30.3.4
2023-02-03T10:52:48.921Z info: /strategy - GET - ::ffff:172.30.3.4
2023-02-03T10:55:22.910Z info: /strategy - POST - ::ffff:172.30.3.4
2023-02-03T10:55:26.518Z info: /auth/logout - GET - ::ffff:172.30.3.4
2023-02-03T10:55:26.587Z info: /user - GET - ::ffff:172.30.3.4
2023-02-03T10:55:37.114Z info: /auth/ldap - POST - ::ffff:172.30.3.4
2023-02-03T10:55:37.187Z error: /auth/ldap - Cannot read properties of undefined (reading 'url')

Do you have an example of a complete ldap configuration?

Fix CI to push scripts

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Desktop (please complete the following information):

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

Install prompts for git-token and git-url flags - no documentation

I just did a clean install on my Mac using brew and when I run
krater install core
I get an error requesting the git-* flags
[error] required flag(s) "git-token", "git-url" not set

I can see there was historical documentation of these flags in the INSTALL.md but it was recently removed.

Is the brew installer out of sync with the docs? or is something else going on?

Update scripts

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

Bump krateo components version

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

Describe the solution you'd like
A clear and concise description of what you want to happen.

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.

Additional context
Add any other context or screenshots about the feature request here.

bug: CRD schema does not match with defined value.schema.json

Describe the bug
Once the CompositionDefinition is installed on the cluster, the CRD schema generated does not match with the one defined in value.schema.json.

To Reproduce
Steps to reproduce the behavior:

  1. Install Krateo v2.0.0 cluster with kind
  2. Apply the following CompositionDefinition
apiVersion: core.krateo.io/v1alpha1
kind: CompositionDefinition
metadata:
  annotations:
    krateo.io/connector-verbose: "true"
    meta.helm.sh/release-namespace: krateo-system
  labels:
    app.kubernetes.io/managed-by: Helm
  name: x
  namespace: demo-system
spec:
  chart:
    url: https://github.com/alfredo-milani-kiratech/krateo-v2-template-fireworksapp/releases/download/0.0.10/x-app-0.0.10.tgz
  deletionPolicy: Delete
  1. The CRD on the cluster shows:
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.14.0
  creationTimestamp: "2024-05-10T10:40:13Z"
  generation: 1
  name: xapps.composition.krateo.io
  resourceVersion: "738"
  uid: 53b8c5a2-85e6-4878-9e3a-1fbb1f6e9ff7
spec:
  conversion:
    strategy: None
  group: composition.krateo.io
  names:
    categories:
    - compositions
    - comps
    kind: Xapp
    listKind: XappList
    plural: xapps
    singular: xapp
  scope: Namespaced
  versions:
  - name: v0-0-10
    schema:
      openAPIV3Schema:
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
            type: string
          kind:
            description: |-
              Kind is a string value representing the REST resource this object represents.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          spec:
            properties:
              app:
                properties:
                  env:
                    default: dev
                    type: string
                  svc:
                    default: false
                    type: boolean
                required:
                - env
                - svc
                type: object
              deletionPolicy:
                default: Delete
                description: |-
                  DeletionPolicy specifies what will happen to the underlying external
                  when this managed resource is deleted - either "Delete" or "Orphan" the
                  external resource.
                enum:
                - Orphan
                - Delete
                type: string
              infra:
                properties:
                  env:
                    default: dev
                    type: string
                  svc:
                    default: false
                    type: boolean
                required:
                - env
                - svc
                type: object
            required:
            - app
            - infra
            type: object
        type: object
    served: true
    storage: true
status:
  acceptedNames:
    categories:
    - compositions
    - comps
    kind: Xapp
    listKind: XappList
    plural: xapps
    singular: xapp
  conditions:
  - lastTransitionTime: "2024-05-10T10:40:13Z"
    message: no conflicts found
    reason: NoConflicts
    status: "True"
    type: NamesAccepted
  - lastTransitionTime: "2024-05-10T10:40:13Z"
    message: the initial names have been accepted
    reason: InitialNamesAccepted
    status: "True"
    type: Established
  storedVersions:
  - v0-0-10

while the value.schema.json defined is:

{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema",
  "required": [
    "infra",
    "app"
  ],
  "properties": {
    "infra": {
      "type": "object",
      "title": "Helm Chart parameters section",
      "required": [
        "env",
        "svc"
      ],
      "properties": {
        "env": {
          "type": [
            "string"
          ],
          "title": "Helm Chart service parameters section",
          "default": "dev"
        },
        "svc": {
          "type": [
            "boolean"
          ],
          "title": "Helm Chart service parameters section",
          "default": false
        }
      }
    },
    "app": {
      "type": "object",
      "title": "Helm Chart parameters section",
      "required": [
        "service"
      ],
      "properties": {
        "service": {
          "type": "object",
          "title": "Helm Chart service parameters section",
          "required": [
            "type",
            "port"
          ],
          "properties": {
            "type": {
              "type": [
                "string",
                "boolean",
                "number",
                "object",
                "array"
              ],
              "enum": [
                "NodePort",
                "LoadBalancer"
              ],
              "title": "Helm Chart service type",
              "default": "NodePort"
            },
            "port": {
              "type": "integer",
              "minimum": 30000,
              "maximum": 32767,
              "title": "Helm Chart service port",
              "default": "31180"
            }
          }
        }
      }
    }
  }
}

Errore 500 in fase di import template

Buongiorno,
ho installato Krateo su GKE; al primo accesso dopo aver configurato gli endpoint (tra cui GitHub) e procedendo con il test di importazione di un template ( template-awsstack) compare l'errore 500.
Come è possibile risolvere? Può essere legato all'utente guest che non è autorizzato?

Grazie

M.F.

Blocking deployment creation if already existing

Describe the bug
Once you deploy a template (whatever template you use) with a name already used, the creation is not blocked, and the deployment is replaced.

To Reproduce
Steps to reproduce the behaviour:

  1. Go to Krateo UI
  2. Click on Templates
  3. Select a template
  4. Insert a name in the input text (equal to a previous one already deployed).
  5. The creation is done; nevertheless, the deployment with the same name exists

Expected behavior
I would like a block message saying something like this: "A deployment with the same name already exists; try another name".

Desktop (please complete the following information):

  • Browser chrome

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.