@ -55,6 +55,63 @@ the tests:
- `Microsoft.KeyVault/*`
- `Microsoft.KeyVault/*`
- `Microsoft.EventHub/*`
- `Microsoft.EventHub/*`
### IAM and CI setup
To create the necessary IAM role with all the permissions, set up CI secrets and
variables using
[azure-gh-actions ](https://github.com/fluxcd/test-infra/tree/main/tf-modules/azure/github-actions )
use:
```hcl
resource "tls_private_key" "privatekey" {
algorithm = "RSA"
rsa_bits = 4096
}
module "azure_gh_actions" {
source = "git::https://github.com/fluxcd/test-infra.git//tf-modules/azure/github-actions"
azure_owners = ["owner-id-1", "owner-id-2"]
azure_app_name = "flux2-e2e"
azure_app_description = "flux2 e2e"
azure_app_secret_name = "flux2-e2e"
azure_permissions = [
"Microsoft.Kubernetes/*",
"Microsoft.Resources/*",
"Microsoft.Authorization/roleAssignments/Read",
"Microsoft.Authorization/roleAssignments/Write",
"Microsoft.Authorization/roleAssignments/Delete",
"Microsoft.ContainerRegistry/*",
"Microsoft.ContainerService/*",
"Microsoft.KeyVault/*",
"Microsoft.EventHub/*"
]
azure_location = "eastus"
github_project = "flux2"
github_secret_client_id_name = "AZ_ARM_CLIENT_ID"
github_secret_client_secret_name = "AZ_ARM_CLIENT_SECRET"
github_secret_subscription_id_name = "AZ_ARM_SUBSCRIPTION_ID"
github_secret_tenant_id_name = "AZ_ARM_TENANT_ID"
github_secret_custom = {
"TF_VAR_azuredevops_org" = "< org-name > ",
"TF_VAR_azuredevops_pat" = "< pat > ",
"GITREPO_SSH_CONTENTS" = base64encode(tls_private_key.privatekey.private_key_openssh),
"GITREPO_SSH_PUB_CONTENTS" = base64encode(tls_private_key.privatekey.public_key_openssh)
}
}
output "publickey" {
value = tls_private_key.privatekey.public_key_openssh
}
```
Copy the `publickey` output printed after applying, or run `terraform output` to
print it again, and add it in the Azure DevOps SSH public keys under the user
account that'll be used by flux in the tests.
## GCP
## GCP
### Architecture
### Architecture
@ -73,8 +130,11 @@ for the terraform variables
- GCP account with an active project to be able to create GKE and GCR, and permission to assign roles.
- GCP account with an active project to be able to create GKE and GCR, and permission to assign roles.
- Existing GCP KMS keyring and crypto key.
- Existing GCP KMS keyring and crypto key.
- [Create a Keyring ](https://cloud.google.com/kms/docs/create-key-ring )
- [Create a Keyring ](https://cloud.google.com/kms/docs/create-key-ring ) in
- [Create a Crypto Key ](https://cloud.google.com/kms/docs/create-key )
`global` location.
- [Create a Crypto Key ](https://cloud.google.com/kms/docs/create-key ) with
symmetric algorithm for encryption and decryption, and software based
protection level.
- gcloud CLI, need to be logged in using `gcloud auth login` as a User (not a
- gcloud CLI, need to be logged in using `gcloud auth login` as a User (not a
Service Account), configure application default credentials with `gcloud auth
Service Account), configure application default credentials with `gcloud auth
application-default login` and docker credential helper with `gcloud auth configure-docker` .
application-default login` and docker credential helper with `gcloud auth configure-docker` .
@ -112,15 +172,71 @@ for the terraform variables
Following roles are needed for provisioning the infrastructure and running the tests:
Following roles are needed for provisioning the infrastructure and running the tests:
- Compute Instance Admin (v1)
- Compute Instance Admin (v1) - `roles/compute.instanceAdmin.v1`
- Kubernetes Engine Admin
- Kubernetes Engine Admin - `roles/container.admin`
- Service Account User
- Service Account User - `roles/iam.serviceAccountUser`
- Artifact Registry Administrator
- Service Account Token Creator - `roles/iam.serviceAccountTokenCreator`
- Artifact Registry Repository Administrator
- Artifact Registry Administrator - `roles/artifactregistry.admin`
- Cloud KMS Admin
- Artifact Registry Repository Administrator - `roles/artifactregistry.repoAdmin`
- Cloud KMS CryptoKey Encrypter
- Cloud KMS Admin - `roles/cloudkms.admin`
- Source Repository Administrator
- Cloud KMS CryptoKey Encrypter - `roles/cloudkms.cryptoKeyEncrypt`
- Pub/Sub Admin
- Source Repository Administrator - `roles/source.admin`
- Pub/Sub Admin - `roles/pubsub.admin`
### IAM and CI setup
To create the necessary IAM role with all the permissions, set up CI secrets and
variables using
[gcp-gh-actions ](https://github.com/fluxcd/test-infra/tree/main/tf-modules/gcp/github-actions )
use:
```hcl
provider "google" {}
resource "tls_private_key" "privatekey" {
algorithm = "RSA"
rsa_bits = 4096
}
module "gcp_gh_actions" {
source = "git::https://github.com/fluxcd/test-infra.git//tf-modules/gcp/github-actions"
gcp_service_account_id = "flux2-e2e-test"
gcp_service_account_name = "flux2-e2e-test"
gcp_roles = [
"roles/compute.instanceAdmin.v1",
"roles/container.admin",
"roles/iam.serviceAccountUser",
"roles/iam.serviceAccountTokenCreator",
"roles/artifactregistry.admin",
"roles/artifactregistry.repoAdmin",
"roles/cloudkms.admin",
"roles/cloudkms.cryptoKeyEncrypter",
"roles/source.admin",
"roles/pubsub.admin"
]
github_project = "flux2"
github_secret_credentials_name = "FLUX2_E2E_GOOGLE_CREDENTIALS"
github_secret_custom = {
"TF_VAR_gcp_keyring" = "< keyring-name > ",
"TF_VAR_gcp_crypto_key" = "< key-name > ",
"TF_VAR_gcp_email" = "< email > ",
"GITREPO_SSH_CONTENTS" = base64encode(tls_private_key.privatekey.private_key_openssh),
"GITREPO_SSH_PUB_CONTENTS" = base64encode(tls_private_key.privatekey.public_key_openssh)
}
}
output "publickey" {
value = tls_private_key.privatekey.public_key_openssh
}
```
Copy the `publickey` output printed after applying, or run `terraform output` to
print it again, and add it in the Google Source Repository SSH public keys under
the user account with email address referred in `TF_VAR_gcp_email` above.
## Tests
## Tests