mirror of
https://github.com/edgelesssys/constellation.git
synced 2025-06-19 11:44:20 -04:00
ci: Terraform provider e2e tests (#2712)
* Refactor selfManagedInfra input to clusterCreation in e2e tests * Run e2e test using terraform provider * Allow insecure measurement fetching in Terraform provider * Run Terraform provider test instead of module test in weekly runs --------- Signed-off-by: Daniel Weiße <dw@edgeless.systems>
This commit is contained in:
parent
9667dfff58
commit
724ee44466
17 changed files with 415 additions and 55 deletions
8
.github/actions/cdbg_deploy/action.yml
vendored
8
.github/actions/cdbg_deploy/action.yml
vendored
|
@ -20,9 +20,9 @@ inputs:
|
||||||
refStream:
|
refStream:
|
||||||
description: "The refStream of the image the test runs on."
|
description: "The refStream of the image the test runs on."
|
||||||
required: true
|
required: true
|
||||||
selfManagedInfra:
|
clusterCreation:
|
||||||
description: "Use self-managed infrastructure instead of infrastructure created by the Constellation CLI."
|
description: "How the infrastructure for the e2e test was created. One of [cli, self-managed, terraform]."
|
||||||
default: "false"
|
default: "cli"
|
||||||
|
|
||||||
runs:
|
runs:
|
||||||
using: "composite"
|
using: "composite"
|
||||||
|
@ -97,7 +97,7 @@ runs:
|
||||||
--info logcollect.github.is-debug-cluster=false \
|
--info logcollect.github.is-debug-cluster=false \
|
||||||
--info logcollect.github.ref-stream="${{ inputs.refStream }}" \
|
--info logcollect.github.ref-stream="${{ inputs.refStream }}" \
|
||||||
--info logcollect.github.kubernetes-version="${{ inputs.kubernetesVersion }}" \
|
--info logcollect.github.kubernetes-version="${{ inputs.kubernetesVersion }}" \
|
||||||
--info logcollect.github.self-managed-infra="${{ inputs.selfManagedInfra }}" \
|
--info logcollect.github.cluster-creation="${{ inputs.clusterCreation }}" \
|
||||||
--info logcollect.deployment-type="debugd" \
|
--info logcollect.deployment-type="debugd" \
|
||||||
--verbosity=-1 \
|
--verbosity=-1 \
|
||||||
--force
|
--force
|
||||||
|
|
33
.github/actions/constellation_create/action.yml
vendored
33
.github/actions/constellation_create/action.yml
vendored
|
@ -50,9 +50,9 @@ inputs:
|
||||||
internalLoadBalancer:
|
internalLoadBalancer:
|
||||||
description: "Whether to use an internal load balancer for the control plane"
|
description: "Whether to use an internal load balancer for the control plane"
|
||||||
required: false
|
required: false
|
||||||
selfManagedInfra:
|
clusterCreation:
|
||||||
description: "Use self-managed infrastructure instead of infrastructure created by the Constellation CLI."
|
description: "How to create infrastructure for the e2e test. One of [cli, self-managed, terraform]."
|
||||||
required: true
|
default: "cli"
|
||||||
marketplaceImageVersion:
|
marketplaceImageVersion:
|
||||||
description: "Marketplace OS image version. Used instead of osImage."
|
description: "Marketplace OS image version. Used instead of osImage."
|
||||||
required: false
|
required: false
|
||||||
|
@ -63,7 +63,7 @@ inputs:
|
||||||
outputs:
|
outputs:
|
||||||
kubeconfig:
|
kubeconfig:
|
||||||
description: "The kubeconfig for the cluster."
|
description: "The kubeconfig for the cluster."
|
||||||
value: ${{ steps.constellation-init.outputs.KUBECONFIG }}
|
value: ${{ steps.get-kubeconfig.outputs.KUBECONFIG }}
|
||||||
osImageUsed:
|
osImageUsed:
|
||||||
description: "The OS image used in the cluster."
|
description: "The OS image used in the cluster."
|
||||||
value: ${{ steps.setImage.outputs.image }}
|
value: ${{ steps.setImage.outputs.image }}
|
||||||
|
@ -148,7 +148,7 @@ runs:
|
||||||
sudo sh -c 'echo "127.0.0.1 license.confidential.cloud" >> /etc/hosts' || true
|
sudo sh -c 'echo "127.0.0.1 license.confidential.cloud" >> /etc/hosts' || true
|
||||||
|
|
||||||
- name: Constellation create (CLI)
|
- name: Constellation create (CLI)
|
||||||
if : inputs.selfManagedInfra != 'true'
|
if : inputs.clusterCreation != 'self-managed'
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
# TODO(v2.14): Remove workaround for CLIs not supporting apply command
|
# TODO(v2.14): Remove workaround for CLIs not supporting apply command
|
||||||
|
@ -159,7 +159,7 @@ runs:
|
||||||
constellation $cmd -y --debug --tf-log=DEBUG
|
constellation $cmd -y --debug --tf-log=DEBUG
|
||||||
|
|
||||||
- name: Constellation create (self-managed)
|
- name: Constellation create (self-managed)
|
||||||
if : inputs.selfManagedInfra == 'true'
|
if : inputs.clusterCreation == 'self-managed'
|
||||||
uses: ./.github/actions/self_managed_create
|
uses: ./.github/actions/self_managed_create
|
||||||
with:
|
with:
|
||||||
cloudProvider: ${{ inputs.cloudProvider }}
|
cloudProvider: ${{ inputs.cloudProvider }}
|
||||||
|
@ -174,7 +174,7 @@ runs:
|
||||||
azureIAMCreateCredentials: ${{ inputs.azureIAMCreateCredentials }}
|
azureIAMCreateCredentials: ${{ inputs.azureIAMCreateCredentials }}
|
||||||
refStream: ${{ inputs.refStream }}
|
refStream: ${{ inputs.refStream }}
|
||||||
kubernetesVersion: ${{ inputs.kubernetesVersion }}
|
kubernetesVersion: ${{ inputs.kubernetesVersion }}
|
||||||
selfManagedInfra: ${{ inputs.selfManagedInfra }}
|
clusterCreation: ${{ inputs.clusterCreation }}
|
||||||
|
|
||||||
- name: Set force flag
|
- name: Set force flag
|
||||||
id: set-force-flag
|
id: set-force-flag
|
||||||
|
@ -183,17 +183,30 @@ runs:
|
||||||
run: |
|
run: |
|
||||||
echo "flag=--force" | tee -a $GITHUB_OUTPUT
|
echo "flag=--force" | tee -a $GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Constellation init
|
- name: Constellation apply (Terraform)
|
||||||
id: constellation-init
|
id: constellation-apply-terraform
|
||||||
|
if: inputs.clusterCreation == 'terraform'
|
||||||
|
uses: ./.github/actions/terraform_apply
|
||||||
|
with:
|
||||||
|
cloudProvider: ${{ inputs.cloudProvider }}
|
||||||
|
|
||||||
|
- name: Constellation apply
|
||||||
|
id: constellation-apply-cli
|
||||||
|
if: inputs.clusterCreation != 'terraform'
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
constellation apply --skip-phases=infrastructure --debug ${{ steps.set-force-flag.outputs.flag }}
|
constellation apply --skip-phases=infrastructure --debug ${{ steps.set-force-flag.outputs.flag }}
|
||||||
|
|
||||||
|
- name: Get kubeconfig
|
||||||
|
id: get-kubeconfig
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
echo "KUBECONFIG=$(pwd)/constellation-admin.conf" | tee -a $GITHUB_OUTPUT
|
echo "KUBECONFIG=$(pwd)/constellation-admin.conf" | tee -a $GITHUB_OUTPUT
|
||||||
|
|
||||||
- name: Wait for nodes to join and become ready
|
- name: Wait for nodes to join and become ready
|
||||||
shell: bash
|
shell: bash
|
||||||
env:
|
env:
|
||||||
KUBECONFIG: "${{ steps.constellation-init.outputs.KUBECONFIG }}"
|
KUBECONFIG: "${{ steps.get-kubeconfig.outputs.KUBECONFIG }}"
|
||||||
JOINTIMEOUT: "1200" # 20 minutes timeout for all nodes to join
|
JOINTIMEOUT: "1200" # 20 minutes timeout for all nodes to join
|
||||||
run: |
|
run: |
|
||||||
echo "::group::Wait for nodes"
|
echo "::group::Wait for nodes"
|
||||||
|
|
10
.github/actions/constellation_destroy/action.yml
vendored
10
.github/actions/constellation_destroy/action.yml
vendored
|
@ -5,9 +5,9 @@ inputs:
|
||||||
kubeconfig:
|
kubeconfig:
|
||||||
description: "The kubeconfig for the cluster."
|
description: "The kubeconfig for the cluster."
|
||||||
required: true
|
required: true
|
||||||
selfManagedInfra:
|
clusterCreation:
|
||||||
description: "Use self-managed infrastructure instead of infrastructure created by the Constellation CLI."
|
description: "How the infrastructure for the e2e test was created. One of [cli, self-managed, terraform]."
|
||||||
required: true
|
default: "cli"
|
||||||
gcpClusterDeleteServiceAccount:
|
gcpClusterDeleteServiceAccount:
|
||||||
description: "Service account with permissions to delete a Constellation cluster on GCP."
|
description: "Service account with permissions to delete a Constellation cluster on GCP."
|
||||||
required: true
|
required: true
|
||||||
|
@ -72,13 +72,13 @@ runs:
|
||||||
azure_credentials: ${{ inputs.azureClusterDeleteCredentials }}
|
azure_credentials: ${{ inputs.azureClusterDeleteCredentials }}
|
||||||
|
|
||||||
- name: Constellation terminate
|
- name: Constellation terminate
|
||||||
if: inputs.selfManagedInfra != 'true'
|
if: inputs.clusterCreation != 'self-managed'
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
constellation terminate --yes --tf-log=DEBUG
|
constellation terminate --yes --tf-log=DEBUG
|
||||||
|
|
||||||
- name: Constellation terminate (self-managed)
|
- name: Constellation terminate (self-managed)
|
||||||
if: inputs.selfManagedInfra == 'true'
|
if: inputs.clusterCreation == 'self-managed'
|
||||||
shell: bash
|
shell: bash
|
||||||
working-directory: ${{ github.workspace }}/e2e-infra
|
working-directory: ${{ github.workspace }}/e2e-infra
|
||||||
run: |
|
run: |
|
||||||
|
|
|
@ -29,9 +29,9 @@ inputs:
|
||||||
kubernetesVersion:
|
kubernetesVersion:
|
||||||
description: "Kubernetes version of the cluster"
|
description: "Kubernetes version of the cluster"
|
||||||
required: false
|
required: false
|
||||||
selfManagedInfra:
|
clusterCreation:
|
||||||
description: "Use self-managed infrastructure instead of infrastructure created by the Constellation CLI."
|
description: "How the infrastructure for the e2e test was created. One of [cli, self-managed, terraform]."
|
||||||
default: "false"
|
default: "cli"
|
||||||
|
|
||||||
runs:
|
runs:
|
||||||
using: "composite"
|
using: "composite"
|
||||||
|
@ -57,7 +57,7 @@ runs:
|
||||||
--fields github.e2e-test-provider="${{ inputs.provider }}" \
|
--fields github.e2e-test-provider="${{ inputs.provider }}" \
|
||||||
--fields github.ref-stream="${{ inputs.refStream }}" \
|
--fields github.ref-stream="${{ inputs.refStream }}" \
|
||||||
--fields github.kubernetes-version="${{ inputs.kubernetesVersion }}" \
|
--fields github.kubernetes-version="${{ inputs.kubernetesVersion }}" \
|
||||||
--fields github.self-managed-infra="${{ inputs.selfManagedInfra }}" \
|
--fields github.cluster-creation="${{ inputs.clusterCreation }}" \
|
||||||
--fields deployment-type="k8s"
|
--fields deployment-type="k8s"
|
||||||
|
|
||||||
# Make sure that helm is installed
|
# Make sure that helm is installed
|
||||||
|
|
32
.github/actions/e2e_test/action.yml
vendored
32
.github/actions/e2e_test/action.yml
vendored
|
@ -73,9 +73,9 @@ inputs:
|
||||||
description: "Enable security policy for the cluster."
|
description: "Enable security policy for the cluster."
|
||||||
internalLoadBalancer:
|
internalLoadBalancer:
|
||||||
description: "Enable internal load balancer for the cluster."
|
description: "Enable internal load balancer for the cluster."
|
||||||
selfManagedInfra:
|
clusterCreation:
|
||||||
description: "Use self-managed infrastructure instead of infrastructure created by the Constellation CLI."
|
description: "How to create infrastructure for the e2e test. One of [cli, self-managed, terraform]."
|
||||||
default: "false"
|
default: "cli"
|
||||||
s3AccessKey:
|
s3AccessKey:
|
||||||
description: "Access key for s3proxy"
|
description: "Access key for s3proxy"
|
||||||
s3SecretKey:
|
s3SecretKey:
|
||||||
|
@ -166,6 +166,28 @@ runs:
|
||||||
# Do not spam license server from pipeline
|
# Do not spam license server from pipeline
|
||||||
sudo sh -c 'echo "127.0.0.1 license.confidential.cloud" >> /etc/hosts'
|
sudo sh -c 'echo "127.0.0.1 license.confidential.cloud" >> /etc/hosts'
|
||||||
|
|
||||||
|
- name: Build Terraform provider binary
|
||||||
|
if: inputs.clusterCreation == 'terraform' && inputs.cliVersion == ''
|
||||||
|
uses: ./.github/actions/build_tf_provider
|
||||||
|
with:
|
||||||
|
targetOS: ${{ steps.determine-build-target.outputs.hostOS }}
|
||||||
|
targetArch: ${{ steps.determine-build-target.outputs.hostArch }}
|
||||||
|
outputPath: "build/terraform-provider-constellation"
|
||||||
|
|
||||||
|
- name: Move Terraform provider binary
|
||||||
|
if: inputs.clusterCreation == 'terraform' && inputs.cliVersion == ''
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
bazel build //bazel/settings:tag
|
||||||
|
|
||||||
|
repository_root=$(git rev-parse --show-toplevel)
|
||||||
|
out_rel=$(bazel cquery --output=files //bazel/settings:tag)
|
||||||
|
build_version=$(cat "$(realpath "${repository_root}/${out_rel}")")
|
||||||
|
|
||||||
|
terraform_provider_dir="${HOME}/.terraform.d/plugins/registry.terraform.io/edgelesssys/constellation/${build_version#v}/${{ steps.determine-build-target.outputs.hostOS }}_${{ steps.determine-build-target.outputs.hostArch }}/"
|
||||||
|
mkdir -p "${terraform_provider_dir}"
|
||||||
|
mv build/terraform-provider-constellation "${terraform_provider_dir}/terraform-provider-constellation_${build_version}"
|
||||||
|
|
||||||
- name: Build the bootstrapper
|
- name: Build the bootstrapper
|
||||||
id: build-bootstrapper
|
id: build-bootstrapper
|
||||||
if: inputs.isDebugImage == 'true'
|
if: inputs.isDebugImage == 'true'
|
||||||
|
@ -271,7 +293,7 @@ runs:
|
||||||
refStream: ${{ inputs.refStream }}
|
refStream: ${{ inputs.refStream }}
|
||||||
internalLoadBalancer: ${{ inputs.internalLoadBalancer }}
|
internalLoadBalancer: ${{ inputs.internalLoadBalancer }}
|
||||||
test: ${{ inputs.test }}
|
test: ${{ inputs.test }}
|
||||||
selfManagedInfra: ${{ inputs.selfManagedInfra }}
|
clusterCreation: ${{ inputs.clusterCreation }}
|
||||||
marketplaceImageVersion: ${{ inputs.marketplaceImageVersion }}
|
marketplaceImageVersion: ${{ inputs.marketplaceImageVersion }}
|
||||||
force: ${{ inputs.force }}
|
force: ${{ inputs.force }}
|
||||||
|
|
||||||
|
@ -288,7 +310,7 @@ runs:
|
||||||
isDebugImage: ${{ inputs.isDebugImage }}
|
isDebugImage: ${{ inputs.isDebugImage }}
|
||||||
kubernetesVersion: ${{ inputs.kubernetesVersion }}
|
kubernetesVersion: ${{ inputs.kubernetesVersion }}
|
||||||
refStream: ${{ inputs.refStream }}
|
refStream: ${{ inputs.refStream }}
|
||||||
selfManagedInfra: ${{ inputs.selfManagedInfra }}
|
clusterCreation: ${{ inputs.clusterCreation }}
|
||||||
|
|
||||||
#
|
#
|
||||||
# Test payloads
|
# Test payloads
|
||||||
|
|
|
@ -17,8 +17,8 @@ inputs:
|
||||||
kubernetesVersion:
|
kubernetesVersion:
|
||||||
description: "Kubernetes version"
|
description: "Kubernetes version"
|
||||||
required: false
|
required: false
|
||||||
selfManagedInfra:
|
clusterCreation:
|
||||||
description: "Use self-managed infrastructure instead of infrastructure created by the Constellation CLI."
|
description: "How the infrastructure for the e2e test was created. One of [cli, self-managed, terraform]."
|
||||||
default: "false"
|
default: "false"
|
||||||
|
|
||||||
runs:
|
runs:
|
||||||
|
@ -66,6 +66,7 @@ runs:
|
||||||
workflow: ${{ github.workflow }}
|
workflow: ${{ github.workflow }}
|
||||||
kubernetesVersion: ${{ inputs.kubernetesVersion }}
|
kubernetesVersion: ${{ inputs.kubernetesVersion }}
|
||||||
cloudProvider: ${{ inputs.provider }}
|
cloudProvider: ${{ inputs.provider }}
|
||||||
|
clusterCreation: ${{ inputs.clusterCreation }}
|
||||||
test: ${{ inputs.test }}
|
test: ${{ inputs.test }}
|
||||||
refStream: ${{ inputs.refStream }}
|
refStream: ${{ inputs.refStream }}
|
||||||
token: ${{ inputs.projectWriteToken }}
|
token: ${{ inputs.projectWriteToken }}
|
||||||
|
|
157
.github/actions/terraform_apply/action.yml
vendored
Normal file
157
.github/actions/terraform_apply/action.yml
vendored
Normal file
|
@ -0,0 +1,157 @@
|
||||||
|
name: Terraform provider apply
|
||||||
|
description: "Create/Apply a Constellation cluster using the Terraform provider."
|
||||||
|
|
||||||
|
inputs:
|
||||||
|
cloudProvider:
|
||||||
|
description: "The cloud provider the test runs on."
|
||||||
|
required: true
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: "composite"
|
||||||
|
steps:
|
||||||
|
- name: Create Terraform file
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
attestationVariant=""
|
||||||
|
case "$(yq '.attestation | keys | .[0]' constellation-conf.yaml)" in
|
||||||
|
"awsSEVSNP")
|
||||||
|
attestationVariant="aws-sev-snp"
|
||||||
|
;;
|
||||||
|
"azureSEVSNP")
|
||||||
|
attestationVariant="azure-sev-snp"
|
||||||
|
;;
|
||||||
|
"gcpSEVES")
|
||||||
|
attestationVariant="gcp-sev-es"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown attestation variant: $(yq '.attestation | keys | .[0]' constellation-conf.yaml)"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
cat << EOF > main.tf
|
||||||
|
terraform {
|
||||||
|
required_providers {
|
||||||
|
constellation = {
|
||||||
|
source = "edgelesssys/constellation"
|
||||||
|
version = "$(yq '.microserviceVersion' constellation-conf.yaml | sed 's/^v//')"
|
||||||
|
}
|
||||||
|
random = {
|
||||||
|
source = "hashicorp/random"
|
||||||
|
version = "3.6.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "random_bytes" "master_secret" {
|
||||||
|
length = 32
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "random_bytes" "master_secret_salt" {
|
||||||
|
length = 32
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "random_bytes" "measurement_salt" {
|
||||||
|
length = 32
|
||||||
|
}
|
||||||
|
|
||||||
|
data "constellation_attestation" "con_attestation" {
|
||||||
|
csp = "${{ inputs.cloudProvider }}"
|
||||||
|
attestation_variant = "${attestationVariant}"
|
||||||
|
image_version = "$(yq '.image' constellation-conf.yaml)"
|
||||||
|
maa_url = "$(yq '.infrastructure.azure.attestationURL' constellation-state.yaml)"
|
||||||
|
insecure = true
|
||||||
|
}
|
||||||
|
|
||||||
|
data "constellation_image" "con_image" {
|
||||||
|
image_version = "$(yq '.image' constellation-conf.yaml)"
|
||||||
|
attestation_variant = "${attestationVariant}"
|
||||||
|
csp = "${{ inputs.cloudProvider }}"
|
||||||
|
region = "$(yq '.provider.aws.region' constellation-conf.yaml)"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "constellation_cluster" "cluster" {
|
||||||
|
csp = "${{ inputs.cloudProvider }}"
|
||||||
|
constellation_microservice_version = "$(yq '.microserviceVersion' constellation-conf.yaml)"
|
||||||
|
name = "$(yq '.name' constellation-conf.yaml)"
|
||||||
|
uid = "$(yq '.infrastructure.uid' constellation-state.yaml)"
|
||||||
|
image_reference = data.constellation_image.con_image.reference
|
||||||
|
image_version = "$(yq '.microserviceVersion' constellation-conf.yaml)"
|
||||||
|
attestation = data.constellation_attestation.con_attestation.attestation
|
||||||
|
init_secret = "$(yq '.infrastructure.initSecret' constellation-state.yaml | xxd -r -p)"
|
||||||
|
master_secret = random_bytes.master_secret.hex
|
||||||
|
master_secret_salt = random_bytes.master_secret_salt.hex
|
||||||
|
measurement_salt = random_bytes.measurement_salt.hex
|
||||||
|
out_of_cluster_endpoint = "$(yq '.infrastructure.clusterEndpoint' constellation-state.yaml)"
|
||||||
|
in_cluster_endpoint = "$(yq '.infrastructure.inClusterEndpoint' constellation-state.yaml)"
|
||||||
|
azure = {
|
||||||
|
count = "$(yq '.provider | keys | .[0]' constellation-conf.yaml)" == "azure" ? 1 : 0
|
||||||
|
tenant_id = "$(yq '.provider.azure.tenant' constellation-conf.yaml)"
|
||||||
|
subscription_id = "$(yq '.infrastructure.azure.subscriptionID' constellation-state.yaml)"
|
||||||
|
uami_client_id = "$(yq '.infrastructure.azure.userAssignedIdentity' constellation-state.yaml)"
|
||||||
|
uami_resource_id = "$(yq '.provider.azure.userAssignedIdentity' constellation-conf.yaml)"
|
||||||
|
location = "$(yq '.provider.azure.location' constellation-conf.yaml)"
|
||||||
|
resource_group = "$(yq '.infrastructure.azure.resourceGroup' constellation-state.yaml)"
|
||||||
|
load_balancer_name = "$(yq '.infrastructure.azure.loadBalancerName' constellation-state.yaml)"
|
||||||
|
network_security_group_name = "$(yq '.infrastructure.azure.networkSecurityGroupName' constellation-state.yaml)"
|
||||||
|
}
|
||||||
|
gcp = {
|
||||||
|
count = "$(yq '.provider | keys | .[0]' constellation-conf.yaml)" == "gcp" ? 1 : 0
|
||||||
|
project_id = "$(yq '.infrastructure.gcp.projectID' constellation-state.yaml)"
|
||||||
|
service_account_key = sensitive("$(cat $(yq '.provider.gcp.serviceAccountKeyPath' constellation-conf.yaml) | base64 -w0)")
|
||||||
|
}
|
||||||
|
network_config = {
|
||||||
|
ip_cidr_node = "$(yq '.infrastructure.ipCidrNode' constellation-state.yaml)"
|
||||||
|
ip_cidr_service = "$(yq '.serviceCIDR' constellation-conf.yaml)"
|
||||||
|
ip_cidr_pod = "$(yq '.infrastructure.gcp.ipCidrPod' constellation-state.yaml)" # This is null for everything but GCP
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
output "master_secret" {
|
||||||
|
value = random_bytes.master_secret.base64
|
||||||
|
sensitive = true
|
||||||
|
}
|
||||||
|
|
||||||
|
output "master_secret_salt" {
|
||||||
|
value = random_bytes.master_secret_salt.base64
|
||||||
|
sensitive = true
|
||||||
|
}
|
||||||
|
|
||||||
|
output "measurement_salt" {
|
||||||
|
value = random_bytes.measurement_salt.hex
|
||||||
|
sensitive = true
|
||||||
|
}
|
||||||
|
|
||||||
|
output "cluster_id" {
|
||||||
|
value = constellation_cluster.cluster.cluster_id
|
||||||
|
}
|
||||||
|
|
||||||
|
output "owner_id" {
|
||||||
|
value = constellation_cluster.cluster.owner_id
|
||||||
|
}
|
||||||
|
|
||||||
|
output "kubeconfig" {
|
||||||
|
value = constellation_cluster.cluster.kubeconfig
|
||||||
|
sensitive = true
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
- name: Apply Terraform configuration
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
terraform init
|
||||||
|
terraform apply -auto-approve
|
||||||
|
|
||||||
|
- name: Write output
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
terraform output -raw kubeconfig > "$(pwd)/constellation-admin.conf"
|
||||||
|
yq -i ".clusterValues.measurementSalt = $(terraform output measurement_salt)" constellation-state.yaml
|
||||||
|
yq -i ".clusterValues.clusterID = $(terraform output cluster_id)" constellation-state.yaml
|
||||||
|
yq -i ".clusterValues.ownerID = $(terraform output owner_id)" constellation-state.yaml
|
||||||
|
cat << EOF > constellation-mastersecret.json
|
||||||
|
{
|
||||||
|
"key": "$(terraform output -raw master_secret)",
|
||||||
|
"salt": "$(terraform output -raw master_secret_salt)"
|
||||||
|
}
|
||||||
|
EOF
|
6
.github/workflows/e2e-test-daily.yml
vendored
6
.github/workflows/e2e-test-daily.yml
vendored
|
@ -90,14 +90,14 @@ jobs:
|
||||||
awsOpenSearchDomain: ${{ secrets.AWS_OPENSEARCH_DOMAIN }}
|
awsOpenSearchDomain: ${{ secrets.AWS_OPENSEARCH_DOMAIN }}
|
||||||
awsOpenSearchUsers: ${{ secrets.AWS_OPENSEARCH_USER }}
|
awsOpenSearchUsers: ${{ secrets.AWS_OPENSEARCH_USER }}
|
||||||
awsOpenSearchPwd: ${{ secrets.AWS_OPENSEARCH_PWD }}
|
awsOpenSearchPwd: ${{ secrets.AWS_OPENSEARCH_PWD }}
|
||||||
selfManagedInfra: "false"
|
clusterCreation: "cli"
|
||||||
|
|
||||||
- name: Always terminate cluster
|
- name: Always terminate cluster
|
||||||
if: always()
|
if: always()
|
||||||
uses: ./.github/actions/constellation_destroy
|
uses: ./.github/actions/constellation_destroy
|
||||||
with:
|
with:
|
||||||
kubeconfig: ${{ steps.e2e_test.outputs.kubeconfig }}
|
kubeconfig: ${{ steps.e2e_test.outputs.kubeconfig }}
|
||||||
selfManagedInfra: "false"
|
clusterCreation: "cli"
|
||||||
cloudProvider: ${{ matrix.provider }}
|
cloudProvider: ${{ matrix.provider }}
|
||||||
azureClusterDeleteCredentials: ${{ secrets.AZURE_E2E_CLUSTER_CREDENTIALS }}
|
azureClusterDeleteCredentials: ${{ secrets.AZURE_E2E_CLUSTER_CREDENTIALS }}
|
||||||
gcpClusterDeleteServiceAccount: "infrastructure-e2e@constellation-e2e.iam.gserviceaccount.com"
|
gcpClusterDeleteServiceAccount: "infrastructure-e2e@constellation-e2e.iam.gserviceaccount.com"
|
||||||
|
@ -123,7 +123,7 @@ jobs:
|
||||||
test: ${{ matrix.test }}
|
test: ${{ matrix.test }}
|
||||||
kubernetesVersion: ${{ matrix.kubernetesVersion }}
|
kubernetesVersion: ${{ matrix.kubernetesVersion }}
|
||||||
provider: ${{ matrix.provider }}
|
provider: ${{ matrix.provider }}
|
||||||
selfManagedInfra: "false"
|
clusterCreation: "cli"
|
||||||
|
|
||||||
e2e-mini:
|
e2e-mini:
|
||||||
name: Run miniconstellation E2E test
|
name: Run miniconstellation E2E test
|
||||||
|
|
35
.github/workflows/e2e-test-release.yml
vendored
35
.github/workflows/e2e-test-release.yml
vendored
|
@ -49,107 +49,130 @@ jobs:
|
||||||
provider: "gcp"
|
provider: "gcp"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
runner: "ubuntu-22.04"
|
runner: "ubuntu-22.04"
|
||||||
|
clusterCreation: "cli"
|
||||||
- test: "sonobuoy full"
|
- test: "sonobuoy full"
|
||||||
provider: "azure"
|
provider: "azure"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
runner: "ubuntu-22.04"
|
runner: "ubuntu-22.04"
|
||||||
|
clusterCreation: "cli"
|
||||||
- test: "sonobuoy full"
|
- test: "sonobuoy full"
|
||||||
provider: "aws"
|
provider: "aws"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
runner: "ubuntu-22.04"
|
runner: "ubuntu-22.04"
|
||||||
|
clusterCreation: "cli"
|
||||||
|
|
||||||
|
|
||||||
- test: "sonobuoy full"
|
- test: "sonobuoy full"
|
||||||
provider: "gcp"
|
provider: "gcp"
|
||||||
kubernetes-version: "v1.27"
|
kubernetes-version: "v1.27"
|
||||||
runner: "ubuntu-22.04"
|
runner: "ubuntu-22.04"
|
||||||
|
clusterCreation: "cli"
|
||||||
- test: "sonobuoy full"
|
- test: "sonobuoy full"
|
||||||
provider: "azure"
|
provider: "azure"
|
||||||
kubernetes-version: "v1.27"
|
kubernetes-version: "v1.27"
|
||||||
runner: "ubuntu-22.04"
|
runner: "ubuntu-22.04"
|
||||||
|
clusterCreation: "cli"
|
||||||
- test: "sonobuoy full"
|
- test: "sonobuoy full"
|
||||||
provider: "aws"
|
provider: "aws"
|
||||||
kubernetes-version: "v1.27"
|
kubernetes-version: "v1.27"
|
||||||
runner: "ubuntu-22.04"
|
runner: "ubuntu-22.04"
|
||||||
|
clusterCreation: "cli"
|
||||||
|
|
||||||
- test: "sonobuoy full"
|
- test: "sonobuoy full"
|
||||||
provider: "gcp"
|
provider: "gcp"
|
||||||
kubernetes-version: "v1.26"
|
kubernetes-version: "v1.26"
|
||||||
runner: "ubuntu-22.04"
|
runner: "ubuntu-22.04"
|
||||||
|
clusterCreation: "cli"
|
||||||
- test: "sonobuoy full"
|
- test: "sonobuoy full"
|
||||||
provider: "azure"
|
provider: "azure"
|
||||||
kubernetes-version: "v1.26"
|
kubernetes-version: "v1.26"
|
||||||
runner: "ubuntu-22.04"
|
runner: "ubuntu-22.04"
|
||||||
|
clusterCreation: "cli"
|
||||||
- test: "sonobuoy full"
|
- test: "sonobuoy full"
|
||||||
provider: "aws"
|
provider: "aws"
|
||||||
kubernetes-version: "v1.26"
|
kubernetes-version: "v1.26"
|
||||||
runner: "ubuntu-22.04"
|
runner: "ubuntu-22.04"
|
||||||
|
clusterCreation: "cli"
|
||||||
|
|
||||||
# verify test on latest k8s version
|
# verify test on latest k8s version
|
||||||
- test: "verify"
|
- test: "verify"
|
||||||
provider: "gcp"
|
provider: "gcp"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
runner: "ubuntu-22.04"
|
runner: "ubuntu-22.04"
|
||||||
|
clusterCreation: "cli"
|
||||||
- test: "verify"
|
- test: "verify"
|
||||||
provider: "azure"
|
provider: "azure"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
runner: "ubuntu-22.04"
|
runner: "ubuntu-22.04"
|
||||||
|
clusterCreation: "cli"
|
||||||
- test: "verify"
|
- test: "verify"
|
||||||
provider: "aws"
|
provider: "aws"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
runner: "ubuntu-22.04"
|
runner: "ubuntu-22.04"
|
||||||
|
clusterCreation: "cli"
|
||||||
|
|
||||||
# recover test on latest k8s version
|
# recover test on latest k8s version
|
||||||
- test: "recover"
|
- test: "recover"
|
||||||
provider: "gcp"
|
provider: "gcp"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
runner: "ubuntu-22.04"
|
runner: "ubuntu-22.04"
|
||||||
|
clusterCreation: "cli"
|
||||||
- test: "recover"
|
- test: "recover"
|
||||||
provider: "azure"
|
provider: "azure"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
runner: "ubuntu-22.04"
|
runner: "ubuntu-22.04"
|
||||||
|
clusterCreation: "cli"
|
||||||
- test: "recover"
|
- test: "recover"
|
||||||
provider: "aws"
|
provider: "aws"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
runner: "ubuntu-22.04"
|
runner: "ubuntu-22.04"
|
||||||
|
clusterCreation: "cli"
|
||||||
|
|
||||||
# lb test on latest k8s version
|
# lb test on latest k8s version
|
||||||
- test: "lb"
|
- test: "lb"
|
||||||
provider: "gcp"
|
provider: "gcp"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
runner: "ubuntu-22.04"
|
runner: "ubuntu-22.04"
|
||||||
|
clusterCreation: "cli"
|
||||||
- test: "lb"
|
- test: "lb"
|
||||||
provider: "azure"
|
provider: "azure"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
runner: "ubuntu-22.04"
|
runner: "ubuntu-22.04"
|
||||||
|
clusterCreation: "cli"
|
||||||
- test: "lb"
|
- test: "lb"
|
||||||
provider: "aws"
|
provider: "aws"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
runner: "ubuntu-22.04"
|
runner: "ubuntu-22.04"
|
||||||
|
clusterCreation: "cli"
|
||||||
|
|
||||||
# autoscaling test on latest k8s version
|
# autoscaling test on latest k8s version
|
||||||
- test: "autoscaling"
|
- test: "autoscaling"
|
||||||
provider: "gcp"
|
provider: "gcp"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
runner: "ubuntu-22.04"
|
runner: "ubuntu-22.04"
|
||||||
|
clusterCreation: "cli"
|
||||||
- test: "autoscaling"
|
- test: "autoscaling"
|
||||||
provider: "azure"
|
provider: "azure"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
runner: "ubuntu-22.04"
|
runner: "ubuntu-22.04"
|
||||||
|
clusterCreation: "cli"
|
||||||
- test: "autoscaling"
|
- test: "autoscaling"
|
||||||
provider: "aws"
|
provider: "aws"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
runner: "ubuntu-22.04"
|
runner: "ubuntu-22.04"
|
||||||
|
clusterCreation: "cli"
|
||||||
|
|
||||||
# perf-bench test on latest k8s version, not supported on AWS
|
# perf-bench test on latest k8s version, not supported on AWS
|
||||||
- test: "perf-bench"
|
- test: "perf-bench"
|
||||||
provider: "gcp"
|
provider: "gcp"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
runner: "ubuntu-22.04"
|
runner: "ubuntu-22.04"
|
||||||
|
clusterCreation: "cli"
|
||||||
- test: "perf-bench"
|
- test: "perf-bench"
|
||||||
provider: "azure"
|
provider: "azure"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
runner: "ubuntu-22.04"
|
runner: "ubuntu-22.04"
|
||||||
|
clusterCreation: "cli"
|
||||||
|
|
||||||
# self-managed infra test on latest k8s version
|
# self-managed infra test on latest k8s version
|
||||||
# runs Sonobuoy full test
|
# runs Sonobuoy full test
|
||||||
|
@ -157,17 +180,17 @@ jobs:
|
||||||
provider: "gcp"
|
provider: "gcp"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
runner: "ubuntu-22.04"
|
runner: "ubuntu-22.04"
|
||||||
selfManagedInfra: "true"
|
clusterCreation: "self-managed"
|
||||||
- test: "sonobuoy full"
|
- test: "sonobuoy full"
|
||||||
provider: "azure"
|
provider: "azure"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
runner: "ubuntu-22.04"
|
runner: "ubuntu-22.04"
|
||||||
selfManagedInfra: "true"
|
clusterCreation: "self-managed"
|
||||||
- test: "sonobuoy full"
|
- test: "sonobuoy full"
|
||||||
provider: "aws"
|
provider: "aws"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
runner: "ubuntu-22.04"
|
runner: "ubuntu-22.04"
|
||||||
selfManagedInfra: "true"
|
clusterCreation: "self-managed"
|
||||||
|
|
||||||
# s3proxy test on latest k8s version
|
# s3proxy test on latest k8s version
|
||||||
- test: "s3proxy"
|
- test: "s3proxy"
|
||||||
|
@ -175,6 +198,7 @@ jobs:
|
||||||
provider: "gcp"
|
provider: "gcp"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
runner: "ubuntu-22.04"
|
runner: "ubuntu-22.04"
|
||||||
|
clusterCreation: "cli"
|
||||||
|
|
||||||
#
|
#
|
||||||
# Tests on macOS runner
|
# Tests on macOS runner
|
||||||
|
@ -189,6 +213,7 @@ jobs:
|
||||||
provider: "gcp"
|
provider: "gcp"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
runner: "macos-12"
|
runner: "macos-12"
|
||||||
|
clusterCreation: "cli"
|
||||||
runs-on: ${{ matrix.runner }}
|
runs-on: ${{ matrix.runner }}
|
||||||
permissions:
|
permissions:
|
||||||
id-token: write
|
id-token: write
|
||||||
|
@ -237,7 +262,7 @@ jobs:
|
||||||
cosignPassword: ${{ secrets.COSIGN_PASSWORD }}
|
cosignPassword: ${{ secrets.COSIGN_PASSWORD }}
|
||||||
cosignPrivateKey: ${{ secrets.COSIGN_PRIVATE_KEY }}
|
cosignPrivateKey: ${{ secrets.COSIGN_PRIVATE_KEY }}
|
||||||
githubToken: ${{ secrets.GITHUB_TOKEN }}
|
githubToken: ${{ secrets.GITHUB_TOKEN }}
|
||||||
selfManagedInfra: ${{ matrix.selfManagedInfra == 'true' }}
|
clusterCreation: ${{ matrix.clusterCreation }}
|
||||||
s3AccessKey: ${{ secrets.AWS_ACCESS_KEY_ID_S3PROXY }}
|
s3AccessKey: ${{ secrets.AWS_ACCESS_KEY_ID_S3PROXY }}
|
||||||
s3SecretKey: ${{ secrets.AWS_SECRET_ACCESS_KEY_S3PROXY }}
|
s3SecretKey: ${{ secrets.AWS_SECRET_ACCESS_KEY_S3PROXY }}
|
||||||
|
|
||||||
|
@ -246,7 +271,7 @@ jobs:
|
||||||
uses: ./.github/actions/constellation_destroy
|
uses: ./.github/actions/constellation_destroy
|
||||||
with:
|
with:
|
||||||
kubeconfig: ${{ steps.e2e_test.outputs.kubeconfig }}
|
kubeconfig: ${{ steps.e2e_test.outputs.kubeconfig }}
|
||||||
selfManagedInfra: ${{ matrix.selfManagedInfra == 'true' }}
|
clusterCreation: ${{ matrix.clusterCreation }}
|
||||||
cloudProvider: ${{ matrix.provider }}
|
cloudProvider: ${{ matrix.provider }}
|
||||||
azureClusterDeleteCredentials: ${{ secrets.AZURE_E2E_CLUSTER_CREDENTIALS }}
|
azureClusterDeleteCredentials: ${{ secrets.AZURE_E2E_CLUSTER_CREDENTIALS }}
|
||||||
gcpClusterDeleteServiceAccount: "infrastructure-e2e@constellation-e2e.iam.gserviceaccount.com"
|
gcpClusterDeleteServiceAccount: "infrastructure-e2e@constellation-e2e.iam.gserviceaccount.com"
|
||||||
|
|
2
.github/workflows/e2e-test-self-managed.yml
vendored
2
.github/workflows/e2e-test-self-managed.yml
vendored
|
@ -85,4 +85,4 @@ jobs:
|
||||||
machineType: ${{ inputs.machineType }}
|
machineType: ${{ inputs.machineType }}
|
||||||
regionZone: ${{ inputs.regionZone }}
|
regionZone: ${{ inputs.regionZone }}
|
||||||
git-ref: ${{ inputs.git-ref }}
|
git-ref: ${{ inputs.git-ref }}
|
||||||
selfManagedInfra: true
|
clusterCreation: "self-managed"
|
||||||
|
|
88
.github/workflows/e2e-test-terraform-provider.yml
vendored
Normal file
88
.github/workflows/e2e-test-terraform-provider.yml
vendored
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
name: e2e test Terraform provider
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
nodeCount:
|
||||||
|
description: "Number of nodes to use in the cluster. Given in format `<control-plane nodes>:<worker nodes>`."
|
||||||
|
default: "3:2"
|
||||||
|
type: string
|
||||||
|
cloudProvider:
|
||||||
|
description: "Which cloud provider to use."
|
||||||
|
type: choice
|
||||||
|
options:
|
||||||
|
- "gcp"
|
||||||
|
- "azure"
|
||||||
|
- "aws"
|
||||||
|
default: "azure"
|
||||||
|
required: true
|
||||||
|
runner:
|
||||||
|
description: "Architecture of the runner that executes the CLI"
|
||||||
|
type: choice
|
||||||
|
options:
|
||||||
|
- "ubuntu-22.04"
|
||||||
|
- "macos-12"
|
||||||
|
default: "ubuntu-22.04"
|
||||||
|
test:
|
||||||
|
description: "The test to run."
|
||||||
|
type: choice
|
||||||
|
options:
|
||||||
|
- "sonobuoy quick"
|
||||||
|
- "sonobuoy full"
|
||||||
|
- "autoscaling"
|
||||||
|
- "lb"
|
||||||
|
- "perf-bench"
|
||||||
|
- "verify"
|
||||||
|
- "recover"
|
||||||
|
- "malicious join"
|
||||||
|
- "nop"
|
||||||
|
required: true
|
||||||
|
kubernetesVersion:
|
||||||
|
description: "Kubernetes version to create the cluster from."
|
||||||
|
default: "1.27"
|
||||||
|
required: true
|
||||||
|
releaseVersion:
|
||||||
|
description: "Version of a released provider to download. Leave empty to build the provider from the checked out ref."
|
||||||
|
type: string
|
||||||
|
default: ""
|
||||||
|
required: false
|
||||||
|
imageVersion:
|
||||||
|
description: "Full name of OS image (CSP independent image version UID). Leave empty for latest debug image on main."
|
||||||
|
type: string
|
||||||
|
default: ""
|
||||||
|
required: false
|
||||||
|
machineType:
|
||||||
|
description: "Override VM machine type. Leave as 'default' or empty to use the default VM type for the selected cloud provider."
|
||||||
|
type: string
|
||||||
|
default: "default"
|
||||||
|
required: false
|
||||||
|
regionZone:
|
||||||
|
description: "Region or zone to create the cluster in. Leave empty for default region/zone."
|
||||||
|
type: string
|
||||||
|
git-ref:
|
||||||
|
description: "Git ref to checkout."
|
||||||
|
type: string
|
||||||
|
default: "head"
|
||||||
|
required: false
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
e2e-test:
|
||||||
|
permissions:
|
||||||
|
id-token: write
|
||||||
|
checks: write
|
||||||
|
contents: read
|
||||||
|
packages: write
|
||||||
|
secrets: inherit
|
||||||
|
uses: ./.github/workflows/e2e-test.yml
|
||||||
|
with:
|
||||||
|
nodeCount: ${{ inputs.nodeCount }}
|
||||||
|
cloudProvider: ${{ inputs.cloudProvider }}
|
||||||
|
runner: ${{ inputs.runner }}
|
||||||
|
test: ${{ inputs.test }}
|
||||||
|
kubernetesVersion: ${{ inputs.kubernetesVersion }}
|
||||||
|
cliVersion: ${{ inputs.releaseVersion }}
|
||||||
|
imageVersion: ${{ inputs.imageVersion }}
|
||||||
|
machineType: ${{ inputs.machineType }}
|
||||||
|
regionZone: ${{ inputs.regionZone }}
|
||||||
|
git-ref: ${{ inputs.git-ref }}
|
||||||
|
clusterCreation: "terraform"
|
58
.github/workflows/e2e-test-weekly.yml
vendored
58
.github/workflows/e2e-test-weekly.yml
vendored
|
@ -56,121 +56,147 @@ jobs:
|
||||||
refStream: "ref/main/stream/debug/?"
|
refStream: "ref/main/stream/debug/?"
|
||||||
provider: "gcp"
|
provider: "gcp"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
|
clusterCreation: "cli"
|
||||||
- test: "sonobuoy full"
|
- test: "sonobuoy full"
|
||||||
refStream: "ref/main/stream/debug/?"
|
refStream: "ref/main/stream/debug/?"
|
||||||
provider: "azure"
|
provider: "azure"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
|
clusterCreation: "cli"
|
||||||
- test: "sonobuoy full"
|
- test: "sonobuoy full"
|
||||||
refStream: "ref/main/stream/debug/?"
|
refStream: "ref/main/stream/debug/?"
|
||||||
provider: "aws"
|
provider: "aws"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
|
clusterCreation: "cli"
|
||||||
|
|
||||||
- test: "sonobuoy full"
|
- test: "sonobuoy full"
|
||||||
refStream: "ref/main/stream/debug/?"
|
refStream: "ref/main/stream/debug/?"
|
||||||
provider: "gcp"
|
provider: "gcp"
|
||||||
kubernetes-version: "v1.27"
|
kubernetes-version: "v1.27"
|
||||||
|
clusterCreation: "cli"
|
||||||
- test: "sonobuoy full"
|
- test: "sonobuoy full"
|
||||||
refStream: "ref/main/stream/debug/?"
|
refStream: "ref/main/stream/debug/?"
|
||||||
provider: "azure"
|
provider: "azure"
|
||||||
kubernetes-version: "v1.27"
|
kubernetes-version: "v1.27"
|
||||||
|
clusterCreation: "cli"
|
||||||
- test: "sonobuoy full"
|
- test: "sonobuoy full"
|
||||||
refStream: "ref/main/stream/debug/?"
|
refStream: "ref/main/stream/debug/?"
|
||||||
provider: "aws"
|
provider: "aws"
|
||||||
kubernetes-version: "v1.27"
|
kubernetes-version: "v1.27"
|
||||||
|
clusterCreation: "cli"
|
||||||
|
|
||||||
- test: "sonobuoy full"
|
- test: "sonobuoy full"
|
||||||
refStream: "ref/main/stream/debug/?"
|
refStream: "ref/main/stream/debug/?"
|
||||||
provider: "gcp"
|
provider: "gcp"
|
||||||
kubernetes-version: "v1.26"
|
kubernetes-version: "v1.26"
|
||||||
|
clusterCreation: "cli"
|
||||||
- test: "sonobuoy full"
|
- test: "sonobuoy full"
|
||||||
refStream: "ref/main/stream/debug/?"
|
refStream: "ref/main/stream/debug/?"
|
||||||
provider: "azure"
|
provider: "azure"
|
||||||
kubernetes-version: "v1.26"
|
kubernetes-version: "v1.26"
|
||||||
|
clusterCreation: "cli"
|
||||||
- test: "sonobuoy full"
|
- test: "sonobuoy full"
|
||||||
refStream: "ref/main/stream/debug/?"
|
refStream: "ref/main/stream/debug/?"
|
||||||
provider: "aws"
|
provider: "aws"
|
||||||
kubernetes-version: "v1.26"
|
kubernetes-version: "v1.26"
|
||||||
|
clusterCreation: "cli"
|
||||||
|
|
||||||
# verify test on latest k8s version
|
# verify test on latest k8s version
|
||||||
- test: "verify"
|
- test: "verify"
|
||||||
refStream: "ref/main/stream/debug/?"
|
refStream: "ref/main/stream/debug/?"
|
||||||
provider: "gcp"
|
provider: "gcp"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
|
clusterCreation: "cli"
|
||||||
- test: "verify"
|
- test: "verify"
|
||||||
refStream: "ref/main/stream/debug/?"
|
refStream: "ref/main/stream/debug/?"
|
||||||
provider: "azure"
|
provider: "azure"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
azureSNPEnforcementPolicy: "equal" # This run checks for unknown ID Key disgests.
|
azureSNPEnforcementPolicy: "equal" # This run checks for unknown ID Key disgests.
|
||||||
|
clusterCreation: "cli"
|
||||||
- test: "verify"
|
- test: "verify"
|
||||||
provider: "aws"
|
provider: "aws"
|
||||||
refStream: "ref/main/stream/debug/?"
|
refStream: "ref/main/stream/debug/?"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
|
clusterCreation: "cli"
|
||||||
|
|
||||||
# recover test on latest k8s version
|
# recover test on latest k8s version
|
||||||
- test: "recover"
|
- test: "recover"
|
||||||
refStream: "ref/main/stream/debug/?"
|
refStream: "ref/main/stream/debug/?"
|
||||||
provider: "gcp"
|
provider: "gcp"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
|
clusterCreation: "cli"
|
||||||
- test: "recover"
|
- test: "recover"
|
||||||
refStream: "ref/main/stream/debug/?"
|
refStream: "ref/main/stream/debug/?"
|
||||||
provider: "azure"
|
provider: "azure"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
|
clusterCreation: "cli"
|
||||||
- test: "recover"
|
- test: "recover"
|
||||||
refStream: "ref/main/stream/debug/?"
|
refStream: "ref/main/stream/debug/?"
|
||||||
provider: "aws"
|
provider: "aws"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
|
clusterCreation: "cli"
|
||||||
|
|
||||||
# lb test on latest k8s version
|
# lb test on latest k8s version
|
||||||
- test: "lb"
|
- test: "lb"
|
||||||
refStream: "ref/main/stream/debug/?"
|
refStream: "ref/main/stream/debug/?"
|
||||||
provider: "gcp"
|
provider: "gcp"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
|
clusterCreation: "cli"
|
||||||
- test: "lb"
|
- test: "lb"
|
||||||
refStream: "ref/main/stream/debug/?"
|
refStream: "ref/main/stream/debug/?"
|
||||||
provider: "azure"
|
provider: "azure"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
|
clusterCreation: "cli"
|
||||||
- test: "lb"
|
- test: "lb"
|
||||||
refStream: "ref/main/stream/debug/?"
|
refStream: "ref/main/stream/debug/?"
|
||||||
provider: "aws"
|
provider: "aws"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
|
clusterCreation: "cli"
|
||||||
|
|
||||||
# autoscaling test on latest k8s version
|
# autoscaling test on latest k8s version
|
||||||
- test: "autoscaling"
|
- test: "autoscaling"
|
||||||
refStream: "ref/main/stream/debug/?"
|
refStream: "ref/main/stream/debug/?"
|
||||||
provider: "gcp"
|
provider: "gcp"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
|
clusterCreation: "cli"
|
||||||
- test: "autoscaling"
|
- test: "autoscaling"
|
||||||
refStream: "ref/main/stream/debug/?"
|
refStream: "ref/main/stream/debug/?"
|
||||||
provider: "azure"
|
provider: "azure"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
|
clusterCreation: "cli"
|
||||||
- test: "autoscaling"
|
- test: "autoscaling"
|
||||||
refStream: "ref/main/stream/debug/?"
|
refStream: "ref/main/stream/debug/?"
|
||||||
provider: "aws"
|
provider: "aws"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
|
clusterCreation: "cli"
|
||||||
|
|
||||||
# perf-bench test on latest k8s version, not supported on AWS
|
# perf-bench test on latest k8s version, not supported on AWS
|
||||||
- test: "perf-bench"
|
- test: "perf-bench"
|
||||||
refStream: "ref/main/stream/debug/?"
|
refStream: "ref/main/stream/debug/?"
|
||||||
provider: "gcp"
|
provider: "gcp"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
|
clusterCreation: "cli"
|
||||||
- test: "perf-bench"
|
- test: "perf-bench"
|
||||||
refStream: "ref/main/stream/debug/?"
|
refStream: "ref/main/stream/debug/?"
|
||||||
provider: "azure"
|
provider: "azure"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
|
clusterCreation: "cli"
|
||||||
|
|
||||||
# malicious join test on latest k8s version
|
# malicious join test on latest k8s version
|
||||||
- test: "malicious join"
|
- test: "malicious join"
|
||||||
refStream: "ref/main/stream/debug/?"
|
refStream: "ref/main/stream/debug/?"
|
||||||
provider: "gcp"
|
provider: "gcp"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
|
clusterCreation: "cli"
|
||||||
- test: "malicious join"
|
- test: "malicious join"
|
||||||
refStream: "ref/main/stream/debug/?"
|
refStream: "ref/main/stream/debug/?"
|
||||||
provider: "azure"
|
provider: "azure"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
|
clusterCreation: "cli"
|
||||||
- test: "malicious join"
|
- test: "malicious join"
|
||||||
refStream: "ref/main/stream/debug/?"
|
refStream: "ref/main/stream/debug/?"
|
||||||
provider: "aws"
|
provider: "aws"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
|
clusterCreation: "cli"
|
||||||
|
|
||||||
# self-managed infra test on latest k8s version
|
# self-managed infra test on latest k8s version
|
||||||
# with Sonobuoy full
|
# with Sonobuoy full
|
||||||
|
@ -178,23 +204,40 @@ jobs:
|
||||||
refStream: "ref/main/stream/debug/?"
|
refStream: "ref/main/stream/debug/?"
|
||||||
provider: "gcp"
|
provider: "gcp"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
selfManagedInfra: "true"
|
clusterCreation: "self-managed"
|
||||||
- test: "sonobuoy full"
|
- test: "sonobuoy full"
|
||||||
refStream: "ref/main/stream/debug/?"
|
refStream: "ref/main/stream/debug/?"
|
||||||
provider: "azure"
|
provider: "azure"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
selfManagedInfra: "true"
|
clusterCreation: "self-managed"
|
||||||
- test: "sonobuoy full"
|
- test: "sonobuoy full"
|
||||||
provider: "aws"
|
provider: "aws"
|
||||||
refStream: "ref/main/stream/debug/?"
|
refStream: "ref/main/stream/debug/?"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
selfManagedInfra: "true"
|
clusterCreation: "self-managed"
|
||||||
|
|
||||||
|
- test: "sonobuoy full"
|
||||||
|
refStream: "ref/main/stream/debug/?"
|
||||||
|
provider: "gcp"
|
||||||
|
kubernetes-version: "v1.28"
|
||||||
|
clusterCreation: "terraform"
|
||||||
|
- test: "sonobuoy full"
|
||||||
|
refStream: "ref/main/stream/debug/?"
|
||||||
|
provider: "azure"
|
||||||
|
kubernetes-version: "v1.28"
|
||||||
|
clusterCreation: "terraform"
|
||||||
|
- test: "sonobuoy full"
|
||||||
|
refStream: "ref/main/stream/debug/?"
|
||||||
|
provider: "aws"
|
||||||
|
kubernetes-version: "v1.28"
|
||||||
|
clusterCreation: "terraform"
|
||||||
|
|
||||||
# s3proxy test on latest k8s version
|
# s3proxy test on latest k8s version
|
||||||
- test: "s3proxy"
|
- test: "s3proxy"
|
||||||
refStream: "ref/main/stream/debug/?"
|
refStream: "ref/main/stream/debug/?"
|
||||||
provider: "gcp"
|
provider: "gcp"
|
||||||
kubernetes-version: "v1.28"
|
kubernetes-version: "v1.28"
|
||||||
|
clusterCreation: "cli"
|
||||||
|
|
||||||
#
|
#
|
||||||
# Tests on release-stable refStream
|
# Tests on release-stable refStream
|
||||||
|
@ -205,14 +248,17 @@ jobs:
|
||||||
refStream: "ref/release/stream/stable/?"
|
refStream: "ref/release/stream/stable/?"
|
||||||
provider: "gcp"
|
provider: "gcp"
|
||||||
kubernetes-version: "v1.27"
|
kubernetes-version: "v1.27"
|
||||||
|
clusterCreation: "cli"
|
||||||
- test: "verify"
|
- test: "verify"
|
||||||
refStream: "ref/release/stream/stable/?"
|
refStream: "ref/release/stream/stable/?"
|
||||||
provider: "azure"
|
provider: "azure"
|
||||||
kubernetes-version: "v1.27"
|
kubernetes-version: "v1.27"
|
||||||
|
clusterCreation: "cli"
|
||||||
- test: "verify"
|
- test: "verify"
|
||||||
refStream: "ref/release/stream/stable/?"
|
refStream: "ref/release/stream/stable/?"
|
||||||
provider: "aws"
|
provider: "aws"
|
||||||
kubernetes-version: "v1.27"
|
kubernetes-version: "v1.27"
|
||||||
|
clusterCreation: "cli"
|
||||||
|
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
permissions:
|
permissions:
|
||||||
|
@ -256,7 +302,7 @@ jobs:
|
||||||
cosignPrivateKey: ${{ secrets.COSIGN_PRIVATE_KEY }}
|
cosignPrivateKey: ${{ secrets.COSIGN_PRIVATE_KEY }}
|
||||||
fetchMeasurements: ${{ matrix.refStream != 'ref/release/stream/stable/?' }}
|
fetchMeasurements: ${{ matrix.refStream != 'ref/release/stream/stable/?' }}
|
||||||
azureSNPEnforcementPolicy: ${{ matrix.azureSNPEnforcementPolicy }}
|
azureSNPEnforcementPolicy: ${{ matrix.azureSNPEnforcementPolicy }}
|
||||||
selfManagedInfra: ${{ matrix.selfManagedInfra == 'true' }}
|
clusterCreation: ${{ matrix.clusterCreation }}
|
||||||
s3AccessKey: ${{ secrets.AWS_ACCESS_KEY_ID_S3PROXY }}
|
s3AccessKey: ${{ secrets.AWS_ACCESS_KEY_ID_S3PROXY }}
|
||||||
s3SecretKey: ${{ secrets.AWS_SECRET_ACCESS_KEY_S3PROXY }}
|
s3SecretKey: ${{ secrets.AWS_SECRET_ACCESS_KEY_S3PROXY }}
|
||||||
|
|
||||||
|
@ -265,7 +311,7 @@ jobs:
|
||||||
uses: ./.github/actions/constellation_destroy
|
uses: ./.github/actions/constellation_destroy
|
||||||
with:
|
with:
|
||||||
kubeconfig: ${{ steps.e2e_test.outputs.kubeconfig }}
|
kubeconfig: ${{ steps.e2e_test.outputs.kubeconfig }}
|
||||||
selfManagedInfra: ${{ matrix.selfManagedInfra == 'true' }}
|
clusterCreation: ${{ matrix.clusterCreation }}
|
||||||
cloudProvider: ${{ matrix.provider }}
|
cloudProvider: ${{ matrix.provider }}
|
||||||
azureClusterDeleteCredentials: ${{ secrets.AZURE_E2E_CLUSTER_CREDENTIALS }}
|
azureClusterDeleteCredentials: ${{ secrets.AZURE_E2E_CLUSTER_CREDENTIALS }}
|
||||||
gcpClusterDeleteServiceAccount: "infrastructure-e2e@constellation-e2e.iam.gserviceaccount.com"
|
gcpClusterDeleteServiceAccount: "infrastructure-e2e@constellation-e2e.iam.gserviceaccount.com"
|
||||||
|
@ -291,7 +337,7 @@ jobs:
|
||||||
test: ${{ matrix.test }}
|
test: ${{ matrix.test }}
|
||||||
kubernetesVersion: ${{ matrix.kubernetes-version }}
|
kubernetesVersion: ${{ matrix.kubernetes-version }}
|
||||||
provider: ${{ matrix.provider }}
|
provider: ${{ matrix.provider }}
|
||||||
selfManagedInfra: ${{ matrix.selfManagedInfra == 'true' }}
|
clusterCreation: ${{ matrix.clusterCreation }}
|
||||||
|
|
||||||
e2e-upgrade:
|
e2e-upgrade:
|
||||||
strategy:
|
strategy:
|
||||||
|
|
12
.github/workflows/e2e-test.yml
vendored
12
.github/workflows/e2e-test.yml
vendored
|
@ -112,10 +112,10 @@ on:
|
||||||
description: "Enable internal load balancer for the cluster."
|
description: "Enable internal load balancer for the cluster."
|
||||||
type: boolean
|
type: boolean
|
||||||
default: false
|
default: false
|
||||||
selfManagedInfra:
|
clusterCreation:
|
||||||
description: "Use self-managed infrastructure."
|
description: "How to create infrastructure for the e2e test. One of [cli, self-managed, terraform]."
|
||||||
type: boolean
|
type: string
|
||||||
default: false
|
default: "cli"
|
||||||
marketplaceImageVersion:
|
marketplaceImageVersion:
|
||||||
description: "Marketplace image version to use."
|
description: "Marketplace image version to use."
|
||||||
type: string
|
type: string
|
||||||
|
@ -241,7 +241,7 @@ jobs:
|
||||||
cosignPrivateKey: ${{ secrets.COSIGN_PRIVATE_KEY }}
|
cosignPrivateKey: ${{ secrets.COSIGN_PRIVATE_KEY }}
|
||||||
fetchMeasurements: ${{ contains(needs.find-latest-image.outputs.image, '/stream/stable/') }}
|
fetchMeasurements: ${{ contains(needs.find-latest-image.outputs.image, '/stream/stable/') }}
|
||||||
internalLoadBalancer: ${{ inputs.internalLoadBalancer }}
|
internalLoadBalancer: ${{ inputs.internalLoadBalancer }}
|
||||||
selfManagedInfra: ${{ inputs.selfManagedInfra }}
|
clusterCreation: ${{ inputs.clusterCreation }}
|
||||||
s3AccessKey: ${{ secrets.AWS_ACCESS_KEY_ID_S3PROXY }}
|
s3AccessKey: ${{ secrets.AWS_ACCESS_KEY_ID_S3PROXY }}
|
||||||
s3SecretKey: ${{ secrets.AWS_SECRET_ACCESS_KEY_S3PROXY }}
|
s3SecretKey: ${{ secrets.AWS_SECRET_ACCESS_KEY_S3PROXY }}
|
||||||
marketplaceImageVersion: ${{ inputs.marketplaceImageVersion }}
|
marketplaceImageVersion: ${{ inputs.marketplaceImageVersion }}
|
||||||
|
@ -252,7 +252,7 @@ jobs:
|
||||||
uses: ./.github/actions/constellation_destroy
|
uses: ./.github/actions/constellation_destroy
|
||||||
with:
|
with:
|
||||||
kubeconfig: ${{ steps.e2e_test.outputs.kubeconfig }}
|
kubeconfig: ${{ steps.e2e_test.outputs.kubeconfig }}
|
||||||
selfManagedInfra: ${{ inputs.selfManagedInfra }}
|
clusterCreation: ${{ inputs.clusterCreation }}
|
||||||
cloudProvider: ${{ inputs.cloudProvider }}
|
cloudProvider: ${{ inputs.cloudProvider }}
|
||||||
azureClusterDeleteCredentials: ${{ secrets.AZURE_E2E_CLUSTER_CREDENTIALS }}
|
azureClusterDeleteCredentials: ${{ secrets.AZURE_E2E_CLUSTER_CREDENTIALS }}
|
||||||
gcpClusterDeleteServiceAccount: "infrastructure-e2e@constellation-e2e.iam.gserviceaccount.com"
|
gcpClusterDeleteServiceAccount: "infrastructure-e2e@constellation-e2e.iam.gserviceaccount.com"
|
||||||
|
|
4
.github/workflows/e2e-upgrade.yml
vendored
4
.github/workflows/e2e-upgrade.yml
vendored
|
@ -182,7 +182,7 @@ jobs:
|
||||||
awsOpenSearchDomain: ${{ secrets.AWS_OPENSEARCH_DOMAIN }}
|
awsOpenSearchDomain: ${{ secrets.AWS_OPENSEARCH_DOMAIN }}
|
||||||
awsOpenSearchUsers: ${{ secrets.AWS_OPENSEARCH_USER }}
|
awsOpenSearchUsers: ${{ secrets.AWS_OPENSEARCH_USER }}
|
||||||
awsOpenSearchPwd: ${{ secrets.AWS_OPENSEARCH_PWD }}
|
awsOpenSearchPwd: ${{ secrets.AWS_OPENSEARCH_PWD }}
|
||||||
selfManagedInfra: "false"
|
clusterCreation: "cli"
|
||||||
|
|
||||||
- name: Build CLI
|
- name: Build CLI
|
||||||
uses: ./.github/actions/build_cli
|
uses: ./.github/actions/build_cli
|
||||||
|
@ -288,7 +288,7 @@ jobs:
|
||||||
uses: ./.github/actions/constellation_destroy
|
uses: ./.github/actions/constellation_destroy
|
||||||
with:
|
with:
|
||||||
kubeconfig: ${{ steps.e2e_test.outputs.kubeconfig }}
|
kubeconfig: ${{ steps.e2e_test.outputs.kubeconfig }}
|
||||||
selfManagedInfra: "false"
|
clusterCreation: "cli"
|
||||||
cloudProvider: ${{ inputs.cloudProvider }}
|
cloudProvider: ${{ inputs.cloudProvider }}
|
||||||
azureClusterDeleteCredentials: ${{ secrets.AZURE_E2E_CLUSTER_CREDENTIALS }}
|
azureClusterDeleteCredentials: ${{ secrets.AZURE_E2E_CLUSTER_CREDENTIALS }}
|
||||||
gcpClusterDeleteServiceAccount: "infrastructure-e2e@constellation-e2e.iam.gserviceaccount.com"
|
gcpClusterDeleteServiceAccount: "infrastructure-e2e@constellation-e2e.iam.gserviceaccount.com"
|
||||||
|
|
|
@ -35,7 +35,7 @@ var (
|
||||||
"github.e2e-test-provider": {},
|
"github.e2e-test-provider": {},
|
||||||
"github.ref-stream": {},
|
"github.ref-stream": {},
|
||||||
"github.kubernetes-version": {},
|
"github.kubernetes-version": {},
|
||||||
"github.self-managed-infra": {},
|
"github.cluster-creation": {},
|
||||||
"deployment-type": {}, // deployment type, e.g. "debugd", "k8s"
|
"deployment-type": {}, // deployment type, e.g. "debugd", "k8s"
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
|
@ -36,6 +36,7 @@ See the [full list of CSPs](https://docs.edgeless.systems/constellation/overview
|
||||||
### Optional
|
### Optional
|
||||||
|
|
||||||
- `image_version` (String) The image version to use. If not set, the provider version value is used.
|
- `image_version` (String) The image version to use. If not set, the provider version value is used.
|
||||||
|
- `insecure` (Boolean) DON'T USE IN PRODUCTION Skip the signature verification when fetching measurements for the image.
|
||||||
- `maa_url` (String) For Azure only, the URL of the Microsoft Azure Attestation service
|
- `maa_url` (String) For Azure only, the URL of the Microsoft Azure Attestation service
|
||||||
|
|
||||||
### Read-Only
|
### Read-Only
|
||||||
|
|
|
@ -47,6 +47,7 @@ type AttestationDataSourceModel struct {
|
||||||
AttestationVariant types.String `tfsdk:"attestation_variant"`
|
AttestationVariant types.String `tfsdk:"attestation_variant"`
|
||||||
ImageVersion types.String `tfsdk:"image_version"`
|
ImageVersion types.String `tfsdk:"image_version"`
|
||||||
MaaURL types.String `tfsdk:"maa_url"`
|
MaaURL types.String `tfsdk:"maa_url"`
|
||||||
|
Insecure types.Bool `tfsdk:"insecure"`
|
||||||
Attestation types.Object `tfsdk:"attestation"`
|
Attestation types.Object `tfsdk:"attestation"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -97,6 +98,10 @@ func (d *AttestationDataSource) Schema(_ context.Context, _ datasource.SchemaReq
|
||||||
MarkdownDescription: "For Azure only, the URL of the Microsoft Azure Attestation service",
|
MarkdownDescription: "For Azure only, the URL of the Microsoft Azure Attestation service",
|
||||||
Optional: true,
|
Optional: true,
|
||||||
},
|
},
|
||||||
|
"insecure": schema.BoolAttribute{
|
||||||
|
MarkdownDescription: "DON'T USE IN PRODUCTION Skip the signature verification when fetching measurements for the image.",
|
||||||
|
Optional: true,
|
||||||
|
},
|
||||||
"attestation": newAttestationConfigAttribute(attributeOutput),
|
"attestation": newAttestationConfigAttribute(attributeOutput),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -154,6 +159,8 @@ func (d *AttestationDataSource) Read(ctx context.Context, req datasource.ReadReq
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
insecureFetch := data.Insecure.ValueBool()
|
||||||
|
|
||||||
snpVersions := attestationconfigapi.SEVSNPVersionAPI{}
|
snpVersions := attestationconfigapi.SEVSNPVersionAPI{}
|
||||||
if attestationVariant.Equal(variant.AzureSEVSNP{}) || attestationVariant.Equal(variant.AWSSEVSNP{}) {
|
if attestationVariant.Equal(variant.AzureSEVSNP{}) || attestationVariant.Equal(variant.AWSSEVSNP{}) {
|
||||||
snpVersions, err = d.fetcher.FetchSEVSNPVersionLatest(ctx, attestationVariant)
|
snpVersions, err = d.fetcher.FetchSEVSNPVersionLatest(ctx, attestationVariant)
|
||||||
|
@ -174,7 +181,7 @@ func (d *AttestationDataSource) Read(ctx context.Context, req datasource.ReadReq
|
||||||
imageVersion = d.version // Use provider version as default.
|
imageVersion = d.version // Use provider version as default.
|
||||||
}
|
}
|
||||||
fetchedMeasurements, err := verifyFetcher.FetchAndVerifyMeasurements(ctx, imageVersion,
|
fetchedMeasurements, err := verifyFetcher.FetchAndVerifyMeasurements(ctx, imageVersion,
|
||||||
csp, attestationVariant, false)
|
csp, attestationVariant, insecureFetch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
var rekErr *measurements.RekorError
|
var rekErr *measurements.RekorError
|
||||||
if errors.As(err, &rekErr) {
|
if errors.As(err, &rekErr) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue