From 23970321bcd7d9e9687cb19eb0d3adbea2ee70cc Mon Sep 17 00:00:00 2001 From: luolanzone Date: Thu, 20 Jan 2022 15:07:08 +0800 Subject: [PATCH] Add multi-cluster docs (#3032) 1. add a doc about basic architecture 2. add a setup guide and sample yamls Signed-off-by: Lan Luo --- docs/multicluster/architecture.md | 90 ++++ docs/multicluster/assets/basic-topology.png | Bin 0 -> 84279 bytes .../resource-export-import-pipeline.png | Bin 0 -> 93853 bytes docs/multicluster/getting-started.md | 428 ++++++++++++++++++ hack/.notableofcontents | 2 + .../multicluster_v1_serviceexports.yaml | 5 + .../multicluster_v1_serviceimports.yaml | 19 + .../multicluster_v1alpha1_clusterclaim.yaml | 16 +- .../multicluster_v1alpha1_clusterset.yaml | 13 +- .../multicluster_v1alpha1_resourceexport.yaml | 35 +- .../multicluster_v1alpha1_resourceimport.yaml | 43 +- 11 files changed, 638 insertions(+), 13 deletions(-) create mode 100644 docs/multicluster/architecture.md create mode 100644 docs/multicluster/assets/basic-topology.png create mode 100644 docs/multicluster/assets/resource-export-import-pipeline.png create mode 100644 docs/multicluster/getting-started.md create mode 100644 multicluster/config/samples/multicluster_v1_serviceexports.yaml create mode 100644 multicluster/config/samples/multicluster_v1_serviceimports.yaml diff --git a/docs/multicluster/architecture.md b/docs/multicluster/architecture.md new file mode 100644 index 00000000000..0dc7869288f --- /dev/null +++ b/docs/multicluster/architecture.md @@ -0,0 +1,90 @@ +# Antrea Multi-cluster Architecture + +Antrea Multi-cluster implements [Multi-cluster Service API](https://github.com/kubernetes/enhancements/tree/master/keps/sig-multicluster/1645-multi-cluster-services-api) for Service communication +across multiple Kubernetes clusters. + +The below diagram depicts a basic multi-cluster topology in Antrea. + +Antrea Multi-cluster Topology + +Given a set of Kubernetes clusters, there will be a leader cluster and several member clusters. +By default, a leader cluster itself is also a member cluster of a ClusterSet. A cluster +can also be configured as a dedicated leader cluster of multiple ClusterSets. + +## Terminology + +ClusterSet is a placeholder name for a group of clusters with a high degree of mutual +trust and shared ownership that share Services amongst themselves. Within a ClusterSet, +Namespace sameness applies, which means all Namespaces with a given name are considered to +be the same Namespace. The ClusterSet Custom Resource Definition(CRD) defines a ClusterSet +including the leader and member clusters information. + +The ClusterClaim CRD is used to claim a cluster itself as a member of a ClusterSet with +unique cluster ID, to claim a ClusterSet with unique ClusterSet ID. + +The MemberClusterAnnounce CRD declares a member cluster configuration to the leader cluster. + +The Common Area is an abstraction in the Antrea Multi-cluster implementation provides a storage +interface for resource export/import that can be read/written by all member and leader clusters +in the ClusterSet. The Common Area is implemented with a Namespace in the leader cluster + +## Antrea Multi-cluster Controller + +In a member cluster, Antrea Multi-cluster creates a Deployment that runs Antrea Multi-cluster +Controller which is responsible for exporting resource to and importing resource from a leader +cluster in a ClusterSet. + +In a leader cluster, Antrea Multi-cluster creates a Deployment that runs Antrea Multi-cluster +Controller which is responsible for converting resources from different member clusters into one +encapsulated resource as long as these resources have the same kind and match Namespace sameness. + +In ClusterSet initialization, Antrea Multi-cluster Controller in a member cluster watches +ClusterSet, ClusterClaim, and creates a MemberClusterAnnounce in the leader cluster. + +For exporting resources from the member cluster, it watches ServiceExport, Service and Endpoints +resources, encapsulates Services and Endpoints into ResourceExports according to ServiceExports, +and writes the ResourceExports to leader cluster. For resource importing, it watches ResourceImports +from leader cluster, and creates multi-cluster Services and Endpoints with a prefix `antrea-mc-` +plus exported Service name, and also ServiceImports which have the same name as the Service name. + +In a leader cluster, for ClusterSet initialization, Antrea Multi-cluster controller watches and +validates the ClusterSet and Clusterclaim. For resource export/import, it watches ResourceExports +and encapsulates them into ResourceImports. + +## Service Export and Import + +Antrea Multi-cluster Resource Export/Import Pipeline + +The current multi-cluster implementation supports Service discovery and Service export/import among +member clusters. The above diagram depicts Antrea Multi-cluster resource export/import pipeline. + +Given two Services in the member clusters - `foo.ns.cluster1.local` and `foo.ns.cluster2.local`, +multi-cluster Services may be generated by the following the resource export/import pipeline. + +* Administrators create resource ServiceExports `foo` in Namespace `ns` in each +of the clusters. +* The Exporters in member clusters `cluster1` and `cluster2` see ServiceExport `foo`, collect +the associated Services and Endpoints, and create ResourceExports for them in the Common Area of the +leader cluster. +* The controller in the leader cluster sees ResourcesExports in the Common Area, computes multi-cluster +Service `cluster1-ns-foo-service`, `cluster2-ns-foo-service` and associated Endpoints +`cluster1-ns-foo-endpoints`, `cluster2-ns-foo-endpoints`. +* The controller creates ResourcesImport enclosing multi-cluster Service `ns-foo-service` and Endpoints +`ns-foo-endpoints` in the Common Area. +* The Importer in each member cluster watches ResourceImports; decapsulates them and gets Service +`ns/antrea-mc-foo`, Endpoints `ns/antrea-mc-foo`, and creates the resources and as well as a +ServiceImport `ns/foo` locally if they don't exist or updates them if the resources have already +been created by the Importer earlier. + +## Antrea Multi-cluster Service + +Antrea Multi-cluster Controller only supports Service of type ClusterIP at this moment. In +order to support multi-cluster Service access between member clusters, Antrea requires member +clusters' Pod IPs are reachable and no overlapping between all member clusters. + +When Antrea Multi-cluster Controller in member cluster watches ResourceImport's creation event +in leader cluster, it will create multi-cluster Service, Endpoints and ServiceImport locally. +The Service Ports definition will be the same as exported Services, the Endpoints will be Pod +IPs from all member clusters. The new created Antrea Multi-cluster Service is just like a regular +Kubernetes Service, so Pods in a member cluster can access the multi-cluster Service as usual without +any extra setting. diff --git a/docs/multicluster/assets/basic-topology.png b/docs/multicluster/assets/basic-topology.png new file mode 100644 index 0000000000000000000000000000000000000000..80785f99bbecb68798453585cd91e95ac7f32998 GIT binary patch literal 84279 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 Z8Q%b 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 R`&Xr4DP3s6i>my5X)7@?B7XXETInGJY{%tO) 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 z z(o~EGkU?FJmbD)&#ib!(N0Svxg^4xed1!S;ZFW69Jt)G@Z9d7DTdO>fQi1#J_%O4u zIHf3j;$kpSOmgU~wDboIIfU7aR&7rPR-Hz<{sON#|8M5XiT$!yKA>DM%uV={xvtQr z>k48Iq|~KTRs>L)N|6Q{yzMLN$GF|ewpU`E-;H&8qT+RAip@kw3L!7RhI}z#pCNf{ zo9a<=A#D!aL81A_Hp%nvN#9t$N5oqX*fA$XA2aRLSO!q}9cNC^2vpa3wRF>YYwxVp z*+-Uw)A8IkBm27M!c0s}yN_FseJYvXm4YvkFfQu}w&UsZ3^ci`RiGdjw&SCR1@WO3<~!V@O^a~-t@|9%;aOD=4R`3_vO5V^ZZf zT6RYRcXIdhHIBQ(qrSgJlVxLc?Cuu%^teFxb7Zl{xO9Oz+5Qi_`VE5z6HnVHUD-j$ zTdu-dEZn1I@_II%_iz};jy!B)#Eda!oCh;zvQ94_rc@lC-)Wt^m;`L<PL!+$;qsE=1OD6={)f*YbH0(~+Y7OEB zAv)9K)%L4VPrVs}FBv6l4*qf8@~GChtVHyuu$1%J!`9(LMj1J|q`k}DBx zDMlVcU&N7IDd$D8T(W48q%pPmWWQPE$UTCd+kLg^!8_ z2<;Q1j-rA@6RmM$4MeJ??2>1+UmhQ=l2mTlJ!3Lx@pfw&uux%n!LS^cwlJDgzAjMe zFn&eV%SRF43UL(U-9ai6+nm2-5iw}OLTJ-yMCQhu(KAiZ+#Dk}ax#os={$2s(gMx( zr!bKA@<((e$sF^V3JA5$Ez&6mmZEnJT$(z~S)b3E@xn^@hPd_o4qR>0XeLH;RD54j zOMj*lYo}Dd+8xoK`ur3o35}#bu}4# zYtXyFJTIJ_T5TH7A}8!x{RV|e6Rcromir8)N#ikp%sfE_KoCxJoIf;+c0fyYxt|ZIidFQH#x_XP^8X-69GRn@9b<)zRS$dbM!cI=xSK<-k=E zpsZApM~Y?81^$Q$;@(8CejhP@w}avB*F2wtf39o- ziU_t{D!lc1$FW?*Gt|z!`zeJSeCSRLqx72>%Mrt~=PiQ%`qcD9H#}j-pTzUUf zYn^lzcP!UYACXa;%Qr$fxIkICB0~A$_=7ZuPQyPE3Lsc-49OGx$1Nt&Q?w;=5ulv=EBrHc}cT+dWrues> zC=J>lg%Z3fY~kGbg{Axi91Y%P@%>Tc--_|vM(jEEPBHAC^NpDHws2EC$LIEaSud=v zOw;OPSl&_;+lJ+gG+zN|Oj8|4k`7~{MJ&BbW}ddIXT)!+ z1NKJ@DTL`q!Vm7R!8%cJBi>3n%&wknq65=C*-$P^#$X=XYJ}44;zrTfF-* z8rm0ICekQ2I9jmx@nwNv$nVn@XkL&4jJV0OlIJJalixS7c7m3tzUF9aK5tJ-FT9PP zvezLRRN3uE*+H`IGkCJO13CnFE(&zJo<^q(KtkG_=f zVTX2S{UnKG1!_LIrM&7Mlg_VPQy@)*VVWFE&x~{OnzL!80+YabIR{jT?(7>P@JAxd z=sMcY8ndcqfHgk46kN)J`wjn>cmO&U8v*PWnQ1w>HlSbsF@m)**>=iW;)uj|EMI%| zBpJqDvPt~S1JcR>574g%f7<@7_PG)RPEhx!$lnIoe;)OxCj?B49O6W?zvbVb zVT#QH`#ClnDg29{{_!Za4DieU@212RSEI-M6JE}IhzfZ46r&teal-zylwue6hO+5> z%g}gk%(EZrZ#E~NIO_1R1OrXD>%`_-d`Qm;$f<7DmO2`B?KPehabVHS4(zc!K1wcb zrzAj4em)Oxh3_bwm)iSPGb;@8|CTV+-+}gVM#QNrH-;V{3ZzkhGBok7h>7M9NZ#MO z7{v~R9aRSLi~J^vcDBct{UrWAfd=SA`zU`l)#436RoGZP3%~a*(-0L5r-u)hm}5X> zg|O3qzcaHE@H=uRvUR@rML+&t81FX3@vO8U3f~6)rU9S|62rKd#~&#r.A3)7(U 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

-s4kS%9DTEMa%8cSj3L3Nx~0!kkSK6hZK& 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 literal 0 HcmV?d00001 diff --git a/docs/multicluster/getting-started.md b/docs/multicluster/getting-started.md new file mode 100644 index 00000000000..70eb5356d9d --- /dev/null +++ b/docs/multicluster/getting-started.md @@ -0,0 +1,428 @@ +# Antrea Multi-cluster Installation + +Antrea Multi-cluster allows users to export and import resources including Services and +Endpoints across multiple clusters within a ClusterSet, and enables inter-cluster Service +communication in the ClusterSet. This feature is introduced from Antrea v1.5.0. + +## Prepare Antrea Multi-cluster Image + +For Antrea Multi-cluster, there is only one image `antrea/antrea-mc-controller:latest` +you can pull the image from Docker Hub by default, or if you'd like to build image locally, +you can follow the following steps to get the image ready on your local clusters. + +1. Go to `antrea/multi-cluster` folder, run `make docker-build`, and you will get a new image + named `antrea/antrea-mc-controller:latest` locally. +2. Run `docker save antrea/antrea-mc-controller:latest > antrea-mcs.tar` to save the image. +3. Copy the image file `antrea-mcs.tar` to the Nodes of your local cluster. +4. Run `docker load < antrea-mcs.tar` in each Node of your local cluster. + +## Deploy Mulit-cluster Controller + +In a ClusterSet, there is one leader cluster and two or more member clusters. You can run the +leader controller in either a dedicated cluster or one of the member clusters. Please refer +to [Installation in Dedicated Leader Cluster](#installation-in-dedicated-leader-cluster) +and [Installation in the Member Cluster](#installation-in-the-member-cluster) +to deploy leader and member controllers in separate clusters, or you can refer to +[Installation in a Shared Cluster](#installation-in-a-shared-cluster) to learn how to +run both member and leader controllers in one cluster. + +### Deployment in a Dedicated Leader Cluster + +1. Run the following commands to apply Multi-cluster CRDs in the leader cluster. + + * For any given release `` (e.g. `v1.5.0`). + + ```bash + kubectl apply -f https://github.com/antrea-io/antrea/releases/download//antrea-multicluster-leader-global.yml + ``` + + * To deploy the latest version (checkout and built from the `feature/multi-cluster` branch). + + ```bash + kubectl apply -f multicluster/build/yamls/antrea-multicluster-leader-global.yml + ``` + +2. Install Multi-cluster Controller in the leader cluster. Since Multi-cluster Controller is +running as namespaced deployment, you should create a Namespace first, then apply the +manifest with new Namespace. + +* For any given release `` (e.g. `v1.5.0`). + + ```bash + kubectl create ns antrea-mcs-ns + curl -L https://github.com/antrea-io/antrea/releases/download/v1.5.0/antrea-multicluster-leader-namespaced.yml > antrea-multicluster-leader-namespaced.yml + sed 's/changeme/antrea-mcs-ns/g' antrea-multicluster-leader-namespaced.yml | kubectl apply -f - + ``` + +* To deploy the latest version (checkout and built from the `feature/multi-cluster` branch). + + ```bash + kubectl create ns antrea-mcs-ns + multicluster/hack/generate-manifest.sh -l antrea-mcs-ns | kubectl apply -f - + ``` + +### Deployment in the Member Cluster + +You can run the following commands to install Multi-cluster Controller to all +member clusters. The command will run the controller in the "member" mode in the `kube-system` +Namespace by default. + +* For any given release `` (e.g. `v1.5.0`). + +```bash +kubectl apply -f https://github.com/antrea-io/antrea/releases/download//antrea-multicluster-member.yml +``` + +* To deploy the latest version (checkout and built from the `feature/multi-cluster` branch). + +```bash +kubectl apply -f multicluster/build/yamls/antrea-multicluster-member.yml +``` + +### Deploy Leader and Member in one Cluster + +There is no deployment dependency between member and leader clusters if you are using a cluster +as a dedicated leader cluster. But if you'd like to run both leader and member controllers in +one cluster, below is the required deployment sequence: + +1. Follow the step in section [Installation in the Member Cluster](#deployment-in-the-member-cluster) +to install the member controller first. +2. Follow the step 2 only in section [Installation in Dedicated Leader Cluster](#deployment-in-dedicated-leader-cluster) +to install the leader controller. The global CRDs have been installed when you deploy the member controller. + +## ClusterSet + +An Antrea Multi-cluster ClusterSet should include at least one leader cluster +and two member clusters. As an example, in the following sections we will create a ClusterSet with +ID `test-clusterset` which has two member clusters with cluster ID `test-cluster-east`, +`test-cluster-west` and one leader cluster with ID `test-cluster-north`. + +### Setting up Access to Leader Cluster + +We first need to set up access to the leader cluster's API server for all member clusters. +We recommend creating one ServiceAccount for each member for fine-grained access control. + +1. Apply the following yaml in the leader cluster to set up access for +`test-cluster-east`. + + ```yml + apiVersion: v1 + kind: ServiceAccount + metadata: + name: member-east-access-sa + namespace: antrea-mcs-ns + --- + apiVersion: v1 + kind: Secret + metadata: + name: member-east-access-token + namespace: antrea-mcs-ns + annotations: + kubernetes.io/service-account.name: member-east-access-sa + type: kubernetes.io/service-account-token + --- + apiVersion: rbac.authorization.k8s.io/v1 + kind: RoleBinding + metadata: + name: member-east-access-rolebinding + namespace: antrea-mcs-ns + roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: antrea-mc-member-cluster-role + subjects: + - kind: ServiceAccount + name: member-east-access-sa + namespace: antrea-mcs-ns + ``` + +2. Copy the access token into the member cluster `test-cluster-east`. E.g. + + ```bash + kubectl get secret member-east-access-token -n antrea-mcs-ns -o yaml | grep -w -e '^apiVersion' -e '^data' -e '^metadata' -e '^ *name:' -e '^kind' -e ' ca.crt' -e ' token:' -e '^type' -e ' namespace' | sed -e 's/kubernetes.io\/service-account-token/Opaque/g' -e 's/ namespace: antrea-mcs-ns/namespace: kube-system/g' > member-east-access-token.yml + ``` + +3. Replace all `east` to `west` and repeat step 1/2 for the other member cluster `test-cluster-west` +to create the token secret and copy the token. + +### Setting up ClusterSet + +All clusters in the ClusterSet need to use `ClusterClaim` to claim itself as a member +of a ClusterSet. A leader cluster will define `ClusterSet` which includes leader and +member clusters. + +* Create below `ClusterClaim` and `ClusterSet` in the member cluster `test-cluster-east`. + +Note: Update `server: "https://172.18.0.2:6443"` in `ClusterSet` resource to +the correct the leader cluster API address. + +```yaml +apiVersion: multicluster.crd.antrea.io/v1alpha1 +kind: ClusterClaim +metadata: + name: east-membercluster-id + namespace: kube-system +name: id.k8s.io +value: test-cluster-east +--- +apiVersion: multicluster.crd.antrea.io/v1alpha1 +kind: ClusterClaim +metadata: + name: clusterset-id + namespace: kube-system +name: clusterSet.k8s.io +value: test-clusterset +--- +apiVersion: multicluster.crd.antrea.io/v1alpha1 +kind: ClusterSet +metadata: + name: test-clusterset + namespace: kube-system +spec: + leaders: + - clusterID: test-cluster-north + secret: "member-east-access-token" + server: "https://172.18.0.2:6443" + members: + - clusterID: test-cluster-east + namespace: antrea-mcs-ns +``` + +* Create `ClusterClaim` and `ClusterSet` in the member cluster `test-cluster-west`. + +Note: Update `server: "https://172.18.0.2:6443"` in `ClusterSet` resource to +the correct leader cluster API address. + +```yaml +apiVersion: multicluster.crd.antrea.io/v1alpha1 +kind: ClusterClaim +metadata: + name: west-membercluster-id + namespace: kube-system +name: id.k8s.io +value: test-cluster-west +--- +apiVersion: multicluster.crd.antrea.io/v1alpha1 +kind: ClusterClaim +metadata: + name: clusterset-id + namespace: kube-system +name: clusterSet.k8s.io +value: test-clusterset +--- +apiVersion: multicluster.crd.antrea.io/v1alpha1 +kind: ClusterSet +metadata: + name: test-clusterset + namespace: kube-system +spec: + leaders: + - clusterID: test-cluster-north + secret: "member-west-access-token" + server: "https://172.18.0.2:6443" + members: + - clusterID: test-cluster-west + namespace: antrea-mcs-ns +``` + +* Create `ClusterClaim` and `ClusterSet` in the leader cluster `test-cluster-north`. + +```yaml +apiVersion: multicluster.crd.antrea.io/v1alpha1 +kind: ClusterClaim +metadata: + name: leadercluster-id + namespace: antrea-mcs-ns +name: id.k8s.io +value: test-cluster-north +--- +apiVersion: multicluster.crd.antrea.io/v1alpha1 +kind: ClusterClaim +metadata: + name: clusterset-id + namespace: antrea-mcs-ns +name: clusterSet.k8s.io +value: test-clusterset +--- +apiVersion: multicluster.crd.antrea.io/v1alpha1 +kind: ClusterSet +metadata: + name: test-clusterset + namespace: antrea-mcs-ns +spec: + leaders: + - clusterID: test-cluster-north + members: + - clusterID: test-cluster-east + serviceAccount: "member-east-access-sa" + - clusterID: test-cluster-west + serviceAccount: "member-west-access-sa" + namespace: antrea-mcs-ns +``` + +When you also want to make the leader cluster `test-cluster-north` as a member in the +ClusterSet, so it can export and import resources from other member clusters, make +sure you follow the steps in [Installation in a Shared Cluster](#installation-in-a-shared-cluster), +and repeat the step [Setting up Access to Leader Cluster](#setting-up-access-to-leader-cluster) +as well to create the token secret and copy the token first. + +A sample yaml is like below: + +```yml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: member-north-access-sa + namespace: antrea-mcs-ns +--- +apiVersion: v1 +kind: Secret +metadata: + name: member-north-access-token + namespace: antrea-mcs-ns + annotations: + kubernetes.io/service-account.name: member-north-access-sa +type: kubernetes.io/service-account-token +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: member-north-access-rolebinding + namespace: antrea-mcs-ns +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: antrea-mc-member-cluster-role +subjects: + - kind: ServiceAccount + name: member-north-access-sa + namespace: antrea-mcs-ns +``` + +Then create below `ClusterClaim` and `ClusterSet` in the cluster `test-cluster-north` in the +`kube-system` Namespace where the member controller is deployed. + +```yaml +apiVersion: multicluster.crd.antrea.io/v1alpha1 +kind: ClusterClaim +metadata: + name: north-membercluster-id + namespace: kube-system +name: id.k8s.io +value: test-cluster-north +--- +apiVersion: multicluster.crd.antrea.io/v1alpha1 +kind: ClusterClaim +metadata: + name: clusterset-id + namespace: kube-system +name: clusterSet.k8s.io +value: test-clusterset +--- +apiVersion: multicluster.crd.antrea.io/v1alpha1 +kind: ClusterSet +metadata: + name: test-clusterset + namespace: kube-system +spec: + leaders: + - clusterID: test-cluster-north + secret: "member-north-access-token" + server: "https://172.18.0.2:6443" + members: + - clusterID: test-cluster-north + namespace: antrea-mcs-ns +``` + +Then update the ClusterSet `test-clusterset` definition as below to include itself +as a member cluster in the Namespace `antrea-mcs-ns` where the leader controller is +running in the cluster `test-cluster-north`. + +```yaml +apiVersion: multicluster.crd.antrea.io/v1alpha1 +kind: ClusterSet +metadata: + name: test-clusterset + namespace: antrea-mcs-ns +spec: + leaders: + - clusterID: test-cluster-north + members: + - clusterID: test-cluster-east + serviceAccount: "member-east-access-sa" + - clusterID: test-cluster-west + serviceAccount: "member-west-access-sa" + - clusterID: test-cluster-north + serviceAccount: "member-north-access-sa" + namespace: antrea-mcs-ns +``` + +## Export and Import Service + +After you set up a cluster set properly, you can simply create a `ServiceExport` resource +as below to export a `Service` from one member cluster to other members in the ClusterSet, +you can update the name and Namespace according to your local K8s Service. + +```yaml +apiVersion: multicluster.x-k8s.io/v1alpha1 +kind: ServiceExport +metadata: + name: nginx + namespace: kube-system +``` + +For example, once you export the `kube-system/nginx` Service in the member cluster +`test-cluster-west`, Antrea Multi-cluster Controller in the member cluster will create +two corresponding `ResourceExport` resources in the leader cluster, and the controller +in leader cluster will create two `ResourceImport` contains all exported Service and +Endpoints'. you can check the created resources in the leader cluster which should be +like below: + +```sh +$kubectl get resourceexport +NAME AGE +test-cluster-west-default-nginx-endpoints 7s +test-cluster-west-default-nginx-service 7s + +$kubectl get resourceimport +NAME AGE +default-nginx-endpoints 99s +default-nginx-service 99s +``` + +Then you can go to the member cluster `test-cluster-east` to check the new created +Service and Endpoints with name `kube-system/antrea-mc-nginx` and a ServiceImport named +`kube-system/nginx`. If there is already an existing Service created by users in the +member cluster `test-cluster-east` also named `nginx` in Namespace `kube-system`, which +should have no Antrea Multi-cluster annotation, then Multi-cluster Controller will +simply skip the Service and Endpoints creation. + +If there is any new change from the exported Service or Endpoints, the derived multi-cluster +resources will be updated accordingly. A few cases below are worth to note: + +1. When there is only one Service ResourceExport, Antrea Multi-cluster Controller will converge +the change and reflect the update in correspoding ResourceImport. Otherwise, controller will skip +converging the update until users correct it to match the Service definition in correspoding +ResourceImport. +2. When a member cluster has already exported a Service, e.g.: `default/nginx` with TCP +Port `80`, then other member clusters can only export the same Service with the same Ports +definition. Otherwise, Antrea Multi-cluster Controller will skip converging the mismatched +ResourceExport into the corresponding ResourceImport until users correct it. +3. When a member cluster's Service ResourceExport has not been converged successfully +due to forementioned mismatch issue, Antrea Multi-cluster Controller will also skip converging +the corresponding Endpoints ResourceExport until users correct it. + +## Known Issue + +We recommend user to reinstall or update Antrea Multi-cluster controllers through `kubectl apply`. +If you are using `kubectl delete -f *` and `kubectl create -f *` to reinstall CRDs and controller +in the leader cluster, you might encounter [a known issue](https://github.com/kubernetes/kubernetes/issues/60538) +during `ResourceExport` CRD cleanup. To avoid this issue, please clean up any `ResourceExport` +resources in the leader cluster first, and make sure `kubectl get resourceexport -A` returns +empty result before you can reinstall the CRDs and leader controller. + +All `ResourceExport` can be deleted with the following command: + +```sh +kubectl get resourceexport -A -o json | jq -r '.items[]|[.metadata.namespace,.metadata.name]|join(" ")' | xargs -n2 bash -c 'kubectl delete -n $0 resourceexport/$1' +``` diff --git a/hack/.notableofcontents b/hack/.notableofcontents index fd18674bc26..8b28362ff26 100644 --- a/hack/.notableofcontents +++ b/hack/.notableofcontents @@ -26,6 +26,8 @@ docs/maintainers/build-kubemark.md docs/maintainers/getting-started-gif.md docs/maintainers/release.md docs/maintainers/updating-ovs-windows.md +docs/multicluster/architecture.md +docs/multicluster/getting-started.md docs/network-requirements.md docs/noencap-hybrid-modes.md docs/octant-plugin-installation.md diff --git a/multicluster/config/samples/multicluster_v1_serviceexports.yaml b/multicluster/config/samples/multicluster_v1_serviceexports.yaml new file mode 100644 index 00000000000..d99fdf8d08a --- /dev/null +++ b/multicluster/config/samples/multicluster_v1_serviceexports.yaml @@ -0,0 +1,5 @@ +apiVersion: multicluster.x-k8s.io/v1alpha1 +kind: ServiceExport +metadata: + name: nginx + namespace: kube-system diff --git a/multicluster/config/samples/multicluster_v1_serviceimports.yaml b/multicluster/config/samples/multicluster_v1_serviceimports.yaml new file mode 100644 index 00000000000..e533fd17ba2 --- /dev/null +++ b/multicluster/config/samples/multicluster_v1_serviceimports.yaml @@ -0,0 +1,19 @@ +apiVersion: multicluster.x-k8s.io/v1alpha1 +kind: ServiceImport +metadata: + name: kube-dns + namespace: kube-system +spec: + ips: + - 10.100.160.70 + ports: + - name: 53udp + port: 53 + protocol: UDP + - name: 53tcp + port: 53 + protocol: TCP + - name: 9153tcp + port: 9153 + protocol: TCP + type: ClusterSetIP diff --git a/multicluster/config/samples/multicluster_v1alpha1_clusterclaim.yaml b/multicluster/config/samples/multicluster_v1alpha1_clusterclaim.yaml index 69d2b7b89da..81a0f1f4dac 100644 --- a/multicluster/config/samples/multicluster_v1alpha1_clusterclaim.yaml +++ b/multicluster/config/samples/multicluster_v1alpha1_clusterclaim.yaml @@ -1,7 +1,15 @@ apiVersion: multicluster.crd.antrea.io/v1alpha1 kind: ClusterClaim metadata: - name: clusterclaim-sample -spec: - # Add fields here - foo: bar + name: west-membercluster-id + namespace: default +name: id.k8s.io +value: test-cluster-west +--- +apiVersion: multicluster.crd.antrea.io/v1alpha1 +kind: ClusterClaim +metadata: + name: clusterset-id + namespace: default +name: clusterSet.k8s.io +value: test-clusterset diff --git a/multicluster/config/samples/multicluster_v1alpha1_clusterset.yaml b/multicluster/config/samples/multicluster_v1alpha1_clusterset.yaml index 99bce75d8e4..75abb8f8542 100644 --- a/multicluster/config/samples/multicluster_v1alpha1_clusterset.yaml +++ b/multicluster/config/samples/multicluster_v1alpha1_clusterset.yaml @@ -1,7 +1,14 @@ apiVersion: multicluster.crd.antrea.io/v1alpha1 kind: ClusterSet metadata: - name: clusterset-sample + name: test-clusterset + namespace: antrea-mcs-ns spec: - # Add fields here - foo: bar + leaders: + - clusterID: test-cluster-leader + secret: "leader-access-token" + server: "https://172.18.0.2:6443" + members: + - clusterID: test-cluster-east + - clusterID: test-cluster-west + namespace: antrea-mcs-ns diff --git a/multicluster/config/samples/multicluster_v1alpha1_resourceexport.yaml b/multicluster/config/samples/multicluster_v1alpha1_resourceexport.yaml index 877f59636ae..8c88f1588a1 100644 --- a/multicluster/config/samples/multicluster_v1alpha1_resourceexport.yaml +++ b/multicluster/config/samples/multicluster_v1alpha1_resourceexport.yaml @@ -1,7 +1,36 @@ apiVersion: multicluster.crd.antrea.io/v1alpha1 kind: ResourceExport metadata: - name: resourceexport-sample + name: test-cluster-west-nginx-kube-system-service + namespace: antrea-mcs-ns spec: - # Add fields here - foo: bar + clusterID: test-cluster-west + name: nginx + namespace: kube-system + kind: Service + service: + serviceSpec: + ports: + - name: tcp80 + port: 80 + protocol: TCP +--- +apiVersion: multicluster.crd.antrea.io/v1alpha1 +kind: ResourceExport +metadata: + name: test-cluster-west-nginx-kube-system-endpoints + namespace: antrea-mcs-ns +spec: + clusterID: test-cluster-west + name: nginx + namespace: kube-system + kind: Endpoints + endpoints: + subsets: + - addresses: + - ip: 192.168.225.49 + - ip: 192.168.225.51 + ports: + - name: tcp8080 + port: 8080 + protocol: TCP diff --git a/multicluster/config/samples/multicluster_v1alpha1_resourceimport.yaml b/multicluster/config/samples/multicluster_v1alpha1_resourceimport.yaml index 72783d09625..d4be69c78c3 100644 --- a/multicluster/config/samples/multicluster_v1alpha1_resourceimport.yaml +++ b/multicluster/config/samples/multicluster_v1alpha1_resourceimport.yaml @@ -1,7 +1,44 @@ apiVersion: multicluster.crd.antrea.io/v1alpha1 kind: ResourceImport metadata: - name: resourceimport-sample + name: nginx-kube-system-service + namespace: antrea-mcs-ns spec: - # Add fields here - foo: bar + name: nginx + namespace: kube-system + kind: ServiceImport + serviceImport: + spec: + ports: + - name: tcp80 + port: 80 + protocol: TCP + type: ClusterSetIP +--- +apiVersion: multicluster.crd.antrea.io/v1alpha1 +kind: ResourceImport +metadata: + name: nginx-kube-system-endpoints + namespace: antrea-mcs-ns +spec: + name: nginx + namespace: kube-system + kind: EndPoints + endpoints: + subsets: + - addresses: + - ip: 192.168.225.49 + - ip: 192.168.225.51 + ports: + - name: tcp8080 + port: 8080 + protocol: TCP + - addresses: + - ip: 192.168.224.21 + nodeName: node-one + - ip: 192.168.226.11 + nodeName: node-two + ports: + - name: tcp8080 + port: 8080 + protocol: TCP