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
* Enhanced local IT setup
* Removed MCC from non-gardener-setup script
* Removed MCC from non-gardener-setup script
* Update hack/non_gardener_local_setup.sh
Co-authored-by: Aaron Francis Fernandes <79958509+aaronfern@users.noreply.github.com>
* Improved the IT test docs.
* Improved the IT test docs.
---------
Co-authored-by: Aaron Francis Fernandes <79958509+aaronfern@users.noreply.github.com>
Copy file name to clipboardExpand all lines: docs/development/integration_tests.md
+7-37Lines changed: 7 additions & 37 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -8,50 +8,20 @@ Integration tests for `machine-controller-manager-provider-{provider-name}` can
8
8
9
9
1. Clone the repository `machine-controller-manager-provider-{provider-name}` on the local system.
10
10
1. Navigate to `machine-controller-manager-provider-{provider-name}` directory and create a `dev` sub-directory in it.
11
-
1. Create a `.env` file at the root of the `machine-controller-manager-provider-{provider-name}` project. This file serves as an environments file where all key-value pairs that are used in the `Makefile` are defined.
12
-
1. Copy the kubeconfig of the Control Cluster into `dev/control-kubeconfig.yaml` and add an entry in the `.env` file with `CONTROL_KUBECONFIG=dev/control-kubeconfig.yaml`.
13
-
1. Add `CONTROL_NAMESPACE=<namespace of the control cluster>` to the `.env` file. This is the namespace that is used to deploy all resources and run tests.
14
-
1. (optional) Copy the kubeconfig of the Target Cluster into `dev/target-kubeconfig.yaml` and add an entry in the `.env` file with `TARGET_KUBECONFIG=dev/target-kubeconfig.yaml`.
15
11
1. If the tags on instances & associated resources on the provider are of `String` type (for example, GCP tags on its instances are of type `String` and not key-value pair) then add `TAGS_ARE_STRINGS := true` in the `Makefile` and export it. For GCP this has already been hard coded in the `Makefile`.
16
-
1. If the intention is to run any controllers in the control cluster, then `.env` should have at least one of `MCM_IMAGE` and `MC_IMAGE` defined. These images will be used along with `kubernetes/deployment.yaml` to deploy/update controllers in the Control Cluster. If the intention is to run the controllers locally then remove `MCM_IMAGE` and `MC_IMAGE` key-value pairs defined in `.env` and set `MACHINE_CONTROLLER_MANAGER_DEPLOYMENT_NAME=machine-controller-manager` in the `Makefile` file.
17
-
1. In order to apply the CRDs when the Control Cluster is a Gardener Shoot or if none of the controller images are specified, `machine-controller-manager` repository will be cloned automatically. Incase, this repository already exists in local system, then create a softlink as below which helps to test changes in `machine-controller-manager` quickly.
1. Please pass `TARGET_CLUSTER_NAME`in the `.env` file. It will be used to initialize the orphan resource tracker. Keep it as the cluster name whose kubeconfig is specified in the `TARGET_KUBECONFIG` variable.
22
-
23
-
## Scenario based additional configurations
24
-
### Gardener Shoot as the Control Cluster
25
-
26
-
If the Control Cluster is a Gardener Shoot cluster then,
27
-
28
-
1. Deploy a `Secret` named `test-mc-secret` (that contains the provider secret and cloud-config) in the `default` namespace of the Control Cluster.
29
-
1. Create a `dev/machineclassv1.yaml` file in the cloned repository and add an entry in the `.env` file with `MACHINECLASS_V1=dev/machineclassv1.yaml`. The name of the `MachineClass` itself should be `test-mc-v1`. The value of `providerSpec.secretRef.name` should be `test-mc-secret`.
30
-
1. (Optional) Create an additional `dev/machineclassv2.yaml` file similar to above but with a bigger machine type and add an entry in the `.env` file with `MACHINECLASS_V2=dev/machineclassv2.yaml`.
31
-
32
-
### Gardener Seed as the Control Cluster
33
-
34
-
If the Control Cluster is a Gardener SEED cluster, then the suite ideally employs the already existing `MachineClass` and Secrets. However,
35
-
36
-
1. Define the variable `IS_CONTROL_CLUSTER_SEED`in the `.env` file and set it to `true`.
37
-
`Warning:` Make sure to set the `CONTROL_NAMESPACE` variable to the shoot namespace where the control plane of the target resides.
38
-
1. (Optional) User can employ a custom `MachineClass`for the tests using below steps:
39
-
1. Deploy a `Secret` named `test-mc-secret` (that contains the provider secret and cloud-config) in the shoot namespace of the Control Cluster. That is, the value of `metadata.namespace` should be `technicalID` of the Shoot and it will be of the pattern `shoot--<project>--<shoot-name>`.
40
-
1. Create a `dev/machineclassv1.yaml` file and add an entry in the `.env` file with `MACHINECLASS_V1=dev/machineclassv1.yaml`.
41
-
1. `providerSpec.secretRef.name` should refer the secret created in the previous step.
42
-
1. `metadata.namespace` and `providerSpec.secretRef.namespace` should be `technicalID` (`shoot--<project>--<shoot-name>`) of the shoot.
43
-
1. The name of the `MachineClass` itself should be `test-mc-v1`.
44
12
45
13
## Running the tests
46
14
47
-
1. There is a rule `test-integration`in the `Makefile`, which can be used to start the integration test:
15
+
1. There is a rule `test-integration` in the `Makefile` of the provider repository, which can be used to start the integration test:
48
16
```bash
49
17
$ make test-integration
50
-
Starting integration tests...
51
-
Running Suite: Controller Suite
52
-
===============================
53
18
```
54
-
1. The controllers log files (`mcm_process.log` and `mc_process.log`) are stored in`.ci/controllers-test/logs` repo and can be used later.
19
+
1. This will ask for additional inputs. Most of them are self explanatory except:
20
+
- The script assumes that both the control and target clusters are already being created.
21
+
- In case of non-gardener setup (control cluster is not a gardener seed), the name of the machineclass must be `test-mc-v1` and the value of `providerSpec.secretRef.name` should be `test-mc-secret`.
22
+
- In case of azure, `TARGET_CLUSTER_NAME` must be same as the name of the Azure ResourceGroup for the cluster.
23
+
- If you are deploying the secret manually, a `Secret` named `test-mc-secret` (that contains the provider secret and cloud-config) in the `default` namespace of the Control Cluster should be created.
24
+
3. The controllers log files (`mcm_process.log` and `mc_process.log`) are stored in`.ci/controllers-test/logs` repo and can be used later.
55
25
## Adding Integration Tests for new providers
56
26
57
27
For a new provider, Running Integration tests works with no changes. But for the orphan resource test cases to work correctly, the provider-specific API calls and the Resource Tracker Interface (RTI) should be implemented. Please check [`machine-controller-manager-provider-aws`](https://github.com/gardener/machine-controller-manager-provider-aws/blob/master/test/integration/provider/) for reference.
0 commit comments