Zum Inhalt springen

Aus Code generieren

Kopieren Sie die fertigen Codebeispiele auf dieser Seite und fügen Sie sie in das Werkzeug Aus Code generieren von LetDraw ein, um in Sekunden ein Diagramm zu erzeugen. Das Werkzeug erkennt das Format automatisch; Einzelheiten finden Sie auf der Seite Aus Code generieren.

So verwenden Sie es: Öffnen Sie in der unteren Werkzeugleiste Weitere Werkzeuge (⋯) -> Aus Code generieren, kopieren Sie den Codeblock aus einem der Beispiele unten, fügen Sie ihn ein und drücken Sie Hinzufügen. Die kleine Schemazeichnung über jedem Beispiel ist eine Vorschau der Struktur, die dieser Code erzeugt; kopieren Sie beim Einfügen nur den Codeblock darunter.

Alle Beispiele beruhen auf demselben E-Commerce-Szenario (Einkauf).

Wandelt CREATE TABLE-Anweisungen und ihre Fremdschlüsselbeziehungen in ein ER-Diagramm (Entity-Relationship) um.

Die Struktur, die dieser Code erzeugt:

Customers
└─< Orders
├─< Payments
└─< OrderDetails >─ Products >─ Categories
( ─< one-to-many relationship (1 → N) ; >─ foreign key (N → 1) )
-- ===========================================
-- E-COMMERCE DATABASE SCHEMA
-- PostgreSQL
-- ===========================================
-- ===========================
-- CATEGORIES
-- ===========================
CREATE TABLE categories (
category_id SERIAL PRIMARY KEY,
category_name VARCHAR(100) NOT NULL,
description TEXT
);
-- ===========================
-- PRODUCTS
-- ===========================
CREATE TABLE products (
product_id SERIAL PRIMARY KEY,
category_id INT NOT NULL,
product_name VARCHAR(200) NOT NULL,
description TEXT,
price NUMERIC(10,2) NOT NULL,
stock INT NOT NULL DEFAULT 0,
CONSTRAINT fk_products_category
FOREIGN KEY (category_id)
REFERENCES categories(category_id)
);
-- ===========================
-- CUSTOMERS
-- ===========================
CREATE TABLE customers (
customer_id SERIAL PRIMARY KEY,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
email VARCHAR(150) UNIQUE NOT NULL,
phone VARCHAR(20),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- ===========================
-- ORDERS
-- ===========================
CREATE TABLE orders (
order_id SERIAL PRIMARY KEY,
customer_id INT NOT NULL,
order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
total_amount NUMERIC(10,2) DEFAULT 0,
status VARCHAR(30) DEFAULT 'Pending',
CONSTRAINT fk_orders_customer
FOREIGN KEY (customer_id)
REFERENCES customers(customer_id)
);
-- ===========================
-- ORDER DETAILS
-- ===========================
CREATE TABLE order_details (
detail_id SERIAL PRIMARY KEY,
order_id INT NOT NULL,
product_id INT NOT NULL,
quantity INT NOT NULL,
unit_price NUMERIC(10,2) NOT NULL,
CONSTRAINT fk_orderdetails_order
FOREIGN KEY (order_id)
REFERENCES orders(order_id),
CONSTRAINT fk_orderdetails_product
FOREIGN KEY (product_id)
REFERENCES products(product_id)
);
-- ===========================
-- PAYMENTS
-- ===========================
CREATE TABLE payments (
payment_id SERIAL PRIMARY KEY,
order_id INT NOT NULL,
payment_method VARCHAR(50) NOT NULL,
payment_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
amount NUMERIC(10,2) NOT NULL,
status VARCHAR(30) DEFAULT 'Completed',
CONSTRAINT fk_payments_order
FOREIGN KEY (order_id)
REFERENCES orders(order_id)
);

Wandelt Objekte wie Deployment, Service, Ingress und PVC sowie die Verbindungen zwischen ihnen (Label / Selector / Referenz) in ein Architekturdiagramm um.

Die Struktur, die dieser Code erzeugt:

Internet
└─ Ingress
├─ frontend-svc ── frontend Pods
├─ api-svc ─────── api Pods ── postgres-svc ── postgres Pod ── PVC → PV
└─ admin-svc ───── admin Pods
ServiceAccount → Role → RoleBinding
###########################################################
# Namespace
###########################################################
apiVersion: v1
kind: Namespace
metadata:
name: shopping
---
###########################################################
# Service Account
###########################################################
apiVersion: v1
kind: ServiceAccount
metadata:
name: shopping-sa
namespace: shopping
---
###########################################################
# Role
###########################################################
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: shopping-role
namespace: shopping
rules:
- apiGroups: [""]
resources:
- pods
- services
- configmaps
verbs:
- get
- list
- watch
---
###########################################################
# RoleBinding
###########################################################
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: shopping-rolebinding
namespace: shopping
subjects:
- kind: ServiceAccount
name: shopping-sa
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: shopping-role
---
###########################################################
# Persistent Volume
###########################################################
apiVersion: v1
kind: PersistentVolume
metadata:
name: postgres-pv
spec:
capacity:
storage: 20Gi
accessModes:
- ReadWriteOnce
storageClassName: manual
hostPath:
path: /data/postgres
---
###########################################################
# PVC
###########################################################
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgres-pvc
namespace: shopping
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
---
###########################################################
# PostgreSQL Deployment
###########################################################
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres
spec:
replicas: 1
selector:
matchLabels:
app: postgres
template:
metadata:
labels:
app: postgres
spec:
serviceAccountName: shopping-sa
nodeSelector:
workload: database
containers:
- name: postgres
image: postgres:16
env:
- name: POSTGRES_DB
value: shopping
- name: POSTGRES_USER
value: admin
- name: POSTGRES_PASSWORD
value: password
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: postgres-storage
volumes:
- name: postgres-storage
persistentVolumeClaim:
claimName: postgres-pvc
---
###########################################################
# PostgreSQL Service
###########################################################
apiVersion: v1
kind: Service
metadata:
name: postgres-service
spec:
selector:
app: postgres
ports:
- port: 5432
targetPort: 5432
---
###########################################################
# Backend Deployment
###########################################################
apiVersion: apps/v1
kind: Deployment
metadata:
name: shopping-api
spec:
replicas: 3
selector:
matchLabels:
app: shopping-api
template:
metadata:
labels:
app: shopping-api
spec:
serviceAccountName: shopping-sa
nodeSelector:
workload: application
containers:
- name: api
image: company/shopping-api:v1
env:
- name: DB_HOST
value: postgres-service
- name: DB_PORT
value: "5432"
ports:
- containerPort: 8080
---
###########################################################
# Backend Service
###########################################################
apiVersion: v1
kind: Service
metadata:
name: api-service
spec:
selector:
app: shopping-api
ports:
- port: 80
targetPort: 8080
---
###########################################################
# Frontend Deployment
###########################################################
apiVersion: apps/v1
kind: Deployment
metadata:
name: shopping-web
spec:
replicas: 2
selector:
matchLabels:
app: shopping-web
template:
metadata:
labels:
app: shopping-web
spec:
serviceAccountName: shopping-sa
nodeSelector:
workload: frontend
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
---
###########################################################
# Frontend Service
###########################################################
apiVersion: v1
kind: Service
metadata:
name: frontend-service
spec:
selector:
app: shopping-web
ports:
- port: 80
targetPort: 80
---
###########################################################
# Admin Deployment
###########################################################
apiVersion: apps/v1
kind: Deployment
metadata:
name: admin-panel
spec:
replicas: 1
selector:
matchLabels:
app: admin
template:
metadata:
labels:
app: admin
spec:
serviceAccountName: shopping-sa
containers:
- name: admin
image: company/admin-panel:v1
ports:
- containerPort: 8081
---
###########################################################
# Admin Service
###########################################################
apiVersion: v1
kind: Service
metadata:
name: admin-service
spec:
selector:
app: admin
ports:
- port: 80
targetPort: 8081
---
###########################################################
# Ingress
###########################################################
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: shopping-ingress
spec:
ingressClassName: nginx
rules:
- host: shop.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: frontend-service
port:
number: 80
- path: /api
pathType: Prefix
backend:
service:
name: api-service
port:
number: 80
- path: /admin
pathType: Prefix
backend:
service:
name: admin-service
port:
number: 80

Wandelt Services und ihre Abhängigkeiten (depends_on, networks, environment) in ein Service-Diagramm um.

Die Struktur, die dieser Code erzeugt:

Browser
└─ Frontend (Nginx)
└─ API Service
├─ Authentication
├─ Payment ── RabbitMQ
├─ Redis
├─ PostgreSQL
├─ MinIO
└─ Elasticsearch ── Kibana
version: "3.9"
services:
####################################################
# Frontend
####################################################
frontend:
image: shopping/frontend:1.0
container_name: frontend
ports:
- "80:80"
depends_on:
- api
environment:
API_URL: http://api:8080
networks:
- shopping-network
####################################################
# Backend API
####################################################
api:
image: shopping/api:1.0
container_name: api
ports:
- "8080:8080"
depends_on:
- postgres
- redis
- rabbitmq
- auth
environment:
DB_HOST: postgres
DB_PORT: 5432
DB_NAME: shopping
DB_USER: admin
DB_PASSWORD: password
REDIS_HOST: redis
AUTH_URL: http://auth:8081
PAYMENT_URL: http://payment:8082
RABBITMQ_HOST: rabbitmq
STORAGE_ENDPOINT: http://minio:9000
networks:
- shopping-network
####################################################
# Authentication Service
####################################################
auth:
image: shopping/auth-service:1.0
container_name: auth
ports:
- "8081:8081"
depends_on:
- postgres
- redis
environment:
DB_HOST: postgres
REDIS_HOST: redis
networks:
- shopping-network
####################################################
# Payment Service
####################################################
payment:
image: shopping/payment-service:1.0
container_name: payment
ports:
- "8082:8082"
depends_on:
- rabbitmq
environment:
RABBITMQ_HOST: rabbitmq
networks:
- shopping-network
####################################################
# PostgreSQL
####################################################
postgres:
image: postgres:16
container_name: postgres
restart: always
environment:
POSTGRES_DB: shopping
POSTGRES_USER: admin
POSTGRES_PASSWORD: password
ports:
- "5432:5432"
volumes:
- postgres-data:/var/lib/postgresql/data
networks:
- shopping-network
####################################################
# Redis
####################################################
redis:
image: redis:7
container_name: redis
ports:
- "6379:6379"
networks:
- shopping-network
####################################################
# RabbitMQ
####################################################
rabbitmq:
image: rabbitmq:3-management
container_name: rabbitmq
ports:
- "5672:5672"
- "15672:15672"
networks:
- shopping-network
####################################################
# MinIO
####################################################
minio:
image: minio/minio
container_name: minio
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: admin
MINIO_ROOT_PASSWORD: password123
ports:
- "9000:9000"
- "9001:9001"
volumes:
- minio-data:/data
networks:
- shopping-network
####################################################
# Elasticsearch
####################################################
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.15.0
container_name: elasticsearch
environment:
discovery.type: single-node
xpack.security.enabled: "false"
ports:
- "9200:9200"
volumes:
- elastic-data:/usr/share/elasticsearch/data
networks:
- shopping-network
####################################################
# Kibana
####################################################
kibana:
image: docker.elastic.co/kibana/kibana:8.15.0
container_name: kibana
depends_on:
- elasticsearch
environment:
ELASTICSEARCH_HOSTS: http://elasticsearch:9200
ports:
- "5601:5601"
networks:
- shopping-network
####################################################
# Networks
####################################################
networks:
shopping-network:
driver: bridge
####################################################
# Volumes
####################################################
volumes:
postgres-data:
minio-data:
elastic-data:

Wandelt die Ressourcen eines Helm-Charts und die Verbindungen zwischen values.yaml und den Templates in ein Ressourcendiagramm um.

Die Struktur, die dieser Code erzeugt:

values.yaml
└─ Helm Template Engine
└─ shopping-release
├─ ConfigMap ────┐
├─ Secret ───────┼─ shopping-api Deployment ── api-service ── Ingress (/api)
├─ ServiceAccount ┘
├─ shopping-web Deployment ── frontend-service ── Ingress (/)
└─ postgres Deployment ── postgres-pvc ── PV
{{- $app := .Values.app.name }}
##############################################################
# ServiceAccount
##############################################################
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ $app }}-sa
---
##############################################################
# ConfigMap
##############################################################
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ $app }}-config
data:
DB_HOST: postgres-service
DB_PORT: "5432"
REDIS_HOST: redis-service
---
##############################################################
# Secret
##############################################################
apiVersion: v1
kind: Secret
metadata:
name: {{ $app }}-secret
type: Opaque
stringData:
DB_USER: admin
DB_PASSWORD: password
---
##############################################################
# PVC
##############################################################
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgres-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
---
##############################################################
# PostgreSQL Deployment
##############################################################
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres
spec:
replicas: 1
selector:
matchLabels:
app: postgres
template:
metadata:
labels:
app: postgres
spec:
serviceAccountName: {{ $app }}-sa
containers:
- name: postgres
image: postgres:16
env:
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: {{ $app }}-secret
key: DB_USER
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: {{ $app }}-secret
key: DB_PASSWORD
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: data
volumes:
- name: data
persistentVolumeClaim:
claimName: postgres-pvc
---
##############################################################
# PostgreSQL Service
##############################################################
apiVersion: v1
kind: Service
metadata:
name: postgres-service
spec:
selector:
app: postgres
ports:
- port: 5432
---
##############################################################
# Backend Deployment
##############################################################
apiVersion: apps/v1
kind: Deployment
metadata:
name: shopping-api
spec:
replicas: {{ .Values.api.replicaCount }}
selector:
matchLabels:
app: shopping-api
template:
metadata:
labels:
app: shopping-api
spec:
serviceAccountName: {{ $app }}-sa
containers:
- name: api
image: "{{ .Values.api.image }}:{{ .Values.api.tag }}"
envFrom:
- configMapRef:
name: {{ $app }}-config
- secretRef:
name: {{ $app }}-secret
ports:
- containerPort: 8080
---
##############################################################
# Backend Service
##############################################################
apiVersion: v1
kind: Service
metadata:
name: api-service
spec:
selector:
app: shopping-api
ports:
- port: 80
targetPort: 8080
---
##############################################################
# Frontend Deployment
##############################################################
apiVersion: apps/v1
kind: Deployment
metadata:
name: shopping-web
spec:
replicas: {{ .Values.web.replicaCount }}
selector:
matchLabels:
app: shopping-web
template:
metadata:
labels:
app: shopping-web
spec:
serviceAccountName: {{ $app }}-sa
containers:
- name: nginx
image: "{{ .Values.web.image }}:{{ .Values.web.tag }}"
env:
- name: API_URL
value: http://api-service
---
##############################################################
# Frontend Service
##############################################################
apiVersion: v1
kind: Service
metadata:
name: frontend-service
spec:
selector:
app: shopping-web
ports:
- port: 80
---
##############################################################
# Ingress
##############################################################
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: shopping-ingress
spec:
ingressClassName: nginx
rules:
- host: {{ .Values.ingress.host }}
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: frontend-service
port:
number: 80
- path: /api
pathType: Prefix
backend:
service:
name: api-service
port:
number: 80
values.yaml:
app:
name: shopping
api:
image: company/shopping-api
tag: v1.4.2
replicaCount: 3
web:
image: company/shopping-web
tag: v2.1.0
replicaCount: 2
ingress:
host: shop.example.com

Wandelt Ressourcen und die Abhängigkeiten zwischen ihnen (implizite Abhängigkeiten) in ein Ressourcendiagramm um.

Die Struktur, die dieser Code erzeugt:

Resource Group
├─ Virtual Network
│ └─ Subnet
│ ├─ Network Security Group ── NSG Association
│ ├─ Public IP
│ └─ Network Interface ── Linux VM
└─ Storage Account
terraform {
required_version = ">=1.6"
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~>4.0"
}
}
}
provider "azurerm" {
features {}
}
#########################################
# Resource Group
#########################################
resource "azurerm_resource_group" "rg" {
name = "rg-demo-prod"
location = "West Europe"
}
#########################################
# Virtual Network
#########################################
resource "azurerm_virtual_network" "vnet" {
name = "demo-vnet"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
address_space = ["10.10.0.0/16"]
}
#########################################
# Subnet
#########################################
resource "azurerm_subnet" "subnet" {
name = "application-subnet"
resource_group_name = azurerm_resource_group.rg.name
virtual_network_name = azurerm_virtual_network.vnet.name
address_prefixes = ["10.10.1.0/24"]
}
#########################################
# Network Security Group
#########################################
resource "azurerm_network_security_group" "nsg" {
name = "application-nsg"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
security_rule {
name = "SSH"
priority = 100
direction = "Inbound"
access = "Allow"
protocol = "Tcp"
source_port_range = "*"
destination_port_range = "22"
source_address_prefix = "*"
destination_address_prefix = "*"
}
security_rule {
name = "HTTP"
priority = 110
direction = "Inbound"
access = "Allow"
protocol = "Tcp"
source_port_range = "*"
destination_port_range = "80"
source_address_prefix = "*"
destination_address_prefix = "*"
}
}
#########################################
# NSG Association
#########################################
resource "azurerm_subnet_network_security_group_association" "assoc" {
subnet_id = azurerm_subnet.subnet.id
network_security_group_id = azurerm_network_security_group.nsg.id
}
#########################################
# Public IP
#########################################
resource "azurerm_public_ip" "pip" {
name = "vm-public-ip"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
allocation_method = "Static"
sku = "Standard"
}
#########################################
# Network Interface
#########################################
resource "azurerm_network_interface" "nic" {
name = "vm-nic"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
ip_configuration {
name = "internal"
subnet_id = azurerm_subnet.subnet.id
private_ip_address_allocation = "Dynamic"
public_ip_address_id = azurerm_public_ip.pip.id
}
}
#########################################
# Linux VM
#########################################
resource "azurerm_linux_virtual_machine" "vm" {
name = "demo-vm"
resource_group_name = azurerm_resource_group.rg.name
location = azurerm_resource_group.rg.location
size = "Standard_B2s"
admin_username = "azureuser"
disable_password_authentication = false
admin_password = "Password123!"
network_interface_ids = [
azurerm_network_interface.nic.id
]
os_disk {
caching = "ReadWrite"
storage_account_type = "Standard_LRS"
}
source_image_reference {
publisher = "Canonical"
offer = "0001-com-ubuntu-server-jammy"
sku = "22_04-lts"
version = "latest"
}
}
#########################################
# Storage Account
#########################################
resource "azurerm_storage_account" "storage" {
name = "demostorage123456"
resource_group_name = azurerm_resource_group.rg.name
location = azurerm_resource_group.rg.location
account_tier = "Standard"
account_replication_type = "LRS"
}