|
1 | 1 | # access-controller
|
2 | 2 |
|
| 3 | +[](https://github.com/authorizer-tech/access-controller/releases/latest) |
3 | 4 | [](https://goreportcard.com/report/github.com/authorizer-tech/access-controller)
|
| 5 | +[](https://authorizer-tech.slack.com) |
4 | 6 |
|
5 | 7 | An implementation of a distributed access-control server that is based on [Google Zanzibar](https://research.google/pubs/pub48190/) - "Google's Consistent, Global Authorization System".
|
6 | 8 |
|
7 | 9 | An instance of an `access-controller` is similar to the `aclserver` implementation called out in the paper. A cluster of access-controllers implement the functional equivalent of the Zanzibar `aclserver` cluster.
|
8 | 10 |
|
9 | 11 | # Getting Started
|
| 12 | +If you want to setup an instance of the Authorizer platform as a whole, browse the API References, or just brush up on the concepts and design of the platform, take a look at the [official platform documentation](https://authorizer-tech.github.io/docs/overview/introduction). If you're only interested in running the access-controller then continue on. |
10 | 13 |
|
11 |
| -## Start a Local Cluster |
| 14 | +## Setup a Cluster |
12 | 15 | An access-controller server supports single node or multi-node (clustered) topologies. Instructions for running the server with these topologies are outlined below.
|
13 | 16 |
|
14 | 17 | To gain the benefits of the distributed query model that the access-controller implements, it is recommend to run a large cluster. Doing so will help distribute query load across more nodes within the cluster. The underlying cluster membership list is based on Hashicorp's [`memberlist`](https://github.com/hashicorp/memberlist)
|
15 | 18 |
|
16 | 19 | > a library that manages cluster membership and member failure detection using a gossip based protocol.
|
17 | 20 |
|
18 |
| -A cluster should be able to suport hundreds of nodes. If you find otherwise, please submit an issue. |
| 21 | +A cluster should be able to suport hundreds of nodes. If you find otherwise, please [submit an issue](https://github.com/authorizer-tech/access-controller/issues/new). |
19 | 22 |
|
20 |
| -### Binary |
| 23 | +### Docker Compose |
| 24 | +[`docker-compose.yml`](./docker/docker-compose.yml) provides an example of how to setup a multi-node cluster using Docker and is a great way to get started quickly. |
| 25 | + |
| 26 | +```console |
| 27 | +$ docker compose -f docker/docker-compose.yml up |
| 28 | +``` |
| 29 | + |
| 30 | +### Kubernetes (Recommended) |
| 31 | +Take a look at our [official Helm chart](https://authorizer-tech.github.io/helm-charts/access-controller). |
| 32 | + |
| 33 | +### Pre-compiled Binaries |
| 34 | +Download the [latest release](https://github.com/authorizer-tech/access-controller/releases/latest) and extract it. |
| 35 | + |
| 36 | +#### Pre-requisites |
| 37 | +To run an access-controller you must have a running CockroachDB database. Take a look at setting up [CockroachDB with Docker](https://www.cockroachlabs.com/docs/stable/start-a-local-cluster-in-docker-mac.html). |
21 | 38 |
|
22 | 39 | #### Single Node
|
23 |
| -```bash |
24 |
| -$ ./access-controller |
| 40 | +```console |
| 41 | +$ ./bin/access-controller |
25 | 42 | ```
|
26 | 43 |
|
27 | 44 | #### Multi-node
|
28 |
| -Start a multi-node cluster by starting multiple independent servers and use the `--join` flag |
| 45 | +Start a multi-node cluster by starting multiple independent servers and use the `-join` flag |
29 | 46 | to join the node to an existing cluster.
|
30 | 47 |
|
31 |
| -```bash |
32 |
| -$ ./access-controller --node-port 7946 --grpc-port 50052 |
33 |
| -$ ./access-controller --node-port 7947 --grpc-port 50053 --join 127.0.0.1:7946 |
34 |
| -$ ./access-controller --node-port 7948 --grpc-port 50054 --join 127.0.0.1:7947 |
| 48 | +```console |
| 49 | +$ ./bin/access-controller -node-port 7946 -grpc-port 50052 |
| 50 | +$ ./bin/access-controller -node-port 7947 -grpc-port 50053 -join 127.0.0.1:7946 |
| 51 | +$ ./bin/access-controller -node-port 7948 -grpc-port 50054 -join 127.0.0.1:7947 |
35 | 52 | ```
|
36 | 53 |
|
37 |
| -### Kubernetes |
38 |
| -A [Helm chart](./helm/access-controller) is included in this repository to provision an access-controller cluster in Kubernetes. |
| 54 | +## Next Steps... |
| 55 | +Take a look at the examples of how to: |
| 56 | +* [Add a Namespace Configuration](https://authorizer-tech.github.io/docs/getting-started/add-namespace-config) |
| 57 | +* [Write a Relation Tuple](https://authorizer-tech.github.io/docs/getting-started/write-relation-tuple) |
| 58 | +* [Check a Subject's Access](https://authorizer-tech.github.io/docs/getting-started/check-access) |
| 59 | + |
| 60 | +Don't hesitate to browse the official [Documentation](https://authorizer-tech.github.io/docs/overview/introduction), [API Reference](https://authorizer-tech.github.io/docs/api-reference/overview) and [Examples](https://authorizer-tech.github.io/docs/overview/examples/examples-intro). |
| 61 | + |
| 62 | +# Community |
| 63 | +The access-controller is an open-source project and we value and welcome new contributors and members |
| 64 | +of the community. Here are ways to get in touch with the community: |
39 | 65 |
|
40 |
| -```bash |
41 |
| -helm install access-controller ./helm/access-controller |
42 |
| -``` |
| 66 | +* Slack: [#authorizer-tech](https://authorizer-tech.slack.com) |
| 67 | +* Issue Tracker: [GitHub Issues](https://github.com/authorizer-tech/access-controller/issues) |
0 commit comments