From a16160b4abcc4c5968ad77a8b8bd7a1a9d4514fc Mon Sep 17 00:00:00 2001 From: Matteo Ruina Date: Fri, 29 May 2020 09:37:53 +0200 Subject: [PATCH] Add flux and flagger (#147) --- diagrams/onprem/gitops.py | 8 + docs/nodes/alibabacloud.md | 140 +++++------ docs/nodes/aws.md | 364 ++++++++++++++-------------- docs/nodes/gcp.md | 118 ++++----- docs/nodes/k8s.md | 80 +++--- docs/nodes/oci.md | 144 +++++------ docs/nodes/onprem.md | 124 ++++++---- resources/onprem/gitops/flagger.png | Bin 0 -> 27435 bytes resources/onprem/gitops/flux.png | Bin 0 -> 30310 bytes 9 files changed, 514 insertions(+), 464 deletions(-) create mode 100644 resources/onprem/gitops/flagger.png create mode 100644 resources/onprem/gitops/flux.png diff --git a/diagrams/onprem/gitops.py b/diagrams/onprem/gitops.py index 670bd2c50..c4702c624 100644 --- a/diagrams/onprem/gitops.py +++ b/diagrams/onprem/gitops.py @@ -12,6 +12,14 @@ class Argocd(_Gitops): _icon = "argocd.png" +class Flagger(_Gitops): + _icon = "flagger.png" + + +class Flux(_Gitops): + _icon = "flux.png" + + # Aliases ArgoCD = Argocd diff --git a/docs/nodes/alibabacloud.md b/docs/nodes/alibabacloud.md index cc274c240..eb62f5d20 100644 --- a/docs/nodes/alibabacloud.md +++ b/docs/nodes/alibabacloud.md @@ -5,54 +5,6 @@ title: AlibabaCloud Node classes list of alibabacloud provider. -## alibabacloud.analytics - -- **diagrams.alibabacloud.analytics.AnalyticDb** -- **diagrams.alibabacloud.analytics.ClickHouse** -- **diagrams.alibabacloud.analytics.DataLakeAnalytics** -- **diagrams.alibabacloud.analytics.ElaticMapReduce** -- **diagrams.alibabacloud.analytics.OpenSearch** - -## alibabacloud.application - -- **diagrams.alibabacloud.application.ApiGateway** -- **diagrams.alibabacloud.application.BeeBot** -- **diagrams.alibabacloud.application.BlockchainAsAService** -- **diagrams.alibabacloud.application.CloudCallCenter** -- **diagrams.alibabacloud.application.CodePipeline** -- **diagrams.alibabacloud.application.DirectMail** -- **diagrams.alibabacloud.application.LogService**, **SLS** (alias) -- **diagrams.alibabacloud.application.MessageNotificationService**, **MNS** (alias) -- **diagrams.alibabacloud.application.NodeJsPerformancePlatform** -- **diagrams.alibabacloud.application.OpenSearch** -- **diagrams.alibabacloud.application.PerformanceTestingService**, **PTS** (alias) -- **diagrams.alibabacloud.application.RdCloud** -- **diagrams.alibabacloud.application.SmartConversationAnalysis**, **SCA** (alias) -- **diagrams.alibabacloud.application.Yida** - -## alibabacloud.communication - -- **diagrams.alibabacloud.communication.DirectMail** -- **diagrams.alibabacloud.communication.MobilePush** - -## alibabacloud.compute - -- **diagrams.alibabacloud.compute.AutoScaling**, **ESS** (alias) -- **diagrams.alibabacloud.compute.BatchCompute** -- **diagrams.alibabacloud.compute.ContainerRegistry** -- **diagrams.alibabacloud.compute.ContainerService** -- **diagrams.alibabacloud.compute.ElasticComputeService**, **ECS** (alias) -- **diagrams.alibabacloud.compute.ElasticContainerInstance**, **ECI** (alias) -- **diagrams.alibabacloud.compute.ElasticHighPerformanceComputing**, **EHPC** (alias) -- **diagrams.alibabacloud.compute.ElasticSearch** -- **diagrams.alibabacloud.compute.FunctionCompute**, **FC** (alias) -- **diagrams.alibabacloud.compute.OperationOrchestrationService**, **OOS** (alias) -- **diagrams.alibabacloud.compute.ResourceOrchestrationService**, **ROS** (alias) -- **diagrams.alibabacloud.compute.ServerLoadBalancer**, **SLB** (alias) -- **diagrams.alibabacloud.compute.ServerlessAppEngine**, **SAE** (alias) -- **diagrams.alibabacloud.compute.SimpleApplicationServer**, **SAS** (alias) -- **diagrams.alibabacloud.compute.WebAppService**, **WAS** (alias) - ## alibabacloud.database - **diagrams.alibabacloud.database.ApsaradbCassandra** @@ -73,25 +25,6 @@ Node classes list of alibabacloud provider. - **diagrams.alibabacloud.database.HybriddbForMysql** - **diagrams.alibabacloud.database.RelationalDatabaseService**, **RDS** (alias) -## alibabacloud.iot - -- **diagrams.alibabacloud.iot.IotInternetDeviceId** -- **diagrams.alibabacloud.iot.IotLinkWan** -- **diagrams.alibabacloud.iot.IotMobileConnectionPackage** -- **diagrams.alibabacloud.iot.IotPlatform** - -## alibabacloud.network - -- **diagrams.alibabacloud.network.Cdn** -- **diagrams.alibabacloud.network.CloudEnterpriseNetwork**, **CEN** (alias) -- **diagrams.alibabacloud.network.ElasticIpAddress**, **EIP** (alias) -- **diagrams.alibabacloud.network.ExpressConnect** -- **diagrams.alibabacloud.network.NatGateway** -- **diagrams.alibabacloud.network.ServerLoadBalancer**, **SLB** (alias) -- **diagrams.alibabacloud.network.SmartAccessGateway** -- **diagrams.alibabacloud.network.VirtualPrivateCloud**, **VPC** (alias) -- **diagrams.alibabacloud.network.VpnGateway** - ## alibabacloud.security - **diagrams.alibabacloud.security.AntiBotService**, **ABS** (alias) @@ -113,6 +46,23 @@ Node classes list of alibabacloud provider. - **diagrams.alibabacloud.security.SslCertificates** - **diagrams.alibabacloud.security.WebApplicationFirewall**, **WAF** (alias) +## alibabacloud.web + +- **diagrams.alibabacloud.web.Dns** +- **diagrams.alibabacloud.web.Domain** + +## alibabacloud.network + +- **diagrams.alibabacloud.network.Cdn** +- **diagrams.alibabacloud.network.CloudEnterpriseNetwork**, **CEN** (alias) +- **diagrams.alibabacloud.network.ElasticIpAddress**, **EIP** (alias) +- **diagrams.alibabacloud.network.ExpressConnect** +- **diagrams.alibabacloud.network.NatGateway** +- **diagrams.alibabacloud.network.ServerLoadBalancer**, **SLB** (alias) +- **diagrams.alibabacloud.network.SmartAccessGateway** +- **diagrams.alibabacloud.network.VirtualPrivateCloud**, **VPC** (alias) +- **diagrams.alibabacloud.network.VpnGateway** + ## alibabacloud.storage - **diagrams.alibabacloud.storage.CloudStorageGateway** @@ -124,7 +74,57 @@ Node classes list of alibabacloud provider. - **diagrams.alibabacloud.storage.ObjectStorageService**, **OSS** (alias) - **diagrams.alibabacloud.storage.ObjectTableStore**, **OTS** (alias) -## alibabacloud.web +## alibabacloud.iot -- **diagrams.alibabacloud.web.Dns** -- **diagrams.alibabacloud.web.Domain** +- **diagrams.alibabacloud.iot.IotInternetDeviceId** +- **diagrams.alibabacloud.iot.IotLinkWan** +- **diagrams.alibabacloud.iot.IotMobileConnectionPackage** +- **diagrams.alibabacloud.iot.IotPlatform** + +## alibabacloud.compute + +- **diagrams.alibabacloud.compute.AutoScaling**, **ESS** (alias) +- **diagrams.alibabacloud.compute.BatchCompute** +- **diagrams.alibabacloud.compute.ContainerRegistry** +- **diagrams.alibabacloud.compute.ContainerService** +- **diagrams.alibabacloud.compute.ElasticComputeService**, **ECS** (alias) +- **diagrams.alibabacloud.compute.ElasticContainerInstance**, **ECI** (alias) +- **diagrams.alibabacloud.compute.ElasticHighPerformanceComputing**, **EHPC** (alias) +- **diagrams.alibabacloud.compute.ElasticSearch** +- **diagrams.alibabacloud.compute.FunctionCompute**, **FC** (alias) +- **diagrams.alibabacloud.compute.OperationOrchestrationService**, **OOS** (alias) +- **diagrams.alibabacloud.compute.ResourceOrchestrationService**, **ROS** (alias) +- **diagrams.alibabacloud.compute.ServerLoadBalancer**, **SLB** (alias) +- **diagrams.alibabacloud.compute.ServerlessAppEngine**, **SAE** (alias) +- **diagrams.alibabacloud.compute.SimpleApplicationServer**, **SAS** (alias) +- **diagrams.alibabacloud.compute.WebAppService**, **WAS** (alias) + +## alibabacloud.application + +- **diagrams.alibabacloud.application.ApiGateway** +- **diagrams.alibabacloud.application.BeeBot** +- **diagrams.alibabacloud.application.BlockchainAsAService** +- **diagrams.alibabacloud.application.CloudCallCenter** +- **diagrams.alibabacloud.application.CodePipeline** +- **diagrams.alibabacloud.application.DirectMail** +- **diagrams.alibabacloud.application.LogService**, **SLS** (alias) +- **diagrams.alibabacloud.application.MessageNotificationService**, **MNS** (alias) +- **diagrams.alibabacloud.application.NodeJsPerformancePlatform** +- **diagrams.alibabacloud.application.OpenSearch** +- **diagrams.alibabacloud.application.PerformanceTestingService**, **PTS** (alias) +- **diagrams.alibabacloud.application.RdCloud** +- **diagrams.alibabacloud.application.SmartConversationAnalysis**, **SCA** (alias) +- **diagrams.alibabacloud.application.Yida** + +## alibabacloud.communication + +- **diagrams.alibabacloud.communication.DirectMail** +- **diagrams.alibabacloud.communication.MobilePush** + +## alibabacloud.analytics + +- **diagrams.alibabacloud.analytics.AnalyticDb** +- **diagrams.alibabacloud.analytics.ClickHouse** +- **diagrams.alibabacloud.analytics.DataLakeAnalytics** +- **diagrams.alibabacloud.analytics.ElaticMapReduce** +- **diagrams.alibabacloud.analytics.OpenSearch** diff --git a/docs/nodes/aws.md b/docs/nodes/aws.md index 1c8feb3f0..e5eff58d8 100644 --- a/docs/nodes/aws.md +++ b/docs/nodes/aws.md @@ -5,56 +5,6 @@ title: AWS Node classes list of aws provider. -## aws.analytics - -- **diagrams.aws.analytics.Analytics** -- **diagrams.aws.analytics.Athena** -- **diagrams.aws.analytics.CloudsearchSearchDocuments** -- **diagrams.aws.analytics.Cloudsearch** -- **diagrams.aws.analytics.DataPipeline** -- **diagrams.aws.analytics.ElasticsearchService**, **ES** (alias) -- **diagrams.aws.analytics.EMRCluster** -- **diagrams.aws.analytics.EMRHdfsCluster** -- **diagrams.aws.analytics.EMR** -- **diagrams.aws.analytics.GlueCrawlers** -- **diagrams.aws.analytics.GlueDataCatalog** -- **diagrams.aws.analytics.Glue** -- **diagrams.aws.analytics.KinesisDataAnalytics** -- **diagrams.aws.analytics.KinesisDataFirehose** -- **diagrams.aws.analytics.KinesisDataStreams** -- **diagrams.aws.analytics.KinesisVideoStreams** -- **diagrams.aws.analytics.Kinesis** -- **diagrams.aws.analytics.LakeFormation** -- **diagrams.aws.analytics.ManagedStreamingForKafka** -- **diagrams.aws.analytics.Quicksight** -- **diagrams.aws.analytics.RedshiftDenseComputeNode** -- **diagrams.aws.analytics.RedshiftDenseStorageNode** -- **diagrams.aws.analytics.Redshift** - -## aws.compute - -- **diagrams.aws.compute.ApplicationAutoScaling**, **AutoScaling** (alias) -- **diagrams.aws.compute.Batch** -- **diagrams.aws.compute.Compute** -- **diagrams.aws.compute.EC2ContainerRegistry**, **ECR** (alias) -- **diagrams.aws.compute.EC2** -- **diagrams.aws.compute.ElasticBeanstalk**, **EB** (alias) -- **diagrams.aws.compute.ElasticContainerService**, **ECS** (alias) -- **diagrams.aws.compute.ElasticKubernetesService**, **EKS** (alias) -- **diagrams.aws.compute.Fargate** -- **diagrams.aws.compute.Lambda** -- **diagrams.aws.compute.Lightsail** -- **diagrams.aws.compute.Outposts** -- **diagrams.aws.compute.ServerlessApplicationRepository**, **SAR** (alias) -- **diagrams.aws.compute.ThinkboxDeadline** -- **diagrams.aws.compute.ThinkboxDraft** -- **diagrams.aws.compute.ThinkboxFrost** -- **diagrams.aws.compute.ThinkboxKrakatoa** -- **diagrams.aws.compute.ThinkboxSequoia** -- **diagrams.aws.compute.ThinkboxStoke** -- **diagrams.aws.compute.ThinkboxXmesh** -- **diagrams.aws.compute.VmwareCloudOnAWS** - ## aws.database - **diagrams.aws.database.Aurora** @@ -70,29 +20,27 @@ Node classes list of aws provider. - **diagrams.aws.database.Redshift** - **diagrams.aws.database.Timestream** -## aws.devtools - -- **diagrams.aws.devtools.CloudDevelopmentKit** -- **diagrams.aws.devtools.Cloud9** -- **diagrams.aws.devtools.Codebuild** -- **diagrams.aws.devtools.Codecommit** -- **diagrams.aws.devtools.Codedeploy** -- **diagrams.aws.devtools.Codepipeline** -- **diagrams.aws.devtools.Codestar** -- **diagrams.aws.devtools.CommandLineInterface**, **CLI** (alias) -- **diagrams.aws.devtools.DeveloperTools**, **DevTools** (alias) -- **diagrams.aws.devtools.ToolsAndSdks** -- **diagrams.aws.devtools.XRay** - -## aws.engagement - -- **diagrams.aws.engagement.Connect** -- **diagrams.aws.engagement.Pinpoint** -- **diagrams.aws.engagement.SimpleEmailServiceSes**, **SES** (alias) - -## aws.game +## aws.security -- **diagrams.aws.game.Gamelift** +- **diagrams.aws.security.Artifact** +- **diagrams.aws.security.CertificateManager**, **ACM** (alias) +- **diagrams.aws.security.CloudDirectory** +- **diagrams.aws.security.Cloudhsm**, **CloudHSM** (alias) +- **diagrams.aws.security.Cognito** +- **diagrams.aws.security.DirectoryService**, **DS** (alias) +- **diagrams.aws.security.FirewallManager**, **FMS** (alias) +- **diagrams.aws.security.Guardduty** +- **diagrams.aws.security.IdentityAndAccessManagementIam**, **IAM** (alias) +- **diagrams.aws.security.Inspector** +- **diagrams.aws.security.KeyManagementService**, **KMS** (alias) +- **diagrams.aws.security.Macie** +- **diagrams.aws.security.ResourceAccessManager**, **RAM** (alias) +- **diagrams.aws.security.SecretsManager** +- **diagrams.aws.security.SecurityHub** +- **diagrams.aws.security.SecurityIdentityAndCompliance** +- **diagrams.aws.security.Shield** +- **diagrams.aws.security.SingleSignOn** +- **diagrams.aws.security.WAF** ## aws.general @@ -119,6 +67,82 @@ Node classes list of aws provider. - **diagrams.aws.integration.SimpleQueueServiceSqs**, **SQS** (alias) - **diagrams.aws.integration.StepFunctions**, **SF** (alias) +## aws.robotics + +- **diagrams.aws.robotics.RobomakerSimulator** +- **diagrams.aws.robotics.Robomaker** +- **diagrams.aws.robotics.Robotics** + +## aws.network + +- **diagrams.aws.network.APIGateway** +- **diagrams.aws.network.AppMesh** +- **diagrams.aws.network.ClientVpn** +- **diagrams.aws.network.CloudMap** +- **diagrams.aws.network.CloudFront**, **CF** (alias) +- **diagrams.aws.network.DirectConnect** +- **diagrams.aws.network.ElasticLoadBalancing**, **ELB** (alias) +- **diagrams.aws.network.Endpoint** +- **diagrams.aws.network.GlobalAccelerator**, **GAX** (alias) +- **diagrams.aws.network.InternetGateway** +- **diagrams.aws.network.Nacl** +- **diagrams.aws.network.NATGateway** +- **diagrams.aws.network.NetworkingAndContentDelivery** +- **diagrams.aws.network.PrivateSubnet** +- **diagrams.aws.network.Privatelink** +- **diagrams.aws.network.PublicSubnet** +- **diagrams.aws.network.Route53** +- **diagrams.aws.network.RouteTable** +- **diagrams.aws.network.SiteToSiteVpn** +- **diagrams.aws.network.TransitGateway** +- **diagrams.aws.network.VPCPeering** +- **diagrams.aws.network.VPCRouter** +- **diagrams.aws.network.VPC** + +## aws.management + +- **diagrams.aws.management.AutoScaling** +- **diagrams.aws.management.Cloudformation** +- **diagrams.aws.management.Cloudtrail** +- **diagrams.aws.management.Cloudwatch** +- **diagrams.aws.management.Codeguru** +- **diagrams.aws.management.CommandLineInterface** +- **diagrams.aws.management.Config** +- **diagrams.aws.management.ControlTower** +- **diagrams.aws.management.LicenseManager** +- **diagrams.aws.management.ManagedServices** +- **diagrams.aws.management.ManagementConsole** +- **diagrams.aws.management.Opsworks** +- **diagrams.aws.management.Organizations** +- **diagrams.aws.management.ServiceCatalog** +- **diagrams.aws.management.SystemsManagerParameterStore**, **ParameterStore** (alias) +- **diagrams.aws.management.SystemsManager**, **SSM** (alias) +- **diagrams.aws.management.TrustedAdvisor** +- **diagrams.aws.management.WellArchitectedTool** + +## aws.game + +- **diagrams.aws.game.Gamelift** + +## aws.storage + +- **diagrams.aws.storage.Backup** +- **diagrams.aws.storage.CloudendureDisasterRecovery**, **CDR** (alias) +- **diagrams.aws.storage.EFSInfrequentaccessPrimaryBg** +- **diagrams.aws.storage.EFSStandardPrimaryBg** +- **diagrams.aws.storage.ElasticBlockStoreEBS**, **EBS** (alias) +- **diagrams.aws.storage.ElasticFileSystemEFS**, **EFS** (alias) +- **diagrams.aws.storage.FsxForLustre** +- **diagrams.aws.storage.FsxForWindowsFileServer** +- **diagrams.aws.storage.Fsx**, **FSx** (alias) +- **diagrams.aws.storage.S3Glacier** +- **diagrams.aws.storage.SimpleStorageServiceS3**, **S3** (alias) +- **diagrams.aws.storage.SnowballEdge** +- **diagrams.aws.storage.Snowball** +- **diagrams.aws.storage.Snowmobile** +- **diagrams.aws.storage.StorageGateway** +- **diagrams.aws.storage.Storage** + ## aws.iot - **diagrams.aws.iot.Freertos**, **FreeRTOS** (alias) @@ -144,54 +168,49 @@ Node classes list of aws provider. - **diagrams.aws.iot.IotThingsGraph** - **diagrams.aws.iot.IotTopic** -## aws.management +## aws.engagement -- **diagrams.aws.management.AutoScaling** -- **diagrams.aws.management.Cloudformation** -- **diagrams.aws.management.Cloudtrail** -- **diagrams.aws.management.Cloudwatch** -- **diagrams.aws.management.Codeguru** -- **diagrams.aws.management.CommandLineInterface** -- **diagrams.aws.management.Config** -- **diagrams.aws.management.ControlTower** -- **diagrams.aws.management.LicenseManager** -- **diagrams.aws.management.ManagedServices** -- **diagrams.aws.management.ManagementConsole** -- **diagrams.aws.management.Opsworks** -- **diagrams.aws.management.Organizations** -- **diagrams.aws.management.ServiceCatalog** -- **diagrams.aws.management.SystemsManagerParameterStore**, **ParameterStore** (alias) -- **diagrams.aws.management.SystemsManager**, **SSM** (alias) -- **diagrams.aws.management.TrustedAdvisor** -- **diagrams.aws.management.WellArchitectedTool** +- **diagrams.aws.engagement.Connect** +- **diagrams.aws.engagement.Pinpoint** +- **diagrams.aws.engagement.SimpleEmailServiceSes**, **SES** (alias) -## aws.media +## aws.compute -- **diagrams.aws.media.ElasticTranscoder** -- **diagrams.aws.media.ElementalConductor** -- **diagrams.aws.media.ElementalDelta** -- **diagrams.aws.media.ElementalLive** -- **diagrams.aws.media.ElementalMediaconnect** -- **diagrams.aws.media.ElementalMediaconvert** -- **diagrams.aws.media.ElementalMedialive** -- **diagrams.aws.media.ElementalMediapackage** -- **diagrams.aws.media.ElementalMediastore** -- **diagrams.aws.media.ElementalMediatailor** -- **diagrams.aws.media.ElementalServer** +- **diagrams.aws.compute.ApplicationAutoScaling**, **AutoScaling** (alias) +- **diagrams.aws.compute.Batch** +- **diagrams.aws.compute.Compute** +- **diagrams.aws.compute.EC2ContainerRegistry**, **ECR** (alias) +- **diagrams.aws.compute.EC2** +- **diagrams.aws.compute.ElasticBeanstalk**, **EB** (alias) +- **diagrams.aws.compute.ElasticContainerService**, **ECS** (alias) +- **diagrams.aws.compute.ElasticKubernetesService**, **EKS** (alias) +- **diagrams.aws.compute.Fargate** +- **diagrams.aws.compute.Lambda** +- **diagrams.aws.compute.Lightsail** +- **diagrams.aws.compute.Outposts** +- **diagrams.aws.compute.ServerlessApplicationRepository**, **SAR** (alias) +- **diagrams.aws.compute.ThinkboxDeadline** +- **diagrams.aws.compute.ThinkboxDraft** +- **diagrams.aws.compute.ThinkboxFrost** +- **diagrams.aws.compute.ThinkboxKrakatoa** +- **diagrams.aws.compute.ThinkboxSequoia** +- **diagrams.aws.compute.ThinkboxStoke** +- **diagrams.aws.compute.ThinkboxXmesh** +- **diagrams.aws.compute.VmwareCloudOnAWS** -## aws.migration +## aws.devtools -- **diagrams.aws.migration.ApplicationDiscoveryService**, **ADS** (alias) -- **diagrams.aws.migration.CloudendureMigration**, **CEM** (alias) -- **diagrams.aws.migration.DatabaseMigrationService**, **DMS** (alias) -- **diagrams.aws.migration.Datasync** -- **diagrams.aws.migration.MigrationAndTransfer**, **MAT** (alias) -- **diagrams.aws.migration.MigrationHub** -- **diagrams.aws.migration.ServerMigrationService**, **SMS** (alias) -- **diagrams.aws.migration.SnowballEdge** -- **diagrams.aws.migration.Snowball** -- **diagrams.aws.migration.Snowmobile** -- **diagrams.aws.migration.TransferForSftp** +- **diagrams.aws.devtools.CloudDevelopmentKit** +- **diagrams.aws.devtools.Cloud9** +- **diagrams.aws.devtools.Codebuild** +- **diagrams.aws.devtools.Codecommit** +- **diagrams.aws.devtools.Codedeploy** +- **diagrams.aws.devtools.Codepipeline** +- **diagrams.aws.devtools.Codestar** +- **diagrams.aws.devtools.CommandLineInterface**, **CLI** (alias) +- **diagrams.aws.devtools.DeveloperTools**, **DevTools** (alias) +- **diagrams.aws.devtools.ToolsAndSdks** +- **diagrams.aws.devtools.XRay** ## aws.ml @@ -215,75 +234,56 @@ Node classes list of aws provider. - **diagrams.aws.ml.Transcribe** - **diagrams.aws.ml.Translate** -## aws.network - -- **diagrams.aws.network.APIGateway** -- **diagrams.aws.network.AppMesh** -- **diagrams.aws.network.ClientVpn** -- **diagrams.aws.network.CloudMap** -- **diagrams.aws.network.CloudFront**, **CF** (alias) -- **diagrams.aws.network.DirectConnect** -- **diagrams.aws.network.ElasticLoadBalancing**, **ELB** (alias) -- **diagrams.aws.network.Endpoint** -- **diagrams.aws.network.GlobalAccelerator**, **GAX** (alias) -- **diagrams.aws.network.InternetGateway** -- **diagrams.aws.network.Nacl** -- **diagrams.aws.network.NATGateway** -- **diagrams.aws.network.NetworkingAndContentDelivery** -- **diagrams.aws.network.PrivateSubnet** -- **diagrams.aws.network.Privatelink** -- **diagrams.aws.network.PublicSubnet** -- **diagrams.aws.network.Route53** -- **diagrams.aws.network.RouteTable** -- **diagrams.aws.network.SiteToSiteVpn** -- **diagrams.aws.network.TransitGateway** -- **diagrams.aws.network.VPCPeering** -- **diagrams.aws.network.VPCRouter** -- **diagrams.aws.network.VPC** - -## aws.robotics +## aws.migration -- **diagrams.aws.robotics.RobomakerSimulator** -- **diagrams.aws.robotics.Robomaker** -- **diagrams.aws.robotics.Robotics** +- **diagrams.aws.migration.ApplicationDiscoveryService**, **ADS** (alias) +- **diagrams.aws.migration.CloudendureMigration**, **CEM** (alias) +- **diagrams.aws.migration.DatabaseMigrationService**, **DMS** (alias) +- **diagrams.aws.migration.Datasync** +- **diagrams.aws.migration.MigrationAndTransfer**, **MAT** (alias) +- **diagrams.aws.migration.MigrationHub** +- **diagrams.aws.migration.ServerMigrationService**, **SMS** (alias) +- **diagrams.aws.migration.SnowballEdge** +- **diagrams.aws.migration.Snowball** +- **diagrams.aws.migration.Snowmobile** +- **diagrams.aws.migration.TransferForSftp** -## aws.security +## aws.analytics -- **diagrams.aws.security.Artifact** -- **diagrams.aws.security.CertificateManager**, **ACM** (alias) -- **diagrams.aws.security.CloudDirectory** -- **diagrams.aws.security.Cloudhsm**, **CloudHSM** (alias) -- **diagrams.aws.security.Cognito** -- **diagrams.aws.security.DirectoryService**, **DS** (alias) -- **diagrams.aws.security.FirewallManager**, **FMS** (alias) -- **diagrams.aws.security.Guardduty** -- **diagrams.aws.security.IdentityAndAccessManagementIam**, **IAM** (alias) -- **diagrams.aws.security.Inspector** -- **diagrams.aws.security.KeyManagementService**, **KMS** (alias) -- **diagrams.aws.security.Macie** -- **diagrams.aws.security.ResourceAccessManager**, **RAM** (alias) -- **diagrams.aws.security.SecretsManager** -- **diagrams.aws.security.SecurityHub** -- **diagrams.aws.security.SecurityIdentityAndCompliance** -- **diagrams.aws.security.Shield** -- **diagrams.aws.security.SingleSignOn** -- **diagrams.aws.security.WAF** +- **diagrams.aws.analytics.Analytics** +- **diagrams.aws.analytics.Athena** +- **diagrams.aws.analytics.CloudsearchSearchDocuments** +- **diagrams.aws.analytics.Cloudsearch** +- **diagrams.aws.analytics.DataPipeline** +- **diagrams.aws.analytics.ElasticsearchService**, **ES** (alias) +- **diagrams.aws.analytics.EMRCluster** +- **diagrams.aws.analytics.EMRHdfsCluster** +- **diagrams.aws.analytics.EMR** +- **diagrams.aws.analytics.GlueCrawlers** +- **diagrams.aws.analytics.GlueDataCatalog** +- **diagrams.aws.analytics.Glue** +- **diagrams.aws.analytics.KinesisDataAnalytics** +- **diagrams.aws.analytics.KinesisDataFirehose** +- **diagrams.aws.analytics.KinesisDataStreams** +- **diagrams.aws.analytics.KinesisVideoStreams** +- **diagrams.aws.analytics.Kinesis** +- **diagrams.aws.analytics.LakeFormation** +- **diagrams.aws.analytics.ManagedStreamingForKafka** +- **diagrams.aws.analytics.Quicksight** +- **diagrams.aws.analytics.RedshiftDenseComputeNode** +- **diagrams.aws.analytics.RedshiftDenseStorageNode** +- **diagrams.aws.analytics.Redshift** -## aws.storage +## aws.media -- **diagrams.aws.storage.Backup** -- **diagrams.aws.storage.CloudendureDisasterRecovery**, **CDR** (alias) -- **diagrams.aws.storage.EFSInfrequentaccessPrimaryBg** -- **diagrams.aws.storage.EFSStandardPrimaryBg** -- **diagrams.aws.storage.ElasticBlockStoreEBS**, **EBS** (alias) -- **diagrams.aws.storage.ElasticFileSystemEFS**, **EFS** (alias) -- **diagrams.aws.storage.FsxForLustre** -- **diagrams.aws.storage.FsxForWindowsFileServer** -- **diagrams.aws.storage.Fsx**, **FSx** (alias) -- **diagrams.aws.storage.S3Glacier** -- **diagrams.aws.storage.SimpleStorageServiceS3**, **S3** (alias) -- **diagrams.aws.storage.SnowballEdge** -- **diagrams.aws.storage.Snowball** -- **diagrams.aws.storage.Snowmobile** -- **diagrams.aws.storage.StorageGateway** -- **diagrams.aws.storage.Storage** +- **diagrams.aws.media.ElasticTranscoder** +- **diagrams.aws.media.ElementalConductor** +- **diagrams.aws.media.ElementalDelta** +- **diagrams.aws.media.ElementalLive** +- **diagrams.aws.media.ElementalMediaconnect** +- **diagrams.aws.media.ElementalMediaconvert** +- **diagrams.aws.media.ElementalMedialive** +- **diagrams.aws.media.ElementalMediapackage** +- **diagrams.aws.media.ElementalMediastore** +- **diagrams.aws.media.ElementalMediatailor** +- **diagrams.aws.media.ElementalServer** diff --git a/docs/nodes/gcp.md b/docs/nodes/gcp.md index 91032ce32..20c564535 100644 --- a/docs/nodes/gcp.md +++ b/docs/nodes/gcp.md @@ -5,18 +5,53 @@ title: GCP Node classes list of gcp provider. -## gcp.analytics +## gcp.database -- **diagrams.gcp.analytics.Bigquery**, **BigQuery** (alias) -- **diagrams.gcp.analytics.Composer** -- **diagrams.gcp.analytics.DataCatalog** -- **diagrams.gcp.analytics.DataFusion** -- **diagrams.gcp.analytics.Dataflow** -- **diagrams.gcp.analytics.Datalab** -- **diagrams.gcp.analytics.Dataprep** -- **diagrams.gcp.analytics.Dataproc** -- **diagrams.gcp.analytics.Genomics** -- **diagrams.gcp.analytics.Pubsub**, **PubSub** (alias) +- **diagrams.gcp.database.Bigtable**, **BigTable** (alias) +- **diagrams.gcp.database.Datastore** +- **diagrams.gcp.database.Firestore** +- **diagrams.gcp.database.Memorystore** +- **diagrams.gcp.database.Spanner** +- **diagrams.gcp.database.SQL** + +## gcp.security + +- **diagrams.gcp.security.Iam** +- **diagrams.gcp.security.IAP** +- **diagrams.gcp.security.KeyManagementService**, **KMS** (alias) +- **diagrams.gcp.security.ResourceManager** +- **diagrams.gcp.security.SecurityCommandCenter**, **SCC** (alias) +- **diagrams.gcp.security.SecurityScanner** + +## gcp.network + +- **diagrams.gcp.network.Armor** +- **diagrams.gcp.network.CDN** +- **diagrams.gcp.network.DedicatedInterconnect** +- **diagrams.gcp.network.DNS** +- **diagrams.gcp.network.ExternalIpAddresses** +- **diagrams.gcp.network.FirewallRules** +- **diagrams.gcp.network.LoadBalancing** +- **diagrams.gcp.network.NAT** +- **diagrams.gcp.network.Network** +- **diagrams.gcp.network.PartnerInterconnect** +- **diagrams.gcp.network.PremiumNetworkTier** +- **diagrams.gcp.network.Router** +- **diagrams.gcp.network.Routes** +- **diagrams.gcp.network.StandardNetworkTier** +- **diagrams.gcp.network.TrafficDirector** +- **diagrams.gcp.network.VirtualPrivateCloud**, **VPC** (alias) +- **diagrams.gcp.network.VPN** + +## gcp.storage + +- **diagrams.gcp.storage.Filestore** +- **diagrams.gcp.storage.PersistentDisk** +- **diagrams.gcp.storage.Storage**, **GCS** (alias) + +## gcp.iot + +- **diagrams.gcp.iot.IotCore** ## gcp.compute @@ -29,15 +64,6 @@ Node classes list of gcp provider. - **diagrams.gcp.compute.KubernetesEngine**, **GKE** (alias) - **diagrams.gcp.compute.Run** -## gcp.database - -- **diagrams.gcp.database.Bigtable**, **BigTable** (alias) -- **diagrams.gcp.database.Datastore** -- **diagrams.gcp.database.Firestore** -- **diagrams.gcp.database.Memorystore** -- **diagrams.gcp.database.Spanner** -- **diagrams.gcp.database.SQL** - ## gcp.devtools - **diagrams.gcp.devtools.Build** @@ -56,14 +82,6 @@ Node classes list of gcp provider. - **diagrams.gcp.devtools.ToolsForPowershell** - **diagrams.gcp.devtools.ToolsForVisualStudio** -## gcp.iot - -- **diagrams.gcp.iot.IotCore** - -## gcp.migration - -- **diagrams.gcp.migration.TransferAppliance** - ## gcp.ml - **diagrams.gcp.ml.AdvancedSolutionsLab** @@ -88,37 +106,19 @@ Node classes list of gcp provider. - **diagrams.gcp.ml.VideoIntelligenceAPI** - **diagrams.gcp.ml.VisionAPI** -## gcp.network - -- **diagrams.gcp.network.Armor** -- **diagrams.gcp.network.CDN** -- **diagrams.gcp.network.DedicatedInterconnect** -- **diagrams.gcp.network.DNS** -- **diagrams.gcp.network.ExternalIpAddresses** -- **diagrams.gcp.network.FirewallRules** -- **diagrams.gcp.network.LoadBalancing** -- **diagrams.gcp.network.NAT** -- **diagrams.gcp.network.Network** -- **diagrams.gcp.network.PartnerInterconnect** -- **diagrams.gcp.network.PremiumNetworkTier** -- **diagrams.gcp.network.Router** -- **diagrams.gcp.network.Routes** -- **diagrams.gcp.network.StandardNetworkTier** -- **diagrams.gcp.network.TrafficDirector** -- **diagrams.gcp.network.VirtualPrivateCloud**, **VPC** (alias) -- **diagrams.gcp.network.VPN** - -## gcp.security +## gcp.migration -- **diagrams.gcp.security.Iam** -- **diagrams.gcp.security.IAP** -- **diagrams.gcp.security.KeyManagementService**, **KMS** (alias) -- **diagrams.gcp.security.ResourceManager** -- **diagrams.gcp.security.SecurityCommandCenter**, **SCC** (alias) -- **diagrams.gcp.security.SecurityScanner** +- **diagrams.gcp.migration.TransferAppliance** -## gcp.storage +## gcp.analytics -- **diagrams.gcp.storage.Filestore** -- **diagrams.gcp.storage.PersistentDisk** -- **diagrams.gcp.storage.Storage**, **GCS** (alias) +- **diagrams.gcp.analytics.Bigquery**, **BigQuery** (alias) +- **diagrams.gcp.analytics.Composer** +- **diagrams.gcp.analytics.DataCatalog** +- **diagrams.gcp.analytics.DataFusion** +- **diagrams.gcp.analytics.Dataflow** +- **diagrams.gcp.analytics.Datalab** +- **diagrams.gcp.analytics.Dataprep** +- **diagrams.gcp.analytics.Dataproc** +- **diagrams.gcp.analytics.Genomics** +- **diagrams.gcp.analytics.Pubsub**, **PubSub** (alias) diff --git a/docs/nodes/k8s.md b/docs/nodes/k8s.md index d52584d0a..b0050cbc0 100644 --- a/docs/nodes/k8s.md +++ b/docs/nodes/k8s.md @@ -5,41 +5,31 @@ title: K8S Node classes list of k8s provider. -## k8s.clusterconfig +## k8s.rbac -- **diagrams.k8s.clusterconfig.HPA**, **HorizontalPodAutoscaler** (alias) -- **diagrams.k8s.clusterconfig.Limits**, **LimitRange** (alias) -- **diagrams.k8s.clusterconfig.Quota** +- **diagrams.k8s.rbac.CRole**, **ClusterRole** (alias) +- **diagrams.k8s.rbac.CRB**, **ClusterRoleBinding** (alias) +- **diagrams.k8s.rbac.Group** +- **diagrams.k8s.rbac.RB**, **RoleBinding** (alias) +- **diagrams.k8s.rbac.Role** +- **diagrams.k8s.rbac.SA**, **ServiceAccount** (alias) +- **diagrams.k8s.rbac.User** -## k8s.compute +## k8s.infra -- **diagrams.k8s.compute.Cronjob** -- **diagrams.k8s.compute.Deploy**, **Deployment** (alias) -- **diagrams.k8s.compute.DS**, **DaemonSet** (alias) -- **diagrams.k8s.compute.Job** -- **diagrams.k8s.compute.Pod** -- **diagrams.k8s.compute.RS**, **ReplicaSet** (alias) -- **diagrams.k8s.compute.STS**, **StatefulSet** (alias) +- **diagrams.k8s.infra.ETCD** +- **diagrams.k8s.infra.Master** +- **diagrams.k8s.infra.Node** -## k8s.controlplane +## k8s.podconfig -- **diagrams.k8s.controlplane.API**, **APIServer** (alias) -- **diagrams.k8s.controlplane.CCM** -- **diagrams.k8s.controlplane.CM**, **ControllerManager** (alias) -- **diagrams.k8s.controlplane.KProxy**, **KubeProxy** (alias) -- **diagrams.k8s.controlplane.Kubelet** -- **diagrams.k8s.controlplane.Sched**, **Scheduler** (alias) +- **diagrams.k8s.podconfig.CM**, **ConfigMap** (alias) +- **diagrams.k8s.podconfig.Secret** ## k8s.group - **diagrams.k8s.group.NS**, **Namespace** (alias) -## k8s.infra - -- **diagrams.k8s.infra.ETCD** -- **diagrams.k8s.infra.Master** -- **diagrams.k8s.infra.Node** - ## k8s.network - **diagrams.k8s.network.Ep**, **Endpoint** (alias) @@ -52,24 +42,34 @@ Node classes list of k8s provider. - **diagrams.k8s.others.CRD** - **diagrams.k8s.others.PSP** -## k8s.podconfig - -- **diagrams.k8s.podconfig.CM**, **ConfigMap** (alias) -- **diagrams.k8s.podconfig.Secret** - -## k8s.rbac - -- **diagrams.k8s.rbac.CRole**, **ClusterRole** (alias) -- **diagrams.k8s.rbac.CRB**, **ClusterRoleBinding** (alias) -- **diagrams.k8s.rbac.Group** -- **diagrams.k8s.rbac.RB**, **RoleBinding** (alias) -- **diagrams.k8s.rbac.Role** -- **diagrams.k8s.rbac.SA**, **ServiceAccount** (alias) -- **diagrams.k8s.rbac.User** - ## k8s.storage - **diagrams.k8s.storage.PV**, **PersistnetVolume** (alias) - **diagrams.k8s.storage.PVC**, **PersistentVolumeClaim** (alias) - **diagrams.k8s.storage.SC**, **StorageClass** (alias) - **diagrams.k8s.storage.Vol**, **Volume** (alias) + +## k8s.clusterconfig + +- **diagrams.k8s.clusterconfig.HPA**, **HorizontalPodAutoscaler** (alias) +- **diagrams.k8s.clusterconfig.Limits**, **LimitRange** (alias) +- **diagrams.k8s.clusterconfig.Quota** + +## k8s.controlplane + +- **diagrams.k8s.controlplane.API**, **APIServer** (alias) +- **diagrams.k8s.controlplane.CCM** +- **diagrams.k8s.controlplane.CM**, **ControllerManager** (alias) +- **diagrams.k8s.controlplane.KProxy**, **KubeProxy** (alias) +- **diagrams.k8s.controlplane.Kubelet** +- **diagrams.k8s.controlplane.Sched**, **Scheduler** (alias) + +## k8s.compute + +- **diagrams.k8s.compute.Cronjob** +- **diagrams.k8s.compute.Deploy**, **Deployment** (alias) +- **diagrams.k8s.compute.DS**, **DaemonSet** (alias) +- **diagrams.k8s.compute.Job** +- **diagrams.k8s.compute.Pod** +- **diagrams.k8s.compute.RS**, **ReplicaSet** (alias) +- **diagrams.k8s.compute.STS**, **StatefulSet** (alias) diff --git a/docs/nodes/oci.md b/docs/nodes/oci.md index 568fe9abe..8f30f99f1 100644 --- a/docs/nodes/oci.md +++ b/docs/nodes/oci.md @@ -5,14 +5,17 @@ title: OCI Node classes list of oci provider. -## oci.compute +## oci.database -- **diagrams.oci.compute.BmGrey**, **BareMetalGrey** (alias) -- **diagrams.oci.compute.Bm**, **BareMetal** (alias) -- **diagrams.oci.compute.ContainerGrey** -- **diagrams.oci.compute.Container** -- **diagrams.oci.compute.VmGrey**, **VirtualMachineGrey** (alias) -- **diagrams.oci.compute.Vm**, **VirtualMachine** (alias) +- **diagrams.oci.database.DatabaseserviceGrey**, **DBServiceGrey** (alias) +- **diagrams.oci.database.Databaseservice**, **DBService** (alias) + +## oci.devops + +- **diagrams.oci.devops.ApiserviceGrey** +- **diagrams.oci.devops.Apiservice** +- **diagrams.oci.devops.ResourcemgmtGrey** +- **diagrams.oci.devops.Resourcemgmt** ## oci.connectivity @@ -27,71 +30,6 @@ Node classes list of oci provider. - **diagrams.oci.connectivity.VpnGrey** - **diagrams.oci.connectivity.Vpn** -## oci.database - -- **diagrams.oci.database.DatabaseserviceGrey**, **DBServiceGrey** (alias) -- **diagrams.oci.database.Databaseservice**, **DBService** (alias) - -## oci.devops - -- **diagrams.oci.devops.ApiserviceGrey** -- **diagrams.oci.devops.Apiservice** -- **diagrams.oci.devops.ResourcemgmtGrey** -- **diagrams.oci.devops.Resourcemgmt** - -## oci.edge - -- **diagrams.oci.edge.CdnGrey** -- **diagrams.oci.edge.Cdn** -- **diagrams.oci.edge.DnsGrey** -- **diagrams.oci.edge.Dns** -- **diagrams.oci.edge.EmaildeliveryGrey** -- **diagrams.oci.edge.Emaildelivery** -- **diagrams.oci.edge.WafGrey** -- **diagrams.oci.edge.Waf** - -## oci.monitoring - -- **diagrams.oci.monitoring.AlarmGrey** -- **diagrams.oci.monitoring.Alarm** -- **diagrams.oci.monitoring.EventGrey** -- **diagrams.oci.monitoring.Event** -- **diagrams.oci.monitoring.HealthcheckGrey** -- **diagrams.oci.monitoring.Healthcheck** -- **diagrams.oci.monitoring.LoggingGrey** -- **diagrams.oci.monitoring.Logging** -- **diagrams.oci.monitoring.NotificationsGrey** -- **diagrams.oci.monitoring.Notifications** -- **diagrams.oci.monitoring.QueuingGrey** -- **diagrams.oci.monitoring.Queuing** -- **diagrams.oci.monitoring.SearchGrey** -- **diagrams.oci.monitoring.Search** -- **diagrams.oci.monitoring.StreamingGrey** -- **diagrams.oci.monitoring.Streaming** -- **diagrams.oci.monitoring.TelemetryGrey** -- **diagrams.oci.monitoring.Telemetry** -- **diagrams.oci.monitoring.WorkflowGrey** -- **diagrams.oci.monitoring.Workflow** - -## oci.network - -- **diagrams.oci.network.DrgGrey** -- **diagrams.oci.network.Drg** -- **diagrams.oci.network.FirewallGrey** -- **diagrams.oci.network.Firewall** -- **diagrams.oci.network.InternetgatewayGrey** -- **diagrams.oci.network.Internetgateway** -- **diagrams.oci.network.LoadbalanceGrey** -- **diagrams.oci.network.Loadbalance** -- **diagrams.oci.network.RoutetableGrey** -- **diagrams.oci.network.Routetable** -- **diagrams.oci.network.SecuritylistsGrey** -- **diagrams.oci.network.Securitylists** -- **diagrams.oci.network.ServiceGatewayGrey** -- **diagrams.oci.network.ServiceGateway** -- **diagrams.oci.network.VcloudnetworkGrey** -- **diagrams.oci.network.Vcloudnetwork** - ## oci.security - **diagrams.oci.security.AuditGrey** @@ -115,6 +53,36 @@ Node classes list of oci provider. - **diagrams.oci.security.TaggingGrey** - **diagrams.oci.security.Tagging** +## oci.network + +- **diagrams.oci.network.DrgGrey** +- **diagrams.oci.network.Drg** +- **diagrams.oci.network.FirewallGrey** +- **diagrams.oci.network.Firewall** +- **diagrams.oci.network.InternetgatewayGrey** +- **diagrams.oci.network.Internetgateway** +- **diagrams.oci.network.LoadbalanceGrey** +- **diagrams.oci.network.Loadbalance** +- **diagrams.oci.network.RoutetableGrey** +- **diagrams.oci.network.Routetable** +- **diagrams.oci.network.SecuritylistsGrey** +- **diagrams.oci.network.Securitylists** +- **diagrams.oci.network.ServiceGatewayGrey** +- **diagrams.oci.network.ServiceGateway** +- **diagrams.oci.network.VcloudnetworkGrey** +- **diagrams.oci.network.Vcloudnetwork** + +## oci.edge + +- **diagrams.oci.edge.CdnGrey** +- **diagrams.oci.edge.Cdn** +- **diagrams.oci.edge.DnsGrey** +- **diagrams.oci.edge.Dns** +- **diagrams.oci.edge.EmaildeliveryGrey** +- **diagrams.oci.edge.Emaildelivery** +- **diagrams.oci.edge.WafGrey** +- **diagrams.oci.edge.Waf** + ## oci.storage - **diagrams.oci.storage.BackuprestoreGrey** @@ -131,3 +99,35 @@ Node classes list of oci provider. - **diagrams.oci.storage.Objectstorage** - **diagrams.oci.storage.StoragegatewayGrey** - **diagrams.oci.storage.Storagegateway** + +## oci.compute + +- **diagrams.oci.compute.BmGrey**, **BareMetalGrey** (alias) +- **diagrams.oci.compute.Bm**, **BareMetal** (alias) +- **diagrams.oci.compute.ContainerGrey** +- **diagrams.oci.compute.Container** +- **diagrams.oci.compute.VmGrey**, **VirtualMachineGrey** (alias) +- **diagrams.oci.compute.Vm**, **VirtualMachine** (alias) + +## oci.monitoring + +- **diagrams.oci.monitoring.AlarmGrey** +- **diagrams.oci.monitoring.Alarm** +- **diagrams.oci.monitoring.EventGrey** +- **diagrams.oci.monitoring.Event** +- **diagrams.oci.monitoring.HealthcheckGrey** +- **diagrams.oci.monitoring.Healthcheck** +- **diagrams.oci.monitoring.LoggingGrey** +- **diagrams.oci.monitoring.Logging** +- **diagrams.oci.monitoring.NotificationsGrey** +- **diagrams.oci.monitoring.Notifications** +- **diagrams.oci.monitoring.QueuingGrey** +- **diagrams.oci.monitoring.Queuing** +- **diagrams.oci.monitoring.SearchGrey** +- **diagrams.oci.monitoring.Search** +- **diagrams.oci.monitoring.StreamingGrey** +- **diagrams.oci.monitoring.Streaming** +- **diagrams.oci.monitoring.TelemetryGrey** +- **diagrams.oci.monitoring.Telemetry** +- **diagrams.oci.monitoring.WorkflowGrey** +- **diagrams.oci.monitoring.Workflow** diff --git a/docs/nodes/onprem.md b/docs/nodes/onprem.md index aedecdf33..1100283bf 100644 --- a/docs/nodes/onprem.md +++ b/docs/nodes/onprem.md @@ -66,48 +66,27 @@ Node classes list of onprem provider. - **diagrams.onprem.database.Postgresql**, **PostgreSQL** (alias) - **diagrams.onprem.database.Scylla** -## onprem.etl - -- **diagrams.onprem.etl.Embulk** - -## onprem.gitops - -- **diagrams.onprem.gitops.Argocd**, **ArgoCD** (alias) - -## onprem.iac +## onprem.security -- **diagrams.onprem.iac.Ansible** -- **diagrams.onprem.iac.Awx** -- **diagrams.onprem.iac.Terraform** +- **diagrams.onprem.security.Trivy** +- **diagrams.onprem.security.Vault** -## onprem.inmemory +## onprem.ci -- **diagrams.onprem.inmemory.Aerospike** -- **diagrams.onprem.inmemory.Hazelcast** -- **diagrams.onprem.inmemory.Memcached** -- **diagrams.onprem.inmemory.Redis** +- **diagrams.onprem.ci.Circleci**, **CircleCI** (alias) +- **diagrams.onprem.ci.Gitlabci**, **GitlabCI** (alias) +- **diagrams.onprem.ci.Jenkins** +- **diagrams.onprem.ci.Teamcity**, **TC** (alias) +- **diagrams.onprem.ci.Travisci**, **TravisCI** (alias) -## onprem.logging +## onprem.etl -- **diagrams.onprem.logging.Fluentbit**, **FluentBit** (alias) -- **diagrams.onprem.logging.Fluentd** -- **diagrams.onprem.logging.Logstash**, **LogStash** (alias) -- **diagrams.onprem.logging.Loki** +- **diagrams.onprem.etl.Embulk** ## onprem.mlops - **diagrams.onprem.mlops.Polyaxon** -## onprem.monitoring - -- **diagrams.onprem.monitoring.Datadog** -- **diagrams.onprem.monitoring.Grafana** -- **diagrams.onprem.monitoring.Kibana** -- **diagrams.onprem.monitoring.Prometheus** -- **diagrams.onprem.monitoring.Sentry** -- **diagrams.onprem.monitoring.Splunk** -- **diagrams.onprem.monitoring.Thanos** - ## onprem.network - **diagrams.onprem.network.Apache** @@ -128,23 +107,33 @@ Node classes list of onprem provider. - **diagrams.onprem.network.Vyos**, **VyOS** (alias) - **diagrams.onprem.network.Zookeeper** -## onprem.queue +## onprem.inmemory -- **diagrams.onprem.queue.Activemq**, **ActiveMQ** (alias) -- **diagrams.onprem.queue.Celery** -- **diagrams.onprem.queue.Kafka** -- **diagrams.onprem.queue.Rabbitmq**, **RabbitMQ** (alias) -- **diagrams.onprem.queue.Zeromq**, **ZeroMQ** (alias) +- **diagrams.onprem.inmemory.Aerospike** +- **diagrams.onprem.inmemory.Hazelcast** +- **diagrams.onprem.inmemory.Memcached** +- **diagrams.onprem.inmemory.Redis** ## onprem.search - **diagrams.onprem.search.Elasticsearch** - **diagrams.onprem.search.Solr** -## onprem.security +## onprem.container -- **diagrams.onprem.security.Trivy** -- **diagrams.onprem.security.Vault** +- **diagrams.onprem.container.Docker** +- **diagrams.onprem.container.Rkt**, **RKT** (alias) + +## onprem.iac + +- **diagrams.onprem.iac.Ansible** +- **diagrams.onprem.iac.Awx** +- **diagrams.onprem.iac.Terraform** + +## onprem.compute + +- **diagrams.onprem.compute.Nomad** +- **diagrams.onprem.compute.Server** ## onprem.vcs @@ -158,3 +147,56 @@ Node classes list of onprem provider. - **diagrams.onprem.workflow.Digdag** - **diagrams.onprem.workflow.Kubeflow**, **KubeFlow** (alias) - **diagrams.onprem.workflow.Nifi**, **NiFi** (alias) + +## onprem.queue + +- **diagrams.onprem.queue.Activemq**, **ActiveMQ** (alias) +- **diagrams.onprem.queue.Celery** +- **diagrams.onprem.queue.Kafka** +- **diagrams.onprem.queue.Rabbitmq**, **RabbitMQ** (alias) +- **diagrams.onprem.queue.Zeromq**, **ZeroMQ** (alias) + +## onprem.cd + +- **diagrams.onprem.cd.Spinnaker** + +## onprem.gitops + +- **diagrams.onprem.gitops.Argocd**, **ArgoCD** (alias) +- **diagrams.onprem.gitops.Flagger** +- **diagrams.onprem.gitops.Flux** + +## onprem.monitoring + +- **diagrams.onprem.monitoring.Datadog** +- **diagrams.onprem.monitoring.Grafana** +- **diagrams.onprem.monitoring.Kibana** +- **diagrams.onprem.monitoring.Prometheus** +- **diagrams.onprem.monitoring.Sentry** +- **diagrams.onprem.monitoring.Splunk** +- **diagrams.onprem.monitoring.Thanos** + +## onprem.client + +- **diagrams.onprem.client.Client** +- **diagrams.onprem.client.User** +- **diagrams.onprem.client.Users** + +## onprem.logging + +- **diagrams.onprem.logging.Fluentbit**, **FluentBit** (alias) +- **diagrams.onprem.logging.Fluentd** +- **diagrams.onprem.logging.Logstash**, **LogStash** (alias) +- **diagrams.onprem.logging.Loki** + +## onprem.analytics + +- **diagrams.onprem.analytics.Beam** +- **diagrams.onprem.analytics.Flink** +- **diagrams.onprem.analytics.Hadoop** +- **diagrams.onprem.analytics.Hive** +- **diagrams.onprem.analytics.Metabase** +- **diagrams.onprem.analytics.Norikra** +- **diagrams.onprem.analytics.Spark** +- **diagrams.onprem.analytics.Storm** +- **diagrams.onprem.analytics.Tableau** diff --git a/resources/onprem/gitops/flagger.png b/resources/onprem/gitops/flagger.png new file mode 100644 index 0000000000000000000000000000000000000000..de8835dfe82e91b6617ff65da5017ad9bef805f7 GIT binary patch literal 27435 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

3scV#Nt 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 m)#$xte^z|AR)dY0YE^+>61&DCE|o?C95h6 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 FO@gd9V|MP=evUR-(J10cnh`}N81`%# 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