|
| 1 | +\documentclass{article} |
| 2 | +\usepackage{tikz} |
| 3 | +\usepackage[graphics,tightpage,active]{preview} |
| 4 | +\usetikzlibrary{arrows, shadows.blur, positioning, fit, calc, backgrounds} |
| 5 | +\usepackage{lscape} |
| 6 | + |
| 7 | +\pagenumbering{gobble} |
| 8 | + |
| 9 | +\PreviewEnvironment{tikzpicture} |
| 10 | +\PreviewEnvironment{equation} |
| 11 | +\PreviewEnvironment{equation*} |
| 12 | +\newlength{\imagewidth} |
| 13 | +\newlength{\imagescale} |
| 14 | +\pagestyle{empty} |
| 15 | +\thispagestyle{empty} |
| 16 | + |
| 17 | +\begin{document} |
| 18 | +\begin{center} |
| 19 | +\begin{tikzpicture}[ |
| 20 | + scale=0.5,transform shape, |
| 21 | + font=\sffamily, |
| 22 | + every matrix/.style={ampersand replacement=\&,column sep=2cm,row sep=2cm}, |
| 23 | + operator/.style={draw,solid,thick,circle,fill=red!20,inner sep=.3cm, blur shadow={shadow blur steps=5,shadow blur extra rounding=1.3pt}}, |
| 24 | + component/.style={draw,solid,thick,rounded corners,fill=yellow!20,inner sep=.3cm, blur shadow={shadow blur steps=5,shadow blur extra rounding=1.3pt}}, |
| 25 | + border/.style={draw,dashed,rounded corners,fill=gray!20,inner sep=.3cm, blur shadow={shadow blur steps=5,shadow blur extra rounding=1.3pt}}, |
| 26 | + pod/.style={draw,solid,thick,rounded corners,fill=blue!20, inner sep=.3cm, blur shadow={shadow blur steps=5,shadow blur extra rounding=1.3pt}}, |
| 27 | + service/.style={draw,solid,thick,rounded corners,fill=blue!20, inner sep=.3cm, blur shadow={shadow blur steps=5,shadow blur extra rounding=1.3pt}}, |
| 28 | + endpoint/.style={draw,solid,thick,rounded corners,fill=blue!20, blur shadow={shadow blur steps=5,shadow blur extra rounding=1.3pt}}, |
| 29 | + secret/.style={draw,solid,thick,rounded corners,fill=blue!20, blur shadow={shadow blur steps=5,shadow blur extra rounding=1.3pt}}, |
| 30 | + pvc/.style={draw,solid,thick,rounded corners,fill=blue!20, inner sep=.3cm, blur shadow={shadow blur steps=5,shadow blur extra rounding=1.3pt}}, |
| 31 | + label/.style={rectangle,inner sep=0,outer sep=0}, |
| 32 | + to/.style={->,>=stealth',shorten >=1pt,semithick,font=\sffamily\footnotesize}, |
| 33 | + every node/.style={align=center}] |
| 34 | + |
| 35 | + % Position the nodes using a matrix layout |
| 36 | + |
| 37 | + \matrix{ |
| 38 | + \& \node[component] (crd) {CRD}; \\ |
| 39 | + \& \node[operator] (operator) {Operator}; \\ |
| 40 | + \path |
| 41 | + node[service] (service-master) {Master} |
| 42 | + node[label, right of=service-master] (service-middle) {} |
| 43 | + node[label, below of=service-middle] (services-label) {Services} |
| 44 | + node[service, right=.5cm of service-master] (service-replica) {Replica} |
| 45 | + node[border, behind path, |
| 46 | + fit=(service-master)(service-replica)(services-label) |
| 47 | + ] (services) {}; |
| 48 | + \& |
| 49 | + \node[component] (sts) {Statefulset}; \& \node[component] (pdb) {Pod Disruption Budget}; \\ |
| 50 | + \path |
| 51 | + node[service] (master-endpoint) {Master} |
| 52 | + node[service, right=.5cm of master-endpoint] (replica-endpoint) {Replica} |
| 53 | + node[label, right of=master-endpoint] (endpoint-middle) {} |
| 54 | + node[label, below of=endpoint-middle] (endpoint-label) {Endpoints} |
| 55 | + node[border, behind path, |
| 56 | + fit=(master-endpoint)(replica-endpoint)(endpoint-label) |
| 57 | + ] (endpoints) {}; \& |
| 58 | + \node[component] (pod-template) {Pod Template}; \& |
| 59 | + \node[border] (secrets) { |
| 60 | + \begin{tikzpicture}[] |
| 61 | + \node[secret] (users-secret) at (0, 0) {Users}; |
| 62 | + \node[secret] (robots-secret) at (2, 0) {Robots}; |
| 63 | + \node[secret] (standby-secret) at (4, 0) {Standby}; |
| 64 | + \end{tikzpicture} \\ |
| 65 | + Secrets |
| 66 | + }; \\ \& |
| 67 | + \path |
| 68 | + node[pod] (replica1-pod) {Replica} |
| 69 | + node[pod, left=.5cm of replica1-pod] (master-pod) {Master} |
| 70 | + node[pod, right=.5cm of replica1-pod] (replica2-pod) {Replica} |
| 71 | + node[label, below of=replica1-pod] (pod-label) {Pods} |
| 72 | + node[border, behind path, |
| 73 | + fit=(master-pod)(replica1-pod)(replica2-pod)(pod-label) |
| 74 | + ] (pods) {}; \\ \& |
| 75 | + \path |
| 76 | + node[pvc] (replica1-pvc) {Replica} |
| 77 | + node[pvc, left=.5cm of replica1-pvc] (master-pvc) {Master} |
| 78 | + node[pvc, right=.5cm of replica1-pvc] (replica2-pvc) {Replica} |
| 79 | + node[label, below of=replica1-pvc] (pvc-label) {Persistent Volume Claims} |
| 80 | + node[border, behind path, |
| 81 | + fit=(master-pvc)(replica1-pvc)(replica2-pvc)(pvc-label) |
| 82 | + ] (pvcs) {}; \& |
| 83 | + \\ \& \\ |
| 84 | + }; |
| 85 | + |
| 86 | + % Draw the arrows between the nodes and label them. |
| 87 | + \draw[to] (crd) -- node[midway,above] {} node[midway,below] {} (operator); |
| 88 | + \draw[to] (operator) -- node[midway,above] {} node[midway,below] {} (sts); |
| 89 | + \draw[to] (operator) -- node[midway,above] {} node[midway,below] {} (secrets); |
| 90 | + \draw[to] (operator) -| node[midway,above] {} node[midway,below] {} (pdb); |
| 91 | + \draw[to] (service-master) -- node[midway,above] {} node[midway,below] {} (master-endpoint); |
| 92 | + \draw[to] (service-replica) -- node[midway,above] {} node[midway,below] {} (replica-endpoint); |
| 93 | + \draw[to] (master-pod) -- node[midway,above] {} node[midway,below] {} (master-pvc); |
| 94 | + \draw[to] (replica1-pod) -- node[midway,above] {} node[midway,below] {} (replica1-pvc); |
| 95 | + \draw[to] (replica2-pod) -- node[midway,above] {} node[midway,below] {} (replica2-pvc); |
| 96 | + \draw[to] (operator) -| node[midway,above] {} node[midway,below] {} (services); |
| 97 | + \draw[to] (sts) -- node[midway,above] {} node[midway,below] {} (pod-template); |
| 98 | + \draw[to] (pod-template) -- node[midway,above] {} node[midway,below] {} (pods); |
| 99 | +\end{tikzpicture} |
| 100 | +\end{center} |
| 101 | +\end{document} |
0 commit comments