You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Update deployment samples and README.md
* modify updates to deployment samples and README.md
* include example- config files in /samples
* update README.md - standardise kubectl command format and minor grammar/wording changes
AWS Cloud Map multi-cluster service discovery for Kubernetes (K8s) is a controller that implements existing multi-cluster services API that allows services to communicate across multiple clusters. The implementation relies on [AWS Cloud Map](https://aws.amazon.com/cloud-map/) for enabling cross-cluster service discovery.
16
+
The AWS Cloud Map Multi-cluster Service Discovery Controller for Kubernetes (K8s) implements the Kubernetes [multi-cluster services API](https://github.com/kubernetes/enhancements/tree/master/keps/sig-multicluster/1645-multi-cluster-services-api) specification, which allows services to communicate across multiple clusters. The implementation relies on [AWS Cloud Map](https://aws.amazon.com/cloud-map/) for enabling cross-cluster service discovery.
17
17
18
18
See the demo from AWS Container Day x KubeCon!
19
19
20
20
[](https://youtu.be/3f0Tv7IiQQw?t=24458)
21
21
22
-
## Usage
23
-
> ⚠ **There must exist network connectivity (i.e. VPC peering, security group rules, ACLs, etc.) between clusters**: Undefined behavior may occur if controller is set up without network connectivity between clusters.
22
+
## Installation
23
+
24
+
Perform the following installation steps on each participating cluster.
25
+
26
+
- For multi-cluster service discovery and consumption, the controller should be installed on a minimum of 2 EKS clusters.
27
+
- Participating clusters should be provisioned into a single AWS account, within a single AWS region.
28
+
29
+
### Dependencies
30
+
31
+
#### Network
32
+
33
+
> ⚠ **The AWS Cloud Map MCS Controller for K8s provides service discovery and communication across multiple clusters, therefore implementations depend on end-end network connectivity between workloads provisioned within each participating cluster.**
34
+
35
+
- In deployment scenarios where participating clusters are provisioned into separate VPCs, connectivity will depend on correctly configured [VPC Peering](https://docs.aws.amazon.com/vpc/latest/peering/create-vpc-peering-connection.html), [inter-VPC routing](https://docs.aws.amazon.com/vpc/latest/peering/vpc-peering-routing.html), and Security Group configuration. The [VPC Reachability Analyzer](https://docs.aws.amazon.com/vpc/latest/reachability/getting-started.html) can be used to test and validate end-end connectivity between worker nodes within each cluster.
36
+
- Undefined behavior may occur if controllers are deployed without the required network connectivity between clusters.
37
+
38
+
#### Configure CoreDNS
24
39
25
-
### Setup clusters
40
+
Install the The CoreDNS multicluster plugin into each participating cluster. The multicluster plugin enables CoreDNS to lifecycle manage DNS records for `ServiceImport` objects.
26
41
27
-
First, install the controller with latest release on at least 2 AWS EKS clusters. Nodes must have sufficient IAM permissions to perform CloudMap operations.
42
+
To install the plugin, run the following commands.
28
43
29
-
> **_NOTE:_** AWS region environment variable can be _optionaly_ set like `export AWS_REGION=us-west-2` Otherwise controller will infer region in the order `AWS_REGION` environment variable, ~/.aws/config file, then EC2 metadata (for EKS environment)
To install the latest release of the controller, run the following commands.
53
+
54
+
>**_NOTE:_** AWS region environment variable can be _optionaly_ set like `export AWS_REGION=us-west-2` Otherwise the controller will infer region in the order `AWS_REGION` environment variable, ~/.aws/config file, then EC2 metadata (for EKS environment)
> 📌 See [Releases](#Releases) section for details on how to install other versions.
36
61
62
+
The controller must have sufficient IAM permissions to perform required Cloud Map operations. Grant IAM access rights `AWSCloudMapFullAccess` to the controller Service Account to enable the controller to manage Cloud Map resources.
63
+
64
+
## Usage
65
+
37
66
### Export services
38
67
39
68
Then assuming you already have a Service installed, apply a `ServiceExport` yaml to the cluster in which you want to export a service. This can be donefor each service you want to export.
@@ -55,17 +84,18 @@ metadata:
55
84
name: my-amazing-service
56
85
```
57
86
58
-
*See the `samples` directory for a set of example yaml files to set up a service and export it. To apply the sample files run*
87
+
*See the `samples` directory for a set of example yaml files to set up a service and export it. To apply the sample files run the following commands.*
In your other cluster, the controller will automatically sync services registered in AWS Cloud Map by applying the appropriate `ServiceImport`. To list them all, run
98
+
In your other cluster, the controller will automatically sync services registered in AWS Cloud Map by applying the appropriate `ServiceImport`. To list them all, run the following command.
69
99
```sh
70
100
kubectl get ServiceImport -A
71
101
```
@@ -76,24 +106,24 @@ AWS Cloud Map MCS Controller for K8s adheres to the [SemVer](https://semver.org/
76
106
77
107
>**_NOTE:_** AWS region environment variable can be _optionally_ set like `export AWS_REGION=us-west-2` Otherwise controller will infer region in the order `AWS_REGION` environment variable, ~/.aws/config file, then EC2 metadata (for EKS environment)
78
108
79
-
To install from a release run
109
+
The following command format is used to install from a particular release.
80
110
```sh
81
111
kubectl apply -k "github.com/aws/aws-cloud-map-mcs-controller-for-k8s/config/controller_install_release[?ref=*git version tag*]"
82
112
```
83
113
84
-
Example to install latest release
114
+
Run the following commandto install the latest release.
We also maintain a `latest` tag, which is updated to stay in line with the `main` branch. We **do not** recommend installing this on any production cluster, as any new major versions updated on the `main` branch will introduce breaking changes.
95
125
96
-
To install from `latest` tag run
126
+
To install from `latest` tag run the following command.
@@ -109,4 +139,4 @@ Join the channel with this [invite](https://join.slack.com/t/awsappmesh/shared_i
109
139
110
140
This project is distributed under the
111
141
[Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0),
112
-
see [LICENSE](https://github.com/aws/aws-cloud-map-mcs-controller-for-k8s/blob/main/LICENSE) and [NOTICE](https://github.com/aws/aws-cloud-map-mcs-controller-for-k8s/blob/main/NOTICE) for more information.
142
+
see [LICENSE](https://github.com/aws/aws-cloud-map-mcs-controller-for-k8s/blob/main/LICENSE) and [NOTICE](https://github.com/aws/aws-cloud-map-mcs-controller-for-k8s/blob/main/NOTICE) for more information.
0 commit comments