README

Go Report Card CII Best Practices Slack Twitter

Overview

Kyma /kee-ma/ is a platform for extending applications with microservices and serverless Functions. It provides CLI and UI through which you can connect your application to a Kubernetes cluster. You can also expose the application's API or events securely thanks to the built-in Application Connector. You can then implement the business logic you require by creating microservices or serverless Functions. Trigger them to react to particular events or calls to your application's API.

To limit the time spent on coding, use the built-in cloud services from Service Catalog, exposed by Service Brokers from such cloud providers as GCP, Azure, and AWS.

Go to the Kyma project website to learn more about our project, its features, and components.

Installation

Install Kyma locally or on a cluster. See the Installation guides for details.

Usage

Kyma comes with the ready-to-use code snippets that you can use to test the extensions and the core functionality. See the list of existing examples in the examples repository.

Development

Develop on your remote repository forked from the original repository in Go. See the example that uses the console-backend-service project located in the components directory but applies to any Go project. This set of instructions uses the recommended git workflow and the general contribution flow. Read also the CONTRIBUTING.md document that includes the contributing rules specific for this repository.

Follow these steps:

NOTE: The example assumes you have the $GOPATH already set.

  1. Fork the repository in GitHub.

  2. Clone the fork to your $GOPATH workspace. Use this command to create the folder structure and clone the repository under the correct location:

    git clone git@github.com:{GitHubUsername}/kyma.git $GOPATH/src/github.com/kyma-project/kyma
    

    Follow the steps described in the git-workflow.md document to configure your fork.

  3. Install dependencies.

    Go to the main directory of the project in your workspace location and install the required dependencies:

    cd components/console-backend-service
    dep ensure -vendor-only
    
  4. Build the project.

    Every project runs differently. Follow instructions in the main README.md document of the given project to build it.

  5. Create a branch and start to develop.

    Do not forget about creating unit and acceptance tests if needed. For the unit tests, follow the instructions specified in the main README.md document of the given project. For the details concerning the acceptance tests, go to the corresponding directory inside the tests directory. Find the information on how to run changes on the cluster without a Docker image in the Develop a service locally without using Docker document.

  6. Test your changes.

    NOTE: For more details about testing, go to the Testing Kyma document.

Kyma users

Read how these companies use Kyma:

SAP Accenture NETCONOMY neteleven

ARITHNEA Digital Lights FAIR FAIR

Arineo dotSource

Expand ▾ Collapse ▴

Directories

Path Synopsis
components/apiserver-proxy/cmd/proxy
components/apiserver-proxy/cmd/proxy/reload
components/apiserver-proxy/internal/authn
components/apiserver-proxy/internal/authz
components/apiserver-proxy/internal/monitoring
components/apiserver-proxy/internal/proxy
components/apiserver-proxy/internal/spdy
components/application-broker/cmd/broker
components/application-broker/cmd/poc-events
components/application-broker/cmd/poc-finalizers
components/application-broker/internal
components/application-broker/internal/access
components/application-broker/internal/access/automock Code generated by mockery v1.0.0 Code generated by mockery v1.0.0
components/application-broker/internal/broker
components/application-broker/internal/broker/automock Code generated by mockery v1.0.0
components/application-broker/internal/broker/testing
components/application-broker/internal/config
components/application-broker/internal/director
components/application-broker/internal/istio
components/application-broker/internal/knative
components/application-broker/internal/mapping
components/application-broker/internal/mapping/automock
components/application-broker/internal/nsbroker
components/application-broker/internal/nsbroker/automock Code generated by mockery v1.0.0 Code generated by mockery v1.0.0
components/application-broker/internal/servicecatalog
components/application-broker/internal/storage
components/application-broker/internal/storage/driver/memory
components/application-broker/internal/storage/populator
components/application-broker/internal/storage/populator/automock Code generated by mockery v1.0.0 Code generated by mockery v1.0.0
components/application-broker/internal/storage/testing Package testing provides test functions for storage.
components/application-broker/internal/syncer
components/application-broker/internal/syncer/automock
components/application-broker/pkg/apis/applicationconnector/v1alpha1 +groupName=applicationconnector.kyma-project.io
components/application-broker/pkg/client/clientset/versioned This package has the automatically generated clientset.
components/application-broker/pkg/client/clientset/versioned/fake This package has the automatically generated fake clientset.
components/application-broker/pkg/client/clientset/versioned/scheme This package contains the scheme of the automatically generated clientset.
components/application-broker/pkg/client/clientset/versioned/typed/applicationconnector/v1alpha1 This package has the automatically generated typed clients.
components/application-broker/pkg/client/clientset/versioned/typed/applicationconnector/v1alpha1/fake Package fake has the automatically generated clients.
components/application-broker/pkg/client/informers/externalversions
components/application-broker/pkg/client/informers/externalversions/applicationconnector
components/application-broker/pkg/client/informers/externalversions/applicationconnector/v1alpha1
components/application-broker/pkg/client/informers/externalversions/internalinterfaces
components/application-broker/pkg/client/listers/applicationconnector/v1alpha1
components/application-broker/platform/idprovider
components/application-broker/platform/logger Package logger is responsible for logging.
components/application-broker/platform/logger/spy Package spy provides an implementation of go-sdk.logger that helps test logging.
components/application-broker/platform/time Package time provide features which supplements standard time package.
components/application-broker/third_party/machinebox/graphql Package graphql provides a low level GraphQL client.
components/event-service/cmd/eventservice
components/event-service/internal/events/api
components/event-service/internal/events/api/v1
components/event-service/internal/events/mesh
components/event-service/internal/events/shared
components/event-service/internal/events/subscribed
components/event-service/internal/events/subscribed/mocks
components/event-service/internal/externalapi
components/event-service/internal/externalapi/mocks
components/event-service/internal/httpconsts
components/event-service/internal/httperrors
components/event-service/internal/httptools
components/event-service/internal/testing
components/event-sources/adapter/http
components/event-sources/apis/sources
components/event-sources/apis/sources/v1alpha1 Package v1alpha1 contains the definition of custom API objects.
components/event-sources/client/generated/clientset/internalclientset This package has the automatically generated clientset.
components/event-sources/client/generated/clientset/internalclientset/fake This package has the automatically generated fake clientset.
components/event-sources/client/generated/clientset/internalclientset/scheme This package contains the scheme of the automatically generated clientset.
components/event-sources/client/generated/clientset/internalclientset/typed/sources/v1alpha1 This package has the automatically generated typed clients.
components/event-sources/client/generated/clientset/internalclientset/typed/sources/v1alpha1/fake Package fake has the automatically generated clients.
components/event-sources/client/generated/informer/externalversions
components/event-sources/client/generated/informer/externalversions/internalinterfaces
components/event-sources/client/generated/informer/externalversions/sources
components/event-sources/client/generated/informer/externalversions/sources/v1alpha1
components/event-sources/client/generated/injection/client
components/event-sources/client/generated/injection/client/fake
components/event-sources/client/generated/injection/informers/factory
components/event-sources/client/generated/injection/informers/factory/fake
components/event-sources/client/generated/injection/informers/sources/v1alpha1/httpsource
components/event-sources/client/generated/injection/informers/sources/v1alpha1/httpsource/fake
components/event-sources/client/generated/injection/istio/client
components/event-sources/client/generated/injection/istio/client/fake
components/event-sources/client/generated/injection/istio/informers/factory
components/event-sources/client/generated/injection/istio/informers/factory/fake
components/event-sources/client/generated/lister/sources/v1alpha1
components/event-sources/cmd/controller-manager
components/event-sources/cmd/http-adapter
components/event-sources/reconciler/errors Package errors contains custom error types and error utilities for reconcilers.
components/event-sources/reconciler/httpsource Package httpsource implements a controller for the HTTPSource custom resource.
components/event-sources/reconciler/object Package object contains utilities for creating and comparing API objects.
components/event-sources/reconciler/testing
components/iam-kubeconfig-service
components/iam-kubeconfig-service/cmd/generator
components/iam-kubeconfig-service/cmd/generator/reload
components/iam-kubeconfig-service/internal/authn
components/iam-kubeconfig-service/pkg/kube_config
components/k8s-dashboard-proxy/cmd/reverseproxy
components/k8s-dashboard-proxy/util
components/uaa-activator
components/uaa-activator/internal/ctxutil
components/uaa-activator/internal/dex
components/uaa-activator/internal/repeat
components/uaa-activator/internal/scheduler
components/uaa-activator/internal/uaa
tests/application-connector-tests/test/applicationaccess
tests/application-connector-tests/test/testkit
tests/application-connector-tests/test/testkit/connector
tests/application-connector-tests/test/testkit/services
tests/application-connector-tests/test/testkit/util
tests/application-gateway-legacy-tests/test/executor
tests/application-gateway-legacy-tests/test/executor/proxy
tests/application-gateway-legacy-tests/test/executor/proxy/mock
tests/application-gateway-legacy-tests/test/executor/testkit/registry
tests/application-gateway-legacy-tests/test/executor/testkit/util
tests/application-gateway-legacy-tests/test/helmtest
tests/application-gateway-legacy-tests/test/helmtest/proxy
tests/application-gateway-legacy-tests/test/tools
tests/application-registry-tests/test/testkit
tests/compass-runtime-agent/test/mock
tests/compass-runtime-agent/test/runtimeagent
tests/compass-runtime-agent/test/testkit
tests/compass-runtime-agent/test/testkit/applications
tests/compass-runtime-agent/test/testkit/assertions
tests/compass-runtime-agent/test/testkit/authentication
tests/compass-runtime-agent/test/testkit/compass
tests/compass-runtime-agent/test/testkit/kymaconfig
tests/compass-runtime-agent/test/testkit/secrets Package secrets contains components for accessing/modifying client secrets
tests/compass-runtime-agent/test/testkit/util
tests/console-backend-service
tests/console-backend-service/internal/client
tests/console-backend-service/internal/configurer
tests/console-backend-service/internal/domain/application
tests/console-backend-service/internal/domain/eventing
tests/console-backend-service/internal/domain/serverless
tests/console-backend-service/internal/domain/servicecatalog
tests/console-backend-service/internal/domain/servicecatalogaddons
tests/console-backend-service/internal/domain/shared
tests/console-backend-service/internal/domain/shared/auth
tests/console-backend-service/internal/domain/shared/fixture
tests/console-backend-service/internal/domain/shared/setup
tests/console-backend-service/internal/domain/shared/wait
tests/console-backend-service/internal/graphql
tests/console-backend-service/internal/mockice
tests/console-backend-service/internal/module
tests/console-backend-service/internal/resource
tests/console-backend-service/pkg/exit
tests/console-backend-service/pkg/injector
tests/console-backend-service/pkg/retrier
tests/console-backend-service/pkg/waiter
tests/end-to-end/external-solution-integration/cmd/runner
tests/end-to-end/external-solution-integration/internal
tests/end-to-end/external-solution-integration/internal/example_schema
tests/end-to-end/external-solution-integration/internal/http
tests/end-to-end/external-solution-integration/internal/scenario
tests/end-to-end/external-solution-integration/internal/scenario/compass
tests/end-to-end/external-solution-integration/internal/scenario/connectivity_adapter
tests/end-to-end/external-solution-integration/internal/scenario/event_mesh
tests/end-to-end/external-solution-integration/internal/scenario/event_mesh_evaluate
tests/end-to-end/external-solution-integration/internal/scenario/event_mesh_prepare
tests/end-to-end/external-solution-integration/internal/scenario/send_and_check_event
tests/end-to-end/external-solution-integration/pkg/helpers
tests/end-to-end/external-solution-integration/pkg/retry
tests/end-to-end/external-solution-integration/pkg/step
tests/end-to-end/external-solution-integration/pkg/testkit
tests/end-to-end/external-solution-integration/pkg/testsuite
tests/end-to-end/upgrade
tests/end-to-end/upgrade/internal/platform/logger Package logger is responsible for logging.
tests/end-to-end/upgrade/internal/platform/signal
tests/end-to-end/upgrade/internal/runner
tests/end-to-end/upgrade/pkg/dynamicresource
tests/end-to-end/upgrade/pkg/fetch-dex-token
tests/end-to-end/upgrade/pkg/injector Copied from: https://github.com/kyma-project/kyma/tree/master/tests/console-backend-service/pkg/injector because right now it cannot be vendored because controller-runtime and kubernetes version does not match we need to wait until the Helm Broker and CBS will we both at the same k8s and controller-runtime version
tests/end-to-end/upgrade/pkg/tests/api-gateway
tests/end-to-end/upgrade/pkg/tests/application-operator
tests/end-to-end/upgrade/pkg/tests/eventmesh
tests/end-to-end/upgrade/pkg/tests/eventmesh/helpers
tests/end-to-end/upgrade/pkg/tests/hello-world
tests/end-to-end/upgrade/pkg/tests/logging
tests/end-to-end/upgrade/pkg/tests/logging/pkg/jwt
tests/end-to-end/upgrade/pkg/tests/logging/pkg/logstream
tests/end-to-end/upgrade/pkg/tests/monitoring
tests/end-to-end/upgrade/pkg/tests/monitoring/prom
tests/end-to-end/upgrade/pkg/tests/rafter
tests/end-to-end/upgrade/pkg/tests/serverless
tests/end-to-end/upgrade/pkg/tests/service-catalog
tests/end-to-end/upgrade/pkg/tests/ui
tests/end-to-end/upgrade/pkg/waiter
tests/integration/apiserver-proxy/fetch-token
tests/integration/apiserver-proxy/fetch-token/internal
tests/integration/dex/dex
tests/integration/event-service/test
tests/integration/logging
tests/integration/logging/pkg/jwt
tests/integration/logging/pkg/logstream
tests/integration/monitoring
tests/integration/monitoring/prom
tests/rafter/pkg/fileclient
tests/rafter/pkg/mockice
tests/rafter/pkg/namespace
tests/rafter/pkg/resource
tests/rafter/pkg/retry
tests/rafter/testsuite
tests/service-catalog/cmd/env-tester
tests/service-catalog/cmd/env-tester/dto
tests/service-catalog/utils/istio
tests/service-catalog/utils/repeat
tests/service-catalog/utils/report
tests/service-catalog/utils/retriever
tools/failery
tools/failery/cmd/failery
tools/failery/failery
tools/failery/failery/fixtures
tools/failery/failery/fixtures/buildtag/comment
tools/failery/failery/fixtures/buildtag/filename
tools/failery/failery/fixtures/http
tools/failery/failery/fixtures/test