Zum Hauptinhalt springen
Version: Weekly Build

Managed Services

Jeder Dienst, der über den Bereich Managed Services angeboten wird, wird als individueller Managed Service Provider im Array codesphere.managedServices in config.yaml konfiguriert. Die Konfiguration folgt einem bestimmten Schema.

Managed Service Provider können extern zu Codesphere sein (dabei wird eine externe API aufgerufen), es gibt aber auch integrierte Managed Services, bei denen der Provider innerhalb von Codesphere läuft. Mit dem aktuellen Release gibt es einen solchen Provider, für PostgreSQL.

Codesphere wird mit einer Reihe vorkonfigurierter Provider ausgeliefert. Um einen davon zu aktivieren, gib Name und Version an:

# /etc/codesphere/config.yaml
codesphere:
# ... andere Konfiguration
managedServices:
- name: postgres
schemaVersion: v1
- name: babelfish
schemaVersion: v1
- name: s3
schemaVersion: v1
- name: virtualK8sV1
schemaVersion: v1

Wenn du einen dieser Provider verwendest, stelle sicher, dass das jeweilige Backend ebenfalls im Abschnitt managedServiceBackends aktiviert ist:

# /etc/codesphere/config.yaml
managedServicesBackends:
postgres: # Dieses einzelne Backend bedient sowohl postgres als auch babelfish
enabled: true
barmanCloudPlugin: # Muss aktiviert sein, damit Datenbank-Backups funktionieren
enabled: true
s3:
enabled: true
k8sBackend:
enabled: true

Eigenschaften überschreiben

Es ist möglich, Eigenschaften der vorkonfigurierten Provider zu überschreiben. Hier ist ein Beispiel des PostgreSQL Managed Service Providers mit teilweisen Überschreibungen. Wir überschreiben das plans-Array, sodass nur ein einzelner großer Plan übrig bleibt.

# /etc/codesphere/config.yaml
codesphere:
# ... andere Konfiguration
managedServices:
- name: postgres
schemaVersion: v1
plans:
- id: 0
description: Only one big plan
name: Big
parameters:
storage:
pricedAs: storage-mb
schema:
description: Storage (MB)
type: integer
default: 1000000
readOnly: false
cpu:
pricedAs: cpu-tenths
schema:
description: CPU Tenths
type: number
default: 50
readOnly: true
memory:
pricedAs: ram-mb
schema:
description: Memory (MB)
type: integer
default: 8000
readOnly: true
# ... andere Provider

Hier findest du die vollständige Konfiguration des PostgreSQL Managed Service Providers:

Vollständiges Beispiel: der PostgreSQL Managed Service Provider
# /etc/codesphere/config.yaml
codesphere:
managedServices:
- name: postgres
schemaVersion: v1
backend:
api:
endpoint: "http://ms-backend-postgres.postgres-operator:3000/api/v1/postgres"
author: Codesphere
category: Database
displayName: PostgreSQL
# Auf true setzen, um pro Team nur einen nicht gelöschten Dienst für diese Provider-Version zuzulassen.
# teamSingleton: true
iconUrl: /ide/assets/managed-services/postgresql.svg
configSchema:
type: object
properties:
version:
type: string
description: Version of the Postgres DB. Includes pre-installed extensions compatible with this version. Extension versions are managed and cannot be customized.
enum:
- '17.6'
- '16.10'
default: '17.6'
readOnly: false
userName:
type: string
default: app
pattern: '^(?!postgres$)'
databaseName:
type: string
default: app
required: []
additionalProperties: false
detailsSchema:
type: object
properties:
port:
type: integer
hostname:
type: string
dsn:
type: string
ready:
type: boolean
required:
- port
- hostname
- dsn
- ready
additionalProperties: false
secretsSchema:
type: object
properties:
userPassword:
type: string
format: password
superuserPassword:
type: string
format: password
required:
- userPassword
- superuserPassword
additionalProperties: false
description: >-
Open-source database system tailored for efficient data management and
scalability. Deployed on Codesphere using the CNPG K8s Operator.
plans:
- id: 0
description: 0.5 vCPU / 500 MB Memory
name: Small
parameters:
storage:
pricedAs: storage-mb
schema:
description: Storage (MB)
type: integer
default: 10000
readOnly: false
cpu:
pricedAs: cpu-tenths
schema:
description: CPU Tenths
type: number
default: 5
readOnly: true
memory:
pricedAs: ram-mb
schema:
description: Memory (MB)
type: integer
default: 500
readOnly: true
- id: 1
description: 1 vCPU / 1 GB Memory
name: Medium
parameters:
storage:
pricedAs: storage-mb
schema:
description: Storage (MB)
type: integer
default: 25000
readOnly: false
cpu:
pricedAs: cpu-tenths
schema:
description: CPU Tenths
type: number
default: 10
readOnly: true
memory:
pricedAs: ram-mb
schema:
description: Memory (MB)
type: integer
default: 1000
readOnly: true
- id: 2
description: 1 vCPU / 2 GB Memory
name: Medium High-Mem
parameters:
storage:
pricedAs: storage-mb
schema:
type: integer
default: 25000
readOnly: false
cpu:
pricedAs: cpu-tenths
schema:
type: number
default: 10
readOnly: true
memory:
pricedAs: ram-mb
schema:
type: integer
default: 2000
readOnly: true
- id: 3
description: 2 vCPU / 4 GB Memory
name: Large
parameters:
storage:
pricedAs: storage-mb
schema:
type: integer
default: 50000
readOnly: false
cpu:
pricedAs: cpu-tenths
schema:
type: number
default: 20
readOnly: true
memory:
pricedAs: ram-mb
schema:
type: integer
default: 4000
readOnly: true
- id: 4
description: 4 vCPU / 8 GB Memory
name: Extra Large
parameters:
storage:
pricedAs: storage-mb
schema:
type: integer
default: 150000
readOnly: false
cpu:
pricedAs: cpu-tenths
schema:
type: number
default: 40
readOnly: true
memory:
pricedAs: ram-mb
schema:
type: integer
default: 8000
readOnly: true

Eigene Provider hinzufügen

Du kannst die Private-Cloud-Konfigurationsdatei auch verwenden, um selbst implementierte Provider statisch bereitzustellen.

Landscape-basierte Provider

Landscape-basierte Provider können einfach zum Array managedServices hinzugefügt werden.

Vollständiges Beispiel: Statisch bereitgestellter, benutzerdefinierter Landscape-basierter Provider
# /etc/codesphere/config.yaml
codesphere:
managedServices:
- name: mattermost
schemaVersion: v1
author: Your Team
displayName: Mattermost
iconUrl: https://example.com/mattermost-icon.png
category: collaboration
description: |
Open-source team messaging and collaboration platform.
Supports channels, direct messaging, and file sharing.
teamSingleton: true

backend:
landscape:
gitUrl: https://github.com/your-org/mattermost-landscape

configSchema:
type: object
properties:
SITE_NAME:
type: string
description: Display name for your Mattermost instance
default: mattermost
readOnly: false
MAX_USERS:
type: integer
description: Maximum number of users allowed
x-update-constraint: increase-only
required: ['MAX_USERS']

secretsSchema:
type: object
properties:
ADMIN_PASSWORD:
type: string
format: password

detailsSchema:
type: object
properties:
hostname:
type: string
port:
type: integer

plans:
- id: 0
name: Default Plan
description: Resource usage depends on the ci-profile of the landscape.
parameters: {}

versions:
1.0.0:
appVersion: Mattermost v33
ciProfile: prod
gitRef: release-tags/1-0-0
description: Long Term Support Release
# weitere Provider ...

REST-basierte Provider

REST-basierte Provider werden auf die gleiche Weise wie Landscape-basierte Provider zum Array managedService hinzugefügt.

Es wird dringend empfohlen, dass dein REST-Backend Anfragen mittels Bearer-Token authentifiziert. Um diesen Token mit Codesphere zu teilen, musst du ihn in den Installer-Vault-Secrets setzen:

# /home/<myuser>/secrets/prod.vault.yaml
secrets:
# ... andere Secrets
- name: managedServiceSecrets
fields:
# JSON-Array von Objekten
password: |-
[
{
"name": "postgres", # Provider-Name (muss mit einem der Namen im Array codesphere.managedServices in der config.yaml übereinstimmen)
"version": "v1" # Provider-Version
"api": {
"secret": "Bearer MY-API-KEY-123123" # vollständiger Authz-Header
}
}
]