bookstore

module
v0.0.0-...-4b75dde Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 15, 2023 License: Apache-2.0

README

⚠️ The OSM project has been officially archived by the CNCF. There will be no more new development on any repo under the OpenServiceMesh organization.⚠️


Open Service Mesh (OSM)

build report codecov release

Open Service Mesh (OSM) is a lightweight, extensible, cloud native service mesh that allows users to uniformly manage, secure, and get out-of-the-box observability features for highly dynamic microservice environments.

The OSM project builds on the ideas and implementations of many cloud native ecosystem projects including Linkerd, Istio, Consul, Envoy, Kuma, Helm, and the SMI specification.

Table of Contents

Overview

OSM runs an Envoy based control plane on Kubernetes, can be configured with SMI APIs, and works by injecting an Envoy proxy as a sidecar container next to each instance of your application. The proxy contains and executes rules around access control policies, implements routing configuration, and captures metrics. The control plane continually configures proxies to ensure policies and routing rules are up to date and ensures proxies are healthy.

Core Principles
  1. Simple to understand and contribute to
  2. Effortless to install, maintain, and operate
  3. Painless to troubleshoot
  4. Easy to configure via Service Mesh Interface (SMI)
Documentation

Documentation pertaining to the usage of Open Service Mesh is made available at docs.openservicemesh.io.

Documentation pertaining to development, release workflows, and other repository specific documentation, can be found in the docs folder.

Features
  1. Easily and transparently configure traffic shifting for deployments
  2. Secure service to service communication by enabling mTLS
  3. Define and execute fine grained access control policies for services
  4. Observability and insights into application metrics for debugging and monitoring services
  5. Integrate with external certificate management services/solutions with a pluggable interface
  6. Onboard applications onto the mesh by enabling automatic sidecar injection of Envoy proxy
Project status

Attention: ⚠️ The OSM project has been officially archived. Please reference PR Proposal: OSM for Project Archive ⚠️

Support

See SUPPORT

SMI Specification support
Kind SMI Resource Supported Version Comments
TrafficTarget traffictargets.access.smi-spec.io v1alpha3
HTTPRouteGroup httproutegroups.specs.smi-spec.io v1alpha4
TCPRoute tcproutes.specs.smi-spec.io v1alpha4
UDPRoute udproutes.specs.smi-spec.io not supported
TrafficSplit trafficsplits.split.smi-spec.io v1alpha2
TrafficMetrics *.metrics.smi-spec.io v1alpha1 🚧 In Progress 🚧

OSM Design

Read more about OSM's high level goals, design, and architecture.

Install

Prerequisites
  • Kubernetes cluster running an active Kubernetes releases. The range of supported Kubernetes versions is defined in the OSM Helm chart.
  • kubectl current context is configured for the target cluster install
    • kubectl config current-context
Get the OSM CLI

The simplest way of installing Open Service Mesh on a Kubernetes cluster is by using the osm CLI.

Download the osm binary from the Releases page. Unpack the osm binary and add it to $PATH to get started.

sudo mv ./osm /usr/local/bin/osm
Install OSM
$ osm install

OSM Install Demo

See the installation guide for more detailed options.

Demonstration

The OSM Bookstore demo is a step-by-step walkthrough of how to install a bookbuyer and bookstore apps, and configure connectivity between these using SMI.

Using OSM

After installing OSM, onboard a microservice application to the service mesh.

OSM Usage Patterns
  1. Traffic Management
  2. Observability
  3. Certificates
  4. Sidecar Injection

Community

Connect with the Open Service Mesh community:

Development Guide

If you would like to contribute to OSM, check out the development guide.

Code of Conduct

This project has adopted the CNCF Code of Conduct. See CODE_OF_CONDUCT.md for further details.

License

This software is covered under the Apache 2.0 license. You can read the license here.

Directories

Path Synopsis
ci
cmd
cmd
cli
osm-bootstrap
Package main implements the main entrypoint for osm-bootstrap and utility routines to bootstrap the various internal components of osm-bootstrap.
Package main implements the main entrypoint for osm-bootstrap and utility routines to bootstrap the various internal components of osm-bootstrap.
osm-controller
Package main implements the main entrypoint for osm-controller and utility routines to bootstrap the various internal components of osm-controller.
Package main implements the main entrypoint for osm-controller and utility routines to bootstrap the various internal components of osm-controller.
osm-healthcheck
Package main implements the main entrypoint for osm-healthcheck.
Package main implements the main entrypoint for osm-healthcheck.
osm-injector
Package main implements the main entrypoint for osm-injector and utility routines to bootstrap the various internal components of osm-injector.
Package main implements the main entrypoint for osm-injector and utility routines to bootstrap the various internal components of osm-injector.
demo
cmd/bookbuyer
Package main implements the bookbuyer application
Package main implements the bookbuyer application
cmd/bookstore
Package main implements the bookstore application
Package main implements the bookstore application
cmd/bookthief
Package main implements the bookthief application
Package main implements the bookthief application
cmd/bookwarehouse
Package main implements the bookwarehouse application This create a service which has both inbound as well as outbound service policies i.e.
Package main implements the bookwarehouse application This create a service which has both inbound as well as outbound service policies i.e.
cmd/bookwatcher
Package main implements the bookwatcher for terminal and JSON output from demo applications
Package main implements the bookwatcher for terminal and JSON output from demo applications
cmd/common
Package common implements shared functions and structs between various book* applications
Package common implements shared functions and structs between various book* applications
cmd/database
Package database allows the bookwarehouse service to store total books data into MySQL persistent storage
Package database allows the bookwarehouse service to store total books data into MySQL persistent storage
cmd/tcp-client
package main implements a TCP client that sends TCP data to a TCP echo server and prints the response.
package main implements a TCP client that sends TCP data to a TCP echo server and prints the response.
cmd/tcp-echo-server
package main implements a TCP echo server that echoes back the TCP client's request as a part of its response.
package main implements a TCP echo server that echoes back the TCP client's request as a part of its response.
Package mockspec allows the mocks to be generated consistently by doing the following: 1.
Package mockspec allows the mocks to be generated consistently by doing the following: 1.
pkg
apis/config/v1alpha1
Package v1alpha1 is the v1alpha1 version of the API.
Package v1alpha1 is the v1alpha1 version of the API.
apis/config/v1alpha2
Package v1alpha2 is the v1alpha2 version of the API.
Package v1alpha2 is the v1alpha2 version of the API.
apis/policy/v1alpha1
Package v1alpha1 is the v1alpha1 version of the API.
Package v1alpha1 is the v1alpha1 version of the API.
auth
Package auth implements the ExtAuthConfig struct.
Package auth implements the ExtAuthConfig struct.
bugreport
Package bugreport implements functionality related to generating bug reports.
Package bugreport implements functionality related to generating bug reports.
catalog
Package catalog implements the MeshCataloger interface, which forms the central component in OSM that transforms outputs from all other components (SMI policies, Kubernetes services, endpoints etc.) into configuration that is consumed by the the proxy control plane component to program sidecar proxies.
Package catalog implements the MeshCataloger interface, which forms the central component in OSM that transforms outputs from all other components (SMI policies, Kubernetes services, endpoints etc.) into configuration that is consumed by the the proxy control plane component to program sidecar proxies.
certificate
Package certificate implements utility routines to endcode and decode certificates, and provides the interface definitions for Certificate and Certificate Manager.
Package certificate implements utility routines to endcode and decode certificates, and provides the interface definitions for Certificate and Certificate Manager.
certificate/castorage/k8s
Package k8s implements helper functions to get certificates from Kubernetes secret
Package k8s implements helper functions to get certificates from Kubernetes secret
certificate/pem
Package pem defines the types for the attributes of a Certificate.
Package pem defines the types for the attributes of a Certificate.
certificate/providers
Package providers implements generic certificate provider related functionality
Package providers implements generic certificate provider related functionality
certificate/providers/certmanager
Package certmanager implements the certificate.Manager interface for cert-manager.io as the certificate provider.
Package certmanager implements the certificate.Manager interface for cert-manager.io as the certificate provider.
certificate/providers/tresor
Package tresor implements the certificate.Manager interface for Tresor, a custom certificate provider in OSM.
Package tresor implements the certificate.Manager interface for Tresor, a custom certificate provider in OSM.
certificate/providers/tresor/fake
Package fake moves fakes to their own sub-package
Package fake moves fakes to their own sub-package
certificate/providers/vault
Package vault implements the certificate.Manager interface for Hashicorp Vault as the certificate provider.
Package vault implements the certificate.Manager interface for Hashicorp Vault as the certificate provider.
cli
Package cli describes the operating environment for the OSM cli and includes convenience functions for the OSM cli.
Package cli describes the operating environment for the OSM cli and includes convenience functions for the OSM cli.
compute
Package compute is a generated GoMock package.
Package compute is a generated GoMock package.
constants
Package constants defines the constants that are used by multiple other packages within OSM.
Package constants defines the constants that are used by multiple other packages within OSM.
debugger
Package debugger is a generated GoMock package.
Package debugger is a generated GoMock package.
endpoint
Package endpoint defines the interface for an endpoints provider.
Package endpoint defines the interface for an endpoints provider.
envoy
Package envoy implements utility routines related to Envoy proxy, and models an instance of a proxy to be able to generate XDS configurations for it.
Package envoy implements utility routines related to Envoy proxy, and models an instance of a proxy to be able to generate XDS configurations for it.
envoy/bootstrap
Package bootstrap implements functionality related to Envoy's bootstrap config.
Package bootstrap implements functionality related to Envoy's bootstrap config.
envoy/bootstrap/test
Package test implements utility routes to test the functionality provided by the injector package.
Package test implements utility routes to test the functionality provided by the injector package.
envoy/generator/cds
Package cds implements Envoy's Cluster Discovery Service (CDS).
Package cds implements Envoy's Cluster Discovery Service (CDS).
envoy/generator/eds
Package eds implements Envoy's Endpoint Discovery Service (EDS).
Package eds implements Envoy's Endpoint Discovery Service (EDS).
envoy/generator/lds
Package lds implements Envoy's Listener Discovery Service (LDS).
Package lds implements Envoy's Listener Discovery Service (LDS).
envoy/generator/rds
Package rds implements Envoy's Route Discovery Service (RDS).
Package rds implements Envoy's Route Discovery Service (RDS).
envoy/server
Package server implements Envoy's Aggregated Discovery Service (ADS).
Package server implements Envoy's Aggregated Discovery Service (ADS).
errcode
Package errcode defines the error codes for error messages and an explanation of what the error signifies.
Package errcode defines the error codes for error messages and an explanation of what the error signifies.
gen/client/config/clientset/versioned
This package has the automatically generated clientset.
This package has the automatically generated clientset.
gen/client/config/clientset/versioned/fake
This package has the automatically generated fake clientset.
This package has the automatically generated fake clientset.
gen/client/config/clientset/versioned/scheme
This package contains the scheme of the automatically generated clientset.
This package contains the scheme of the automatically generated clientset.
gen/client/config/clientset/versioned/typed/config/v1alpha1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
gen/client/config/clientset/versioned/typed/config/v1alpha1/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
gen/client/config/clientset/versioned/typed/config/v1alpha2
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
gen/client/config/clientset/versioned/typed/config/v1alpha2/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
gen/client/policy/clientset/versioned
This package has the automatically generated clientset.
This package has the automatically generated clientset.
gen/client/policy/clientset/versioned/fake
This package has the automatically generated fake clientset.
This package has the automatically generated fake clientset.
gen/client/policy/clientset/versioned/scheme
This package contains the scheme of the automatically generated clientset.
This package contains the scheme of the automatically generated clientset.
gen/client/policy/clientset/versioned/typed/policy/v1alpha1
This package has the automatically generated typed clients.
This package has the automatically generated typed clients.
gen/client/policy/clientset/versioned/typed/policy/v1alpha1/fake
Package fake has the automatically generated clients.
Package fake has the automatically generated clients.
health
Package health implements functionality for readiness and liveness health probes.
Package health implements functionality for readiness and liveness health probes.
httpserver
Package httpserver implements an HTTP server and utility routines to manage its lifecycle.
Package httpserver implements an HTTP server and utility routines to manage its lifecycle.
identity
Package identity implements types and utility routines related to the identity of a workload, as used within OSM.
Package identity implements types and utility routines related to the identity of a workload, as used within OSM.
ingress
Package ingress implements functionality to monitor and retrieve Kubernetes Ingress resources.
Package ingress implements functionality to monitor and retrieve Kubernetes Ingress resources.
injector
Package injector implements OSM's automatic sidecar injection facility.
Package injector implements OSM's automatic sidecar injection facility.
k8s
Package k8s is a generated GoMock package.
Package k8s is a generated GoMock package.
k8s/events
Package events implements the eventing framework to receive and relay kubernetes events, and a framework to publish events to the Kubernetes API server.
Package events implements the eventing framework to receive and relay kubernetes events, and a framework to publish events to the Kubernetes API server.
logger
Package logger implements utility routines to initialize the logging facility used by OSM components.
Package logger implements utility routines to initialize the logging facility used by OSM components.
messaging
Package messaging implements the messaging infrastructure between different components within the control plane.
Package messaging implements the messaging infrastructure between different components within the control plane.
metricsstore
Package metricsstore implements a Prometheus metrics store for OSM's control plane metrics.
Package metricsstore implements a Prometheus metrics store for OSM's control plane metrics.
models
Package models implements the HealthProbe struct.
Package models implements the HealthProbe struct.
osm
protobuf
Package protobuf contains function(s) pertaining to protobufs
Package protobuf contains function(s) pertaining to protobufs
service
Package service models an instance of a service managed by OSM controller and utility routines associated with it.
Package service models an instance of a service managed by OSM controller and utility routines associated with it.
signals
Package signals implements functionality related to being notified on signals from the Operating System.
Package signals implements functionality related to being notified on signals from the Operating System.
smi
Package smi implements the Service Mesh Interface (SMI) kubernetes client to observe and retrieve information regarding SMI traffic resources.
Package smi implements the Service Mesh Interface (SMI) kubernetes client to observe and retrieve information regarding SMI traffic resources.
strings
Package strings implements utility routines related to the string type.
Package strings implements utility routines related to the string type.
tests
Package tests implements utility routines used for unit testing.
Package tests implements utility routines used for unit testing.
tests/certificates
Package certificates defines sample certificates used for unit testing.
Package certificates defines sample certificates used for unit testing.
ticker
Package ticker reintroduces the ticker concept.
Package ticker reintroduces the ticker concept.
trafficpolicy
Package trafficpolicy defines the types to represent traffic policies internally in the OSM control plane, and utility routines to process them.
Package trafficpolicy defines the types to represent traffic policies internally in the OSM control plane, and utility routines to process them.
utils
Package utils provides generic utility routines used within OSM.
Package utils provides generic utility routines used within OSM.
validator
Package validator implements utility routines related to Kubernetes' admission webhooks.
Package validator implements utility routines related to Kubernetes' admission webhooks.
version
Package version provides version information for the compiled binary, and an HTTP handler to serve the version information via an HTTP request.
Package version provides version information for the compiled binary, and an HTTP handler to serve the version information via an HTTP request.
webhook
Package webhook implements utility routines related to Kubernetes' admission webhooks.
Package webhook implements utility routines related to Kubernetes' admission webhooks.
workerpool
Package workerpool implements the thread-pool paradigm in Go.
Package workerpool implements the thread-pool paradigm in Go.
scripts
tests
e2e

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL