compass-manager

command module
v0.0.0-...-1c438a8 Latest Latest
Warning

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

Go to latest
Published: Mar 25, 2024 License: Apache-2.0 Imports: 26 Imported by: 0

README

REUSE status

Compass Manager

Overview

Compass Manager will be a new Control Plane component. Build using Kubebuilder framework.

It's main responsibilities will be:

  • registering Kyma runtimes in the Compass Director
  • creating secret on client cluster with the Compass Runtime configuration

Prerequisites

  • Golang - minimum version is 1.20.
  • Kyma Custom Resource Definition present on cluster.
  • Access to a k8s cluster.
  • kcp-system namespace on the k8s cluster
  • k3d to get a local cluster for testing, or run against a remote cluster.
  • kubectl
  • kubebuilder
  1. Clone the project.
git clone https://github.com/kyma-project/compass-manager.git && cd compass-manager/
  1. Set the compass-manager image name. Add prefix your-docker-hub-user/ if needed
export IMG=custom-compass-manager:local
  1. Build the project.
make build
  1. Build the image.
make docker-build
  1. Push the image to the external DockerHub registry.
make docker-push
  1. Create a Secret containing Compass Director authorization data:
apiVersion: v1
kind: Secret
metadata:
  name: kcp-provisioner-credentials-file
  namespace: kcp-system
type: Opaque
stringData:
  director.yaml: |-
    data:
      client_id: "some-ID"
      client_secret: "some-Secret"
      tokens_endpoint: "https://example.com/oauth2/token"
  1. Deploy.
make deploy

Usage

Compass Manager watches for Kyma custom resource changes. When Kyma with the Application Connector module is created, it registers Kyma runtime in the Compass Director and creates a Compass Manager Mapping with the ID assigned by the Compass Director. It then configures the Compass runtime Secret on the client cluster.

apiVersion: operator.kyma-project.io/v1beta2
kind: Kyma
metadata:
  name: 54572f7a-b2c2-4f09-b83e-1c9f9b690e02
  namespace: kcp-system
  labels:
    kyma-project.io/broker-plan-name: open
    kyma-project.io/broker-plan-id: 925c16be-3644-457b-840b-768f69b993cf
    kyma-project.io/instance-id: 1ccf9b07-1296-4052-97b5-1c38aa72ac41
    kyma-project.io/shoot-name: my-shoot
    kyma-project.io/subaccount-id: 170ba3ca-6905-466a-a109-f2a6efdca439
    kyma-project.io/global-account-id: b07fb88f-a100-4471-bb71-8adb400a3f7f
    operator.kyma-project.io/kyma-name: 54572f7a-b2c2-4f09-b83e-1c9f9b690e02
spec:
  channel: regular
status:
  modules:
    - name: "some-module"
      state: "Ready"
    - name: "application-connector"
      state: "Ready"
Configuration Envs
Name Default Description
APP_ADDRESS 127.0.0.1:3000 Address on which the app is exposed
APP_APIENDPOINT /graphql Endpoint for GraphQL requests
APP_SKIPDIRECTORCERTVERIFICATION false Skips cert verification in the Compass Director GraphQL calls
APP_DIRECTOR_URL https://compass-gateway-auth-oauth.mps.dev.kyma.cloud.sap/director/graphql URL of the Compass Director GraphQL endpoint
APP_DIRECTOR_OAUTH_PATH ./dev/director.yaml File with OAuth data for Compass Director
APP_ENABLED_REGISTRATION false Enable registering runtimes with Compass
APP_DRYRUN false Disable registering and configuring; instead log which operations would be executed

TIP: CompassManagerMappings created with dry run are labeled kyma-project.io/cm-dry-run: Yes

Development

To build the project, use the following command:

make build

To run the project locally:

./bin/manager -kubeconfig <PATH TO KUBECONFIG>

To run the tests:

make test

Controller is tested with the use of the envtest package. You can run single envtest with the following command:

make manifests generate fmt vet envtest
KUBEBUILDER_ASSETS="$PWD/$(./bin/setup-envtest use 1.26.0 --bin-dir ./bin -p path)" go test ./controllers -v -run TestAPIs -ginkgo.focus "Kyma was already registered, but doesn't have a Compass Mapping"

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
api
v1beta1
Package v1beta1 contains API Schema definitions for the operator v1beta1 API group +kubebuilder:object:generate=true +groupName=operator.kyma-project.io
Package v1beta1 contains API Schema definitions for the operator v1beta1 API group +kubebuilder:object:generate=true +groupName=operator.kyma-project.io
internal
pkg
third_party
machinebox/graphql
Package graphql provides a low level GraphQL client.
Package graphql provides a low level GraphQL client.

Jump to

Keyboard shortcuts

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