All Projects → dcasati → Kubernetes Plantuml

dcasati / Kubernetes Plantuml

Licence: mit
Kubernetes diagrams using VS Code

Projects that are alternatives of or similar to Kubernetes Plantuml

C4 Builder
This is a documentation builder. You feed it .md and .puml and it exports a site, pdf, or a markdown with navigation.
Stars: ✭ 164 (+241.67%)
Mutual labels:  architecture, diagrams
Azure Plantuml
PlantUML sprites, macros, and other includes for Azure services
Stars: ✭ 247 (+414.58%)
Mutual labels:  architecture, graphviz
Diagrams
🎨 Diagram as Code for prototyping cloud system architectures
Stars: ✭ 15,756 (+32725%)
Mutual labels:  architecture, graphviz
Glance
A visual Haskell
Stars: ✭ 620 (+1191.67%)
Mutual labels:  graphviz, diagrams
C4 Plantuml
C4-PlantUML combines the benefits of PlantUML and the C4 model for providing a simple way of describing and communicate software architectures
Stars: ✭ 3,522 (+7237.5%)
Mutual labels:  architecture, graphviz
Kroki
Creates diagrams from textual descriptions!
Stars: ✭ 774 (+1512.5%)
Mutual labels:  graphviz, diagrams
Unity Signals
Signals for Unity3D
Stars: ✭ 32 (-33.33%)
Mutual labels:  architecture
Tfgraphviz
A visualization tool to show a TensorFlow's graph like TensorBoard
Stars: ✭ 40 (-16.67%)
Mutual labels:  graphviz
Android Kotlin Boilerplate
This project demonstrates Android Architecture Components (Viewodel, Livedata) and Dagger for dependency Injection in Kotlin
Stars: ✭ 28 (-41.67%)
Mutual labels:  architecture
Super Resolution cnn
Implementation of 'Image Super-Resolution using Deep Convolutional Network'
Stars: ✭ 27 (-43.75%)
Mutual labels:  architecture
Go Restful Api
An idiomatic Go REST API starter kit (boilerplate) following SOLID principles and Clean Architecture
Stars: ✭ 1,043 (+2072.92%)
Mutual labels:  architecture
Super Simple Architecture
🧩 Super Simple Architecture in Swift
Stars: ✭ 44 (-8.33%)
Mutual labels:  architecture
Awesome Architecture
A curated list of awesome software, libraries, resources and shiny things used in the architecture industry
Stars: ✭ 37 (-22.92%)
Mutual labels:  architecture
Swiftplantuml
A command-line tool and Swift Package for generating class diagrams powered by PlantUML
Stars: ✭ 34 (-29.17%)
Mutual labels:  diagrams
Terraform Aws Jenkins Ha Agents
A terraform module for a highly available Jenkins deployment.
Stars: ✭ 41 (-14.58%)
Mutual labels:  architecture
Deeplabv3 Plus
Tensorflow 2.3.0 implementation of DeepLabV3-Plus
Stars: ✭ 32 (-33.33%)
Mutual labels:  architecture
2018 Android Architecture Components Workshop
Android Architectures & Architecture Components Hands-on
Stars: ✭ 45 (-6.25%)
Mutual labels:  architecture
Fullstack Starterkit
GraphQL first full-stack starter kit with Node, React. Powered by TypeScript
Stars: ✭ 943 (+1864.58%)
Mutual labels:  architecture
Vitruvio
Vitruvio brings the powerful ArcGIS CityEngine procedural modeling capabilities to Unreal Engine.
Stars: ✭ 37 (-22.92%)
Mutual labels:  architecture
Awesome Cto
A curated and opinionated list of resources for Chief Technology Officers, with the emphasis on startups
Stars: ✭ 10,834 (+22470.83%)
Mutual labels:  architecture

Kubernetes-PlantUML

These are the PlantUML sprites, macros and stereotypes for creating PlantUML diagrams with the Kubernetes components. The official Kubernetes Icons Set (where this work is based) can be found here

This repo is heavily influenced by the awesome work from Ricardo Niepel on Azure-PlantUML

vscode

Table of Contents

Getting Started

TL;DR - If you're familiar with PlantUML this is what you need:

' Kubernetes
!define KubernetesPuml https://raw.githubusercontent.com/dcasati/kubernetes-PlantUML/master/dist

' global definition
!includeurl KubernetesPuml/kubernetes_Common.puml
!includeurl KubernetesPuml/kubernetes_Context.puml
!includeurl KubernetesPuml/kubernetes_Simplified.puml

' k8s specific components
!includeurl KubernetesPuml/OSS/KubernetesPod.puml
!includeurl KubernetesPuml/OSS/KubernetesPsp.puml
!includeurl KubernetesPuml/OSS/KubernetesPv.puml
!includeurl KubernetesPuml/OSS/KubernetesPvc.puml

[...]

If you're starting with PlantUML, here's what you need:

  1. VS Code with the PlantUML extension PlantUML
  2. Graphviz
  3. Copy one of the examples from: https://github.com/dcasati/kubernetes-PlantUML/tree/master/samples

I also have an introduction to PlantUML here

Examples

A basic hello world example could look like this:

kubernetes

This picture was rendered with the following code:

@startuml kubernetes

footer Kubernetes Plant-UML
scale max 1024 width

skinparam nodesep 10
skinparam ranksep 10

' Kubernetes
!define KubernetesPuml https://raw.githubusercontent.com/dcasati/kubernetes-PlantUML/master/dist

!includeurl KubernetesPuml/kubernetes_Common.puml
!includeurl KubernetesPuml/kubernetes_Context.puml
!includeurl KubernetesPuml/kubernetes_Simplified.puml

!includeurl KubernetesPuml/OSS/KubernetesSvc.puml
!includeurl KubernetesPuml/OSS/KubernetesPod.puml

actor "User" as userAlias
left to right direction

' Kubernetes Components
Cluster_Boundary(cluster, "Kubernetes Cluster") {
    Namespace_Boundary(ns, "Web") {
        KubernetesSvc(svc, "service", "")
        KubernetesPod(pod1, "web-pod1", "")
        KubernetesPod(pod2, "web-pod2", "")
    }
}

Rel(userAlias,svc,"get HTTP/1.1 index.html", "1")
Rel(svc,pod1,"load Balances to Pods", "2")
Rel(svc,pod2,"load Balances to Pods", "2")
Rel_U(pod1, svc, "serves content", "3")
Rel(svc, userAlias, "return content to", "4")
@enduml

A more complete example would look like this picture:

more complete example

and the accompaining code:

@startuml kubernetes

footer Kubernetes Plant-UML
scale max 1024 width

skinparam nodesep 10
skinparam ranksep 10

' Kubernetes
!define KubernetesPuml https://raw.githubusercontent.com/dcasati/kubernetes-PlantUML/master/dist

!includeurl KubernetesPuml/kubernetes_Common.puml
!includeurl KubernetesPuml/kubernetes_Context.puml
!includeurl KubernetesPuml/kubernetes_Simplified.puml

!includeurl KubernetesPuml/OSS/KubernetesSvc.puml
!includeurl KubernetesPuml/OSS/KubernetesIng.puml
!includeurl KubernetesPuml/OSS/KubernetesPod.puml
!includeurl KubernetesPuml/OSS/KubernetesRs.puml
!includeurl KubernetesPuml/OSS/KubernetesDeploy.puml
!includeurl KubernetesPuml/OSS/KubernetesHpa.puml

actor "User" as userAlias
left to right direction

' Kubernetes Components
Cluster_Boundary(cluster, "Kubernetes Cluster") {
    Namespace_Boundary(ns, "Back End") {
        KubernetesIng(ingress, "your.domain.com", "")
        KubernetesSvc(svc, "service", "")
        KubernetesPod(pod1, "pod1", "")
        KubernetesPod(pod2, "pod2", "")
        KubernetesPod(pod3, "pod3", "")

        KubernetesRs(rs,"","")
        KubernetesDeploy(deploy,"deployment","")
        KubernetesHpa(hpa, "HPA", "")
    }
}

Rel(userAlias,ingress," ")
Rel(ingress,svc," ")

Rel(svc,pod1," ")
Rel(svc,pod2," ")
Rel(svc,pod3," ")

Rel_U(rs,pod1," ")
Rel_U(rs,pod2," ")
Rel_U(rs,pod3," ")

Rel_U(deploy,rs, " ")
Rel_U(hpa,deploy, " ")

@enduml

Using kubernetes-PlantUML with other PlantUML files

You can certainly mix and match the stencils from kubernetes-PlantUML with other PlantUML files. For instance, here is an example of using it with the Azure-PlantUML files to ilustrate this reference architecture microservices

microsoervices-diagram

The equivalent of that in PlantUML would look like this:

microservices-plantuml

@startuml kubernetes

footer Kubernetes Plant-UML
scale max 1024 width

skinparam nodesep 10
skinparam ranksep 10

' Azure
!define AzurePuml https://raw.githubusercontent.com/RicardoNiepel/Azure-PlantUML/release/2-1/dist

!includeurl AzurePuml/AzureCommon.puml
!includeurl AzurePuml/AzureSimplified.puml

!includeurl AzurePuml/Containers/AzureContainerRegistry.puml
!includeurl AzurePuml/Databases/AzureCosmosDb.puml
!includeurl AzurePuml/Databases/AzureSqlDatabase.puml
!includeurl AzurePuml/DevOps/AzurePipelines.puml
!includeurl AzurePuml/Identity/AzureActiveDirectory.puml
!includeurl AzurePuml/Networking/AzureLoadBalancer.puml
!includeurl AzurePuml/Security/AzureKeyVault.puml

' Kubernetes
!define KubernetesPuml https://raw.githubusercontent.com/dcasati/kubernetes-PlantUML/master/dist

!includeurl KubernetesPuml/kubernetes_Common.puml
!includeurl KubernetesPuml/kubernetes_Context.puml
!includeurl KubernetesPuml/kubernetes_Simplified.puml

!includeurl KubernetesPuml/OSS/KubernetesApi.puml
!includeurl KubernetesPuml/OSS/KubernetesIng.puml
!includeurl KubernetesPuml/OSS/KubernetesPod.puml

actor "DevOps" as devopsAlias
collections "Client Apps" as clientalias
collections "Helm Charts" as helmalias

left to right direction

' Azure Components
AzureActiveDirectory(aad, "\nAzure\nActive Directory", "Global")
AzureContainerRegistry(acr, "ACR", "Canada Central")
AzureCosmosDb(cosmos, "\nCosmos DB", "Global")
AzureKeyVault(keyvault, "\nAzure\nKey Vault", "Global")
AzureLoadBalancer(alb, "\nLoad\nBalancer", "Canada Central")
AzureSqlDatabase(sql, "\nExternal\ndata stores", "Canada Central")
AzurePipelines(ado, "CI/CD\nAzure Pipelines", "Global")

' Kubernetes Components
Cluster_Boundary(cluster, "Kubernetes Cluster") {
    KubernetesApi(KubernetesApi, "Kubernetes API", "")

    Namespace_Boundary(nsFrontEnd, "Front End") {
        KubernetesIng(ingress, "API Gateway", "")
    }

    Namespace_Boundary(nsBackEnd, "Back End") {
        KubernetesPod(KubernetesBE1, "", "")
        KubernetesPod(KubernetesBE2, "", "")
        KubernetesPod(KubernetesBE3, "", "")
    }

    Namespace_Boundary(nsUtil, "Utiliy Services") {
        KubernetesPod(KubernetesUtil1, "", "")
        KubernetesPod(KubernetesUtil2, "","")
    }
}

Rel(devopsAlias, aad, "AUTH")
Rel(helmalias, KubernetesApi, "helm upgrade")

Rel(aad, keyvault, " ")
Rel(KubernetesApi, aad, "RBAC", "ASYNC")

Rel(clientalias, alb, "HTTP", "ASYNC")
Rel(alb, ingress, "HTTP", "ASYNC")

Rel(ingress, KubernetesBE1, " ")
Rel(KubernetesBE1, KubernetesBE2, " ")
Rel(KubernetesBE1, KubernetesBE3, " ")

Rel(KubernetesBE2, sql, " ")
Rel(KubernetesBE3, keyvault, "Pod Identity")
Rel(KubernetesBE3, cosmos, " ")

Rel(ado, acr, "docker push")
Rel_U(KubernetesApi, acr, "docker pull")
@enduml

List of Supported Symbols

Category Macro (Name)
Mono 
Url
OSS
OSS KubernetesCronjob (Kubernetes Cronjob) KubernetesCronjob OSS/KubernetesCronjob.puml
OSS KubernetesGroup (Kubernetes Group) KubernetesGroup OSS/KubernetesGroup.puml
OSS KubernetesPsp (Kubernetes Psp) KubernetesPsp OSS/KubernetesPsp.puml
OSS KubernetesRole (Kubernetes Role) KubernetesRole OSS/KubernetesRole.puml
OSS KubernetesApi (Kubernetes Api) KubernetesApi OSS/KubernetesApi.puml
OSS KubernetesJob (Kubernetes Job) KubernetesJob OSS/KubernetesJob.puml
OSS KubernetesCm (Kubernetes Cm) KubernetesCm OSS/KubernetesCm.puml
OSS KubernetesMaster (Kubernetes Master) KubernetesMaster OSS/KubernetesMaster.puml
OSS KubernetesKproxy (Kubernetes Kproxy) KubernetesKproxy OSS/KubernetesKproxy.puml
OSS KubernetesCrd (Kubernetes Crd) KubernetesCrd OSS/KubernetesCrd.puml
OSS KubernetesDs (Kubernetes Ds) KubernetesDs OSS/KubernetesDs.puml
OSS KubernetesSc (Kubernetes Sc) KubernetesSc OSS/KubernetesSc.puml
OSS KubernetesCrb (Kubernetes Crb) KubernetesCrb OSS/KubernetesCrb.puml
OSS KubernetesSched (Kubernetes Sched) KubernetesSched OSS/KubernetesSched.puml
OSS KubernetesLimits (Kubernetes Limits) KubernetesLimits OSS/KubernetesLimits.puml
OSS KubernetesQuota (Kubernetes Quota) KubernetesQuota OSS/KubernetesQuota.puml
OSS KubernetesVol (Kubernetes Vol) KubernetesVol OSS/KubernetesVol.puml
OSS KubernetesSa (Kubernetes Sa) KubernetesSa OSS/KubernetesSa.puml
OSS KubernetesKubelet (Kubernetes Kubelet) KubernetesKubelet OSS/KubernetesKubelet.puml
OSS KubernetesPvc (Kubernetes Pvc) KubernetesPvc OSS/KubernetesPvc.puml
OSS KubernetesCcm (Kubernetes Ccm) KubernetesCcm OSS/KubernetesCcm.puml
OSS KubernetesSts (Kubernetes Sts) KubernetesSts OSS/KubernetesSts.puml
OSS KubernetesNetpol (Kubernetes Netpol) KubernetesNetpol OSS/KubernetesNetpol.puml
OSS KubernetesCrole (Kubernetes Crole) KubernetesCrole OSS/KubernetesCrole.puml
OSS KubernetesRs (Kubernetes Rs) KubernetesRs OSS/KubernetesRs.puml
OSS KubernetesNode (Kubernetes Node) KubernetesNode OSS/KubernetesNode.puml
OSS KubernetesSecret (Kubernetes Secret) KubernetesSecret OSS/KubernetesSecret.puml
OSS KubernetesNs (Kubernetes Ns) KubernetesNs OSS/KubernetesNs.puml
OSS KubernetesDeploy (Kubernetes Deploy) KubernetesDeploy OSS/KubernetesDeploy.puml
OSS KubernetesUser (Kubernetes User) KubernetesUser OSS/KubernetesUser.puml
OSS KubernetesPv (Kubernetes Pv) KubernetesPv OSS/KubernetesPv.puml
OSS KubernetesEp (Kubernetes Ep) KubernetesEp OSS/KubernetesEp.puml
OSS KubernetesSvc (Kubernetes Svc) KubernetesSvc OSS/KubernetesSvc.puml
OSS KubernetesRb (Kubernetes Rb) KubernetesRb OSS/KubernetesRb.puml
OSS KubernetesEtcd (Kubernetes Etcd) KubernetesEtcd OSS/KubernetesEtcd.puml
OSS KubernetesIng (Kubernetes Ing) KubernetesIng OSS/KubernetesIng.puml
OSS KubernetesHpa (Kubernetes Hpa) KubernetesHpa OSS/KubernetesHpa.puml

Contributing

I've built this on a necessity that I have for making better diagrams when Kubernetes is part of the solution. This is based on a community effort and as such this should belong to the Kubernetes community. Feel free to fork and to submit PRs.

Reference

None of the work here would be possible without the foundation from Ricardo Niepel, PlantUML and the C4 Model

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].