diff --git a/.gitignore b/.gitignore
index ad08aa383691ace26179c6fcff09757937fbe9ea..e09b6644b0baf9a247708ccbf41f9b119a517c87 100644
--- a/.gitignore
+++ b/.gitignore
@@ -30,3 +30,7 @@ _testmain.go
 .idea
 
 scm-source.json
+
+# diagrams
+*.aux
+*.log
diff --git a/README.md b/README.md
index 403d63e7f3ac76c60331dafdb97440cd317b6a8a..9ea0291831cfe196885145496f02e893c159e0cd 100644
--- a/README.md
+++ b/README.md
@@ -33,8 +33,16 @@ new Postgres cluster CRD was submitted:
 
 ![postgresql-operator](docs/diagrams/operator.png "K8S resources, created by operator")
 
-There is a browser-friendly version of this documentation at
-[postgres-operator.readthedocs.io](https://postgres-operator.readthedocs.io)
+This picture is not complete without an overview of what is inside a pod, so
+let's zoom in:
+
+![pod](docs/diagrams/pod.png "Database pod components")
+
+These two diagrams should help you to understand the basics of what kind of
+functionality the operator provides. Below we discuss all everything in more
+details.
+
+There is a browser-friendly version of this documentation at [postgres-operator.readthedocs.io](https://postgres-operator.readthedocs.io)
 
 ## Table of contents
 
diff --git a/docs/diagrams/Makefile b/docs/diagrams/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..0c0c7c918b76551a03d9e8f7bca0acc6c7107305
--- /dev/null
+++ b/docs/diagrams/Makefile
@@ -0,0 +1,11 @@
+OBJ=$(patsubst %.tex, %.png, $(wildcard *.tex))
+
+.PHONY: all
+
+all: $(OBJ)
+
+%.pdf: %.tex
+	lualatex $< -shell-escape $@
+
+%.png: %.pdf
+	convert -flatten -density 300 $< -quality 90 $@
diff --git a/docs/diagrams/operator.png b/docs/diagrams/operator.png
index af51bbf08102a6e304fa2340e47c561b80ec97ba..5e1cbfe8379966e9494aa9180c1989fc0dfc75d3 100644
Binary files a/docs/diagrams/operator.png and b/docs/diagrams/operator.png differ
diff --git a/docs/diagrams/operator.tex b/docs/diagrams/operator.tex
new file mode 100644
index 0000000000000000000000000000000000000000..a8ee0a05f9426ff38b823273c230cf414cb4e689
--- /dev/null
+++ b/docs/diagrams/operator.tex
@@ -0,0 +1,101 @@
+\documentclass{article}
+\usepackage{tikz}
+\usepackage[graphics,tightpage,active]{preview}
+\usetikzlibrary{arrows, shadows.blur, positioning, fit, calc, backgrounds}
+\usepackage{lscape}
+
+\pagenumbering{gobble}
+
+\PreviewEnvironment{tikzpicture}
+\PreviewEnvironment{equation}
+\PreviewEnvironment{equation*}
+\newlength{\imagewidth}
+\newlength{\imagescale}
+\pagestyle{empty}
+\thispagestyle{empty}
+
+\begin{document}
+\begin{center}
+\begin{tikzpicture}[
+  scale=0.5,transform shape,
+  font=\sffamily,
+  every matrix/.style={ampersand replacement=\&,column sep=2cm,row sep=2cm},
+  operator/.style={draw,solid,thick,circle,fill=red!20,inner sep=.3cm, blur shadow={shadow blur steps=5,shadow blur extra rounding=1.3pt}},
+  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}},
+  border/.style={draw,dashed,rounded corners,fill=gray!20,inner sep=.3cm, blur shadow={shadow blur steps=5,shadow blur extra rounding=1.3pt}},
+  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}},
+  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}},
+  endpoint/.style={draw,solid,thick,rounded corners,fill=blue!20, blur shadow={shadow blur steps=5,shadow blur extra rounding=1.3pt}},
+  secret/.style={draw,solid,thick,rounded corners,fill=blue!20, blur shadow={shadow blur steps=5,shadow blur extra rounding=1.3pt}},
+  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}},
+  label/.style={rectangle,inner sep=0,outer sep=0},
+  to/.style={->,>=stealth',shorten >=1pt,semithick,font=\sffamily\footnotesize},
+  every node/.style={align=center}]
+
+  % Position the nodes using a matrix layout
+
+  \matrix{
+    \& \node[component] (crd) {CRD}; \\
+    \& \node[operator] (operator) {Operator}; \\
+        \path
+          node[service] (service-master) {Master}
+          node[label, right of=service-master] (service-middle) {}
+          node[label, below of=service-middle] (services-label) {Services}
+          node[service, right=.5cm of service-master] (service-replica) {Replica}
+          node[border, behind path,
+               fit=(service-master)(service-replica)(services-label)
+          ] (services) {};
+    \&
+    \node[component] (sts) {Statefulset}; \& \node[component] (pdb) {Pod Disruption Budget}; \\
+    \path
+      node[service] (master-endpoint) {Master}
+      node[service, right=.5cm of master-endpoint] (replica-endpoint) {Replica}
+      node[label, right of=master-endpoint] (endpoint-middle) {}
+      node[label, below of=endpoint-middle] (endpoint-label) {Endpoints}
+      node[border, behind path,
+           fit=(master-endpoint)(replica-endpoint)(endpoint-label)
+      ] (endpoints) {}; \&
+    \node[component] (pod-template) {Pod Template}; \&
+    \node[border] (secrets) {
+        \begin{tikzpicture}[]
+            \node[secret] (users-secret) at (0, 0) {Users};
+            \node[secret] (robots-secret) at (2, 0) {Robots};
+            \node[secret] (standby-secret) at (4, 0) {Standby};
+        \end{tikzpicture} \\
+        Secrets
+    }; \\ \&
+    \path
+      node[pod] (replica1-pod) {Replica}
+      node[pod, left=.5cm of replica1-pod] (master-pod) {Master}
+      node[pod, right=.5cm of replica1-pod] (replica2-pod) {Replica}
+      node[label, below of=replica1-pod] (pod-label) {Pods}
+      node[border, behind path,
+           fit=(master-pod)(replica1-pod)(replica2-pod)(pod-label)
+      ] (pods) {}; \\ \&
+    \path
+      node[pvc] (replica1-pvc) {Replica}
+      node[pvc, left=.5cm of replica1-pvc] (master-pvc) {Master}
+      node[pvc, right=.5cm of replica1-pvc] (replica2-pvc) {Replica}
+      node[label, below of=replica1-pvc] (pvc-label) {Persistent Volume Claims}
+      node[border, behind path,
+           fit=(master-pvc)(replica1-pvc)(replica2-pvc)(pvc-label)
+      ] (pvcs) {}; \&
+    \\ \& \\
+  };
+
+  % Draw the arrows between the nodes and label them.
+  \draw[to] (crd) -- node[midway,above] {} node[midway,below] {} (operator);
+  \draw[to] (operator) -- node[midway,above] {} node[midway,below] {} (sts);
+  \draw[to] (operator) -- node[midway,above] {} node[midway,below] {} (secrets);
+  \draw[to] (operator) -| node[midway,above] {} node[midway,below] {} (pdb);
+  \draw[to] (service-master) -- node[midway,above] {} node[midway,below] {} (master-endpoint);
+  \draw[to] (service-replica) -- node[midway,above] {} node[midway,below] {} (replica-endpoint);
+  \draw[to] (master-pod) -- node[midway,above] {} node[midway,below] {} (master-pvc);
+  \draw[to] (replica1-pod) -- node[midway,above] {} node[midway,below] {} (replica1-pvc);
+  \draw[to] (replica2-pod) -- node[midway,above] {} node[midway,below] {} (replica2-pvc);
+  \draw[to] (operator) -| node[midway,above] {} node[midway,below] {} (services);
+  \draw[to] (sts) -- node[midway,above] {} node[midway,below] {} (pod-template);
+  \draw[to] (pod-template) -- node[midway,above] {} node[midway,below] {} (pods);
+\end{tikzpicture}
+\end{center}
+\end{document}
diff --git a/docs/diagrams/pod.png b/docs/diagrams/pod.png
new file mode 100644
index 0000000000000000000000000000000000000000..f54d1a2bdd684fd3c77242ca332e6278ea35ca1e
Binary files /dev/null and b/docs/diagrams/pod.png differ
diff --git a/docs/diagrams/pod.tex b/docs/diagrams/pod.tex
new file mode 100644
index 0000000000000000000000000000000000000000..f4451399a5cd7cfa4f6df4f9f621213a551740ba
--- /dev/null
+++ b/docs/diagrams/pod.tex
@@ -0,0 +1,92 @@
+\documentclass{article}
+\usepackage{tikz}
+\usepackage[graphics,tightpage,active]{preview}
+\usetikzlibrary{arrows, shadows.blur, positioning, fit, calc, backgrounds}
+\usepackage{lscape}
+
+\pagenumbering{gobble}
+
+\PreviewEnvironment{tikzpicture}
+\PreviewEnvironment{equation}
+\PreviewEnvironment{equation*}
+\newlength{\imagewidth}
+\newlength{\imagescale}
+\pagestyle{empty}
+\thispagestyle{empty}
+
+\begin{document}
+\begin{center}
+\begin{tikzpicture}[
+  scale=0.5,transform shape,
+  font=\sffamily,
+  every matrix/.style={ampersand replacement=\&,column sep=2cm,row sep=2cm},
+  pod/.style={draw,solid,thick,circle,fill=red!20,inner sep=.3cm, blur shadow={shadow blur steps=5,shadow blur extra rounding=1.3pt}},
+  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}},
+  border/.style={draw,dashed,rounded corners,fill=gray!20,inner sep=.3cm, blur shadow={shadow blur steps=5,shadow blur extra rounding=1.3pt}},
+  volume/.style={draw,solid,thick,rounded corners,fill=blue!20, inner sep=.3cm, blur shadow={shadow blur steps=5,shadow blur extra rounding=1.3pt}},
+  sidecar/.style={draw,solid,thick,rounded corners,fill=blue!20, inner sep=.3cm, blur shadow={shadow blur steps=5,shadow blur extra rounding=1.3pt}},
+  k8s-label/.style={draw,solid,thick,rounded corners,fill=blue!20, minimum width=1.5cm, inner sep=.3cm, blur shadow={shadow blur steps=5,shadow blur extra rounding=1.3pt}},
+  affinity/.style={draw,solid,thick,rounded corners,fill=blue!20, minimum width=2cm, inner sep=.3cm, blur shadow={shadow blur steps=5,shadow blur extra rounding=1.3pt}},
+  label/.style={rectangle,inner sep=0,outer sep=0},
+  to/.style={->,>=stealth',shorten >=1pt,semithick,font=\sffamily\footnotesize},
+  every node/.style={align=center}]
+
+  % Position the nodes using a matrix layout
+
+  \matrix{
+    \path
+      node[k8s-label] (app-label) {App}
+      node[k8s-label, right=.25cm of app-label] (role-label) {Role}
+      node[k8s-label, right=.25cm of role-label] (custom-label) {Custom}
+      node[label, below of=role-label] (k8s-label-label) {K8S Labels}
+      node[border, behind path,
+           fit=(app-label)(role-label)(custom-label)(k8s-label-label)
+      ] (k8s-labels) {};  \& \&
+    \path
+      node[affinity] (affinity) {Affinity}
+      node[label, right=.25cm of affinity] (affinity-middle) {}
+      node[affinity, right=.25cm of affinity-middle] (anti-affinity) {Anti-affinity}
+      node[label, below of=affinity-middle] (affinity-label) {Assigning to nodes}
+      node[border, behind path,
+           fit=(affinity)(anti-affinity)(affinity-label)
+      ] (affinity) {}; \\
+    \& \node[pod] (pod) {Pod}; \& \\
+    \path
+      node[volume, minimum width={width("shm-volume")}] (data-volume) {Data}
+      node[volume, right=.25cm of data-volume, minimum width={width("shm-volume")}] (tokens-volume) {Tokens}
+      node[volume, right=.25cm of tokens-volume] (shm-volume) {/dev/shm}
+      node[label, below of=tokens-volume] (volumes-label) {Volumes}
+      node[border, behind path,
+           fit=(data-volume)(shm-volume)(tokens-volume)(volumes-label)
+      ] (volumes) {}; \&
+    \node[component] (spilo) {Spilo}; \&
+    \node[sidecar] (scalyr) {Scalyr}; \& \\ \&
+    \path
+      node[component] (patroni) {Patroni}
+      node[component, below=.25cm of patroni] (postgres) {PostgreSQL}
+      node[border, behind path,
+           fit=(postgres)(patroni)
+      ] (spilo-components) {}; \&
+    \path
+      node[sidecar] (custom-sidecar1) {User defined}
+      node[label, right=.25cm of custom-sidecar1] (sidecars-middle) {}
+      node[sidecar, right=.25cm of sidecars-middle] (custom-sidecar2) {User defined}
+      node[label, below of=sidecars-middle] (sidecars-label) {Custom sidecars}
+      node[border, behind path,
+           fit=(custom-sidecar1)(custom-sidecar2)(sidecars-label)
+      ] (sidecars) {};
+    \\ \& \\
+  };
+
+  % Draw the arrows between the nodes and label them.
+  \draw[to] (pod) to [bend left=25] (volumes);
+  \draw[to] (pod) to [bend left=25] (k8s-labels);
+  \draw[to] (pod) to [bend right=25] (affinity);
+  \draw[to] (pod) to [bend right=25] (scalyr);
+  \draw[to] (pod) to [bend right=25] (sidecars);
+  \draw[to] (pod) -- node[midway,above] {} node[midway,below] {} (spilo);
+  \draw[to] (spilo) -- node[midway,above] {} node[midway,below] {} (spilo-components);
+
+\end{tikzpicture}
+\end{center}
+\end{document}