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).
SQL (PostgreSQL-Schema)
Abschnitt betitelt „SQL (PostgreSQL-Schema)“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));Kubernetes (Manifest)
Abschnitt betitelt „Kubernetes (Manifest)“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: v1kind: Namespacemetadata: name: shopping
---
############################################################ Service Account###########################################################
apiVersion: v1kind: ServiceAccountmetadata: name: shopping-sa namespace: shopping
---
############################################################ Role###########################################################
apiVersion: rbac.authorization.k8s.io/v1kind: Rolemetadata: name: shopping-role namespace: shopping
rules:
- apiGroups: [""] resources: - pods - services - configmaps verbs: - get - list - watch
---
############################################################ RoleBinding###########################################################
apiVersion: rbac.authorization.k8s.io/v1kind: RoleBindingmetadata: 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: v1kind: PersistentVolume
metadata: name: postgres-pv
spec:
capacity: storage: 20Gi
accessModes: - ReadWriteOnce
storageClassName: manual
hostPath: path: /data/postgres
---
############################################################ PVC###########################################################
apiVersion: v1kind: PersistentVolumeClaim
metadata: name: postgres-pvc namespace: shopping
spec:
storageClassName: manual
accessModes: - ReadWriteOnce
resources: requests: storage: 20Gi
---
############################################################ PostgreSQL Deployment###########################################################
apiVersion: apps/v1kind: 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: v1kind: Service
metadata: name: postgres-service
spec:
selector: app: postgres
ports:
- port: 5432 targetPort: 5432
---
############################################################ Backend Deployment###########################################################
apiVersion: apps/v1kind: 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: v1kind: Service
metadata: name: api-service
spec:
selector:
app: shopping-api
ports:
- port: 80
targetPort: 8080
---
############################################################ Frontend Deployment###########################################################
apiVersion: apps/v1kind: 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: v1kind: Service
metadata: name: frontend-service
spec:
selector:
app: shopping-web
ports:
- port: 80
targetPort: 80
---
############################################################ Admin Deployment###########################################################
apiVersion: apps/v1kind: 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: v1kind: Service
metadata: name: admin-service
spec:
selector:
app: admin
ports:
- port: 80
targetPort: 8081
---
############################################################ Ingress###########################################################
apiVersion: networking.k8s.io/v1kind: 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: 80Docker Compose
Abschnitt betitelt „Docker Compose“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 ── Kibanaversion: "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:Helm (Template + values)
Abschnitt betitelt „Helm (Template + values)“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: v1kind: ServiceAccountmetadata: name: {{ $app }}-sa
---
############################################################### ConfigMap##############################################################
apiVersion: v1kind: ConfigMapmetadata: name: {{ $app }}-config
data:
DB_HOST: postgres-service
DB_PORT: "5432"
REDIS_HOST: redis-service
---
############################################################### Secret##############################################################
apiVersion: v1kind: Secret
metadata: name: {{ $app }}-secret
type: Opaque
stringData:
DB_USER: admin
DB_PASSWORD: password
---
############################################################### PVC##############################################################
apiVersion: v1kind: PersistentVolumeClaim
metadata:
name: postgres-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 20Gi
---
############################################################### PostgreSQL Deployment##############################################################
apiVersion: apps/v1kind: 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: v1kind: Service
metadata:
name: postgres-service
spec:
selector:
app: postgres
ports:
- port: 5432
---
############################################################### Backend Deployment##############################################################
apiVersion: apps/v1kind: 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: v1kind: Service
metadata:
name: api-service
spec:
selector:
app: shopping-api
ports:
- port: 80
targetPort: 8080
---
############################################################### Frontend Deployment##############################################################
apiVersion: apps/v1kind: 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: v1kind: Service
metadata:
name: frontend-service
spec:
selector:
app: shopping-web
ports:
- port: 80
---
############################################################### Ingress##############################################################
apiVersion: networking.k8s.io/v1kind: 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.comTerraform (Azure)
Abschnitt betitelt „Terraform (Azure)“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 Accountterraform { 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"}