From ebbde39b3505489d21cab56e2ad8553f7256af18 Mon Sep 17 00:00:00 2001 From: bglynn Date: Fri, 16 Feb 2024 10:28:49 -0800 Subject: [PATCH] PR Comments. -Added redirect links for new tutorials -Fixed broken includes for new tutorial -examples of the otterize OSS CLI -consistency of tutorial placement for feature overview pages -Added ClientIntent reference link (looked for any similar issues, but didn't see any) --- .../index.mdx | 60 +++++++++++++----- .../postgresql/tutorials/postgres-mapping.mdx | 6 +- docusaurus.config.js | 8 +++ static/img/examples/example-visualize.png | Bin 0 -> 32636 bytes 4 files changed, 55 insertions(+), 19 deletions(-) create mode 100644 static/img/examples/example-visualize.png diff --git a/docs/features/network-mapping-network-policies/index.mdx b/docs/features/network-mapping-network-policies/index.mdx index 4c93ea01f..bdfc1beae 100644 --- a/docs/features/network-mapping-network-policies/index.mdx +++ b/docs/features/network-mapping-network-policies/index.mdx @@ -29,6 +29,13 @@ export const network_access_tutorials = [ Otterize's open-source [Network Mapper](/reference/configuration/network-mapper) and [Intents Operator](/reference/configuration/intents-operator) can map your cluster, with zero configuration, low privileges and low resource usage, and automate the management of network policies. +### Tutorials + +View the tutorials below to learn more about how to get started: + + + + ### Mapping & visualizing Otterize's [Network Mapper](/reference/configuration/network-mapper) is a zero-config, open-source and non-invasive tool to map your cluster. Deploy it on your cluster to get a graphical, textual or JSON representation of your cluster, and optionally use it to generate ClientIntents, which are declarations of the access each service in your cluster requires. @@ -36,21 +43,48 @@ Otterize's [Network Mapper](/reference/configuration/network-mapper) is a zero-c By connecting your cluster to Otterize Cloud, you'll immediately be presented with an interactive, historic and filterable map of your cluster. You can access the same information in different formats by using the open-source Otterize CLI, with the commands `otterize mapper export`, `otterize mapper list` and `otterize mapper visualize`. -:::danger -TODO -Brian, please add screenshots of the access graph and network mapper visual and textual output here. -::: +**visualize example:**: +![visualize example](/img/examples/example-visualize.png) + +**list example:** +``` +client in namespace otterize-tutorial-npol calls: + - server in namespace otterize-tutorial-npol +client-other in namespace otterize-tutorial-npol calls: + - server in namespace otterize-tutorial-npol +``` +**export example:** +```yaml +apiVersion: k8s.otterize.com/v1alpha3 +kind: ClientIntents +metadata: + name: client + namespace: otterize-tutorial-npol +spec: + service: + name: client + calls: + - name: server +--- +apiVersion: k8s.otterize.com/v1alpha3 +kind: ClientIntents +metadata: + name: client-other + namespace: otterize-tutorial-npol +spec: + service: + name: client-other + calls: + - name: server +``` + ### Access control By default, Kubernetes pods permit all outgoing and incoming traffic, posing potential security risks. Kubernetes [NetworkPolicies](/reference/terminology#network-policies) can be employed to limit either egress or ingress traffic, thereby enhancing security and compliance. -Having deployed Otterize, you can then apply the ClientIntents generated by the network mapper, or declared by you, to your cluster. The [Intents Operator](/reference/configuration/intents-operator) calculates which [Network Policies](/reference/terminology#network-policies) are required to allow the traffic declared by the ClientIntents, enforcing access on your cluster so that only intentional access is allowed. -:::danger -TODO -Brian, please add links to ClientIntents reference here whenever it's mentioned. -::: +Having deployed Otterize, you can then apply the [ClientIntents](/reference/IBAC-Overview) generated by the network mapper, or declared by you, to your cluster. The [Intents Operator](/reference/configuration/intents-operator) calculates which [Network Policies](/reference/terminology#network-policies) are required to allow the traffic declared by the ClientIntents, enforcing access on your cluster so that only intentional access is allowed. Read more in the [Network Policies Deep Dive](/features/network-mapping-network-policies/Reference/Network-Policies-Deep-Dive). @@ -65,10 +99,4 @@ spec: name: client calls: - name: nginx -``` - -### Tutorials - -View the tutorials below to learn more about how to get started: - - +``` \ No newline at end of file diff --git a/docs/features/postgresql/tutorials/postgres-mapping.mdx b/docs/features/postgresql/tutorials/postgres-mapping.mdx index 5fc6dfa38..32202f76b 100644 --- a/docs/features/postgresql/tutorials/postgres-mapping.mdx +++ b/docs/features/postgresql/tutorials/postgres-mapping.mdx @@ -30,7 +30,7 @@ Already have Otterize deployed with the database integration configured on your
Prepare a Kubernetes cluster - {@include: ../../_common/cluster-setup.md} + {@include: ../../../_common/cluster-setup.md}
@@ -38,11 +38,11 @@ Already have Otterize deployed with the database integration configured on your #### Create an Otterize Cloud account - {@include: ../../_common/create-account.md} + {@include: ../../../_common/create-account.md} #### Install Otterize OSS, connected to Otterize Cloud - {@include: ../../_common/install-otterize-from-cloud-with-enforcement.md} + {@include: ../../../_common/install-otterize-from-cloud-with-enforcement.md}
diff --git a/docusaurus.config.js b/docusaurus.config.js index 003b57101..de800e73b 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -204,6 +204,14 @@ const config = { from: ['/quick-visual-tutorials/visual-ibac-kafka-k8s'], to: '/features/kafka/tutorials/k8s-kafka-mapping', }, + { + from: ['/quickstart/visualization/postgresql'], + to: '/features/postgresql/tutorials/postgres-mapping' + }, + { + from: ['/quickstart/access-control/postgresql'], + to: '/features/postgresql/tutorials/postgres' + }, { from: ['/quick-visual-tutorials/visual-ibac-network-policies', '/quick-tutorials/k8s-network-policies', '/quickstart/access-control/k8s-network-policies'], to: '/features/network-mapping-network-policies/tutorials/k8s-network-policies', diff --git a/static/img/examples/example-visualize.png b/static/img/examples/example-visualize.png new file mode 100644 index 0000000000000000000000000000000000000000..6dea8e9f55e1f914a547803886420dd750184e3d GIT binary patch literal 32636 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 r9sC~T?&&z?*Kuw71c26U{EX literal 0 HcmV?d00001