Kyma Project

repository·main·Indexed 11 days ago

https://github.com/kyma-project/kyma

A modular, Kubernetes-based platform for building enterprise-grade cloud-native applications. It provides building blocks including serverless functions, service mesh (Istio), API management, and eventing. Kyma features a modular architecture where components are managed via Custom Resources (CR) and Operators, and is available as both an open-source project and a managed service via SAP BTP, Kyma runtime.

Tokens
10.5K
Snippets
34
Records
68
Agent score
75%

What's inside Kyma

  1. Overview of the Kyma Common Package

    main
    The Kyma Common Package is a collection of Go libraries designed to implement shared use cases across various Kyma components. Its purpose is to provide standardized, pre-solved solutions to common problems, ensuring consistency and reducing the maintenance overhead that arises from different components implementing the same logic in different ways.
  2. Overview of the Makefiles directory

    main
    The makefiles directory in the Kyma repository provides reusable Makefile fragments containing common targets used across various Kyma components. These files are designed to be included in component-specific Makefiles to standardize tasks like Docker image building and Go component management.
  3. What is Kyma?

    main

    Kyma is an opinionated set of Kubernetes-based modular building blocks designed to help developers develop and run enterprise-grade cloud-native applications. It provides the necessary capabilities to extend and connect third-party and SAP services and systems by abstracting infrastructure and focusing on microservice-driven business logic.

    Key features include:

    • Accelerated cloud-native development: Uses pre-integrated modules built on technologies like Istio, NATS, and OpenTelemetry.
    • Infrastructure abstraction: Allows developers to focus on applications rather than managing underlying infrastructure.
    • Ecosystem integration: Serves as a runtime for extending and connecting various services.
    • Security and maintenance: Provides a maintained environment composed of modules to reduce tool selection complexity.
    • Enterprise-grade reliability: Combines developer agility with production-grade reliability.
    • Openness: Built on vendor-neutral architecture with community support.
  4. Identify the available Kyma user interfaces

    main

    Kyma provides two primary interfaces for interaction and management:

    1. Kyma dashboard: A web-based administrative UI designed for managing basic Kubernetes resources.
    2. Kyma CLI: A command-line interface used to execute Kyma-specific tasks, such as performing installations or upgrades.
  5. Understand the VitePress Project Structure

    main

    The Kyma documentation is built using VitePress and is organized into several key areas:

    • .vitepress/: Contains the core configuration, custom themes, global styles, and custom Vue components.
    • docs/: The primary content directory, including index.md (the landing page) and external-content/ (aggregated content from other repositories).
    • public/: A temporary directory for assets that will be propagated to the website. This folder is managed by move-to-public.sh and should be cleared before each build.
    • workflows/: Contains GitHub Actions for automated deployment.
  6. Overview of Kyma modular architecture

    main

    Kyma is a set of Kubernetes-based modular building blocks designed for developing and running enterprise-grade cloud-native applications.

    Important Change: Kyma has transitioned from a monolithic installation to a modular architecture. Global Kyma releases are discontinued. Instead, functionality is delivered via individual Kyma modules. This allows you to add or delete specific modules (e.g., Serverless, Istio, API Gateway) without installing the entire Kyma stack. You can use these modules in your own Kubernetes cluster or via the managed SAP BTP Kyma runtime.

  7. Understand the Makefiles directory structure

    main

    The makefiles directory is organized into the following structure:

    • docs/: Contains documentation related to the Makefiles.
    • docker.mk: A Makefile fragment specifically for Docker-related tasks.
    • generic-make-go.mk: A Makefile fragment designed for Go components and their associated Dockerfiles.
    ├── docs                  # Documentation for Makefiles
    ├── docker.mk             # Makefile for Docker
    └── generic-make-go.mk    # Makefile for Go components and Dockerfiles
  8. Understand the Kyma modular architecture

    main

    Kyma uses a modular approach where you can install only the specific components required for your use case rather than a predefined set.

    Each module consists of:

    1. A Custom Resource (CR): Holds your desired configuration.
    2. An Operator: Reconciles the configuration defined in the Custom Resource to ensure the module is running as specified.

    You can add modules at any time, or delete them to free up cluster resources. For specific instructions on installation, uninstallation, or upgrading, refer to the Quick Install or Uninstall/Upgrade guides.

  9. Available Kyma modules and capabilities

    main

    Kyma provides several specialized modules to extend Kubernetes capabilities:

    • Serverless: A development platform for running lightweight, scalable Functions.
    • System connectivity (Application Connector Manager): Provides endpoints to securely register external application APIs and Events.
    • Istio: Handles service-to-service communication and proxying.
    • Service Management (BTP Manager): Enables usage of built-in cloud services from providers like GCP, Azure, and AWS.
    • API Gateway: Provides secure API exposure.
    • Telemetry Manager: Collects and ships telemetry data to observability backends.
    • CLI & UI: Tools to connect and manage applications within a Kubernetes cluster.
  10. How buildpack-mounted rules work

    main

    The generic Makefile uses BUILDPACK_FUNCTIONS to dynamically generate rules.

    When a rule is added to MOUNT_TARGETS, the buildpack-mount function creates a wrapper rule. This wrapper rule runs a Docker container, mounts your component's directory as a volume, and then executes the corresponding -local rule inside that container.

    Example of a generated rule structure:

    resolve:
        @echo make resolve
        @docker run $(DOCKER_INTERACTIVE) \
            -v $(COMPONENT_DIR):$(WORKSPACE_COMPONENT_DIR):delegated \
            $(DOCKER_CREATE_OPTS) make resolve-local

    Available functions:

    • buildpack-mount: Creates a rule that mounts the component's directory as a volume.
    • buildpack-cp-ro: Creates a rule that copies component files to a Docker container.
  11. Understand Kyma terminology: Function vs Microservice

    main

    Kyma provides two primary ways to run logic:

    • Function: A serverless code snippet (Node.js or Python) based on the Function custom resource. Functions are executed only when triggered by an event or an API call and do not require manual server management. They can be bound to service instances.
    • Microservice: A containerized, always-running unit of code. Unlike Functions, microservices are independently deployable, loosely coupled, and typically communicate via APIs. They remain reachable even as Pods move.
  12. Understand Kyma terminology: Service vs service

    main

    Kyma documentation distinguishes between these two terms:

    • Service: Refers specifically to the Kubernetes object used to expose an application running on Pods as a network service.
    • service: Refers to a software functionality in a general sense.