Skip to content

Commit

Permalink
Docs updates
Browse files Browse the repository at this point in the history
  • Loading branch information
jrokeach committed Oct 26, 2023
1 parent 4fddeb5 commit f6d5556
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 15 deletions.
17 changes: 16 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ At this time and in the project's raw form, *meshrr* should not be considered fo
- [Containers](#containers)
- [BGP Group Types](#bgp-group-types)
- [Examples](#examples)
- [Example Commands](#example-commands)

## Instructions

Expand Down Expand Up @@ -87,4 +88,18 @@ At this time and in the project's raw form, *meshrr* should not be considered fo
- Reachability via static routes and Kubernetes NodeIP Services referencing additional loopbacks on the Kubernetes nodes.
- [load-balanced-route-servers](examples/load-balanced-route-servers)
- EVPN route servers deployed in a full iBGP mesh with each other serving eBGP peers. Intended to scale DCI for multi-region deployment.
- Reachability for external devices achieved through use of MetalLB in BGP mode.
- Reachability for external devices achieved through use of MetalLB in BGP mode.
## Example Commands
| Command | Description |
| ------------------------------------------------------------ | ------------------------------------------------------------ |
| `kubectl [-n NAMESPACE] get pods -o wide` | List pods and the nodes on which they run |
| `kubectl [-n NAMESPACE] exec -it POD -c crpd -- cli` | Access the CLI of cRPD |
| `kubectl [-n NAMESPACE] exec POD -c crpd -- cli show bgp summary` | See the `show bgp summary` output of a pod |
| `kubectl [-n NAMESPACE] exec POD -c crpd -- cli show bgp group summary \|except \"Allow\|orlonger\|^Default\|^$\"` | See the status of the neighbor groups of a pod |
| `kubectl [-n NAMESPACE] logs [-f] POD -c meshrr` | View the logs from the meshrr sidecar container. `-f` will follow the logs. |
| `kubectl [-n NAMESPACE] delete pod POD` | Delete POD. Because pods should be created by DaemonSet, StatefulSet, or Deployment, a new pod should be recreated in its place; in this context, this may be considered functionally more similar to a "restart" than to a "delete". |
21 changes: 7 additions & 14 deletions examples/2regions-hrr/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
* Within a region, all cRPDs are fully meshed via iBGP to provide maximum visibility within the region.
* All cRPDs in a region other than `core` have BGP peerings with up to 2 `core` cRPDs. The `core` cRPDs serve as route reflectors for the non-core regions. (The limit of 2 is hard coded on upstream peer groups.)
* **Redundancy groups and anycast addressing:**
* Each node is assigned to redundancy group `a` or `b`.
* Each node is assigned to redundancy group `a` or `b`. (In a production environment, two separate Kubernetes clusters may be desirable.)
* For each region with neighbors outside the cluster, separate DaemonSets are created for `a` and `b`, each with a unique IP address for that [meshrr_region:redundancy_group] combination. This IP address is used for iBGP peering with neighbors outside the cluster.
* Kubernetes nodes run MetalLB.
* MetalLB eBGP peers to each connected router on a loopback with the same IP address (10.0.0.0).
Expand Down Expand Up @@ -54,28 +54,21 @@
set policy-options policy-statement REDISTRIBUTE-RRS then accept
```
3. Modify configuration templates as necessary. [`meshrr/juniper.conf.j2`](../../meshrr/defaults/juniper-ipv4rr.conf.j2) will be loaded to all instances by default, but customizations on a per-deployment/per-daemonset basis should be performed in most cases files (see [`core-config.j2`](templates/core-config.j2), [`mirkwood-config.j2`](templates/mirkwood-config.j2), and [`lothlorien-config.j2`](templates/lothlorien-config.j2).
3. Modify configuration templates as necessary. [`meshrr/juniper.conf.j2`](../../meshrr/defaults/juniper-ipv4rr.conf.j2) will be loaded to all instances by default, but customizations on a per-deployment/per-daemonset basis should be performed in most cases files (see [`mirkwood-config.j2`](templates/mirkwood-config.j2) and [`lothlorien-config.j2`](templates/lothlorien-config.j2)).
Apply these configuration templates as ConfigSets for any cases that require customization as so:
```bash
k create configmap core-config \
--from-file=config=examples/2regions-hrr/templates/core-config.j2 \
-o yaml --dry-run=client |
k apply -f -
```
```bash
k create configmap mirkwood-config \
kubectl create configmap mirkwood-config \
--from-file=config=examples/2regions-hrr/templates/mirkwood-config.j2 \
-o yaml --dry-run=client |
k apply -f -
kubectl apply -f -
```
```bash
k create configmap lothlorien-config \
kubectl create configmap lothlorien-config \
--from-file=config=examples/2regions-hrr/templates/lothlorien-config.j2 \
-o yaml --dry-run=client |
k apply -f -
kubectl apply -f -
```
These ConfigMaps are mounted as volumes in the corresponding Deployments/DaemonSets.
Expand All @@ -92,7 +85,7 @@ Apply these configuration templates as ConfigSets for any cases that require cus
5. Apply the Kubernetes manifests:
```bash
k apply -f bgppeer-global.yml meshrr-core.yaml meshrr-lothlorien.yaml meshrr-mirkwood.yaml
k apply -f examples/2regions-hrr/bgppeer-global.yml -f examples/2regions-hrr/meshrr-core.yaml -f examples/2regions-hrr/meshrr-lothlorien.yaml -f examples/2regions-hrr/meshrr-mirkwood.yaml
```
See [Manifests and Objects Used](#Manifests-and-Objects-Used) for detail on what this does.
Expand Down

0 comments on commit f6d5556

Please sign in to comment.