Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test: error handling for arc conformance #799

Merged
merged 40 commits into from
Feb 24, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
b7b16ef
feat: implements outbound proxy support for arc extension (#695)
nilekhc Nov 1, 2021
a3b5b8b
Merge branch 'master' of https://github.com/Azure/secrets-store-csi-d…
nilekhc Nov 1, 2021
807929d
Merge branch 'master' of https://github.com/Azure/secrets-store-csi-d…
nilekhc Nov 2, 2021
0add8b0
Merge branch 'master' of https://github.com/Azure/secrets-store-csi-d…
nilekhc Nov 9, 2021
90a96de
Merge branch 'master' of https://github.com/Azure/secrets-store-csi-d…
nilekhc Jan 11, 2022
1973557
Merge branch 'master' of https://github.com/Azure/secrets-store-csi-d…
nilekhc Jan 14, 2022
08dbaf7
Merge branch 'master' of https://github.com/Azure/secrets-store-csi-d…
nilekhc Jan 19, 2022
14b05ca
Merge branch 'master' of https://github.com/Azure/secrets-store-csi-d…
nilekhc Jan 20, 2022
1529037
Merge branch 'master' of https://github.com/Azure/secrets-store-csi-d…
nilekhc Jan 27, 2022
9742947
Merge branch 'master' of https://github.com/Azure/secrets-store-csi-d…
nilekhc Jan 28, 2022
5d147f1
Merge branch 'master' of https://github.com/Azure/secrets-store-csi-d…
nilekhc Feb 1, 2022
bbd1d90
Merge branch 'master' of https://github.com/Azure/secrets-store-csi-d…
nilekhc Feb 1, 2022
be730da
Merge branch 'master' of https://github.com/Azure/secrets-store-csi-d…
nilekhc Feb 2, 2022
589e778
Merge branch 'master' of https://github.com/Azure/secrets-store-csi-d…
nilekhc Feb 3, 2022
a777a8f
Merge branch 'master' of https://github.com/Azure/secrets-store-csi-d…
nilekhc Feb 4, 2022
b02f83b
Merge branch 'master' of https://github.com/Azure/secrets-store-csi-d…
nilekhc Feb 8, 2022
926c03a
Merge branch 'master' of https://github.com/Azure/secrets-store-csi-d…
nilekhc Feb 8, 2022
213a28e
Merge branch 'master' of https://github.com/Azure/secrets-store-csi-d…
nilekhc Feb 8, 2022
75a6448
Merge branch 'master' of https://github.com/Azure/secrets-store-csi-d…
nilekhc Feb 15, 2022
bef7991
chore: adds additional error handling
nilekhc Feb 15, 2022
546091f
feat: setup Kubeconfig
nilekhc Feb 15, 2022
17d61a0
chore: updates file path
nilekhc Feb 15, 2022
f6a13bc
chore: fixes shell check errors
nilekhc Feb 15, 2022
3a0dc64
chore: adds log statement
nilekhc Feb 16, 2022
4a12130
chore: fixes typo
nilekhc Feb 18, 2022
f335398
Merge branch 'master' of https://github.com/Azure/secrets-store-csi-d…
nilekhc Feb 18, 2022
26e8628
Merge branch 'master' of https://github.com/nilekhc/secrets-store-csi…
nilekhc Feb 18, 2022
a253bb6
fix: updates plugin name to start with azure-arc to prevent early cle…
nilekhc Feb 18, 2022
e8e95a4
chore: adds logs
nilekhc Feb 22, 2022
3e71596
chore: addresess review comments
nilekhc Feb 23, 2022
ca6b3d1
Merge branch 'master' of https://github.com/Azure/secrets-store-csi-d…
nilekhc Feb 23, 2022
e7265c7
Merge branch 'master' of https://github.com/nilekhc/secrets-store-csi…
nilekhc Feb 23, 2022
573c40f
chore: fix typo
nilekhc Feb 23, 2022
37f4b4e
Merge branch 'master' of https://github.com/Azure/secrets-store-csi-d…
nilekhc Feb 24, 2022
add0f30
Merge branch 'master' of https://github.com/nilekhc/secrets-store-csi…
nilekhc Feb 24, 2022
bef9625
chore: upadates plugin image
nilekhc Feb 24, 2022
da2fd41
Merge branch 'master' of https://github.com/Azure/secrets-store-csi-d…
nilekhc Feb 24, 2022
8c33c44
Merge branch 'master' of https://github.com/nilekhc/secrets-store-csi…
nilekhc Feb 24, 2022
04bba3a
Merge branch 'master' of https://github.com/Azure/secrets-store-csi-d…
nilekhc Feb 24, 2022
4b0ecdc
Merge branch 'master' of https://github.com/nilekhc/secrets-store-csi…
nilekhc Feb 24, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
50 changes: 48 additions & 2 deletions arc/conformance/plugin/arc_conformance.sh
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,13 @@ setEnviornmentVariables() {
# initialize keyvault for conformance test
setupKeyVault() {
# create resource group
echo "INFO: Creating resource group $keyvault_resource_group"
az group create \
--name "$keyvault_resource_group" \
--location "$keyvault_location" 2> "${results_dir}"/error || python3 /arc/setup_failure_handler.py

# create keyvault
echo "INFO: Creating key vault $keyvault_name"
az keyvault create \
--name "$keyvault_name" \
--resource-group "$keyvault_resource_group" \
Expand All @@ -61,6 +63,7 @@ setupKeyVault() {
export KEYVAULT_NAME=$keyvault_name

# set access policy for keyvault
echo "INFO: Setting up key vault access policies"
az keyvault set-policy \
--name "$keyvault_name" \
--resource-group "$keyvault_resource_group" \
Expand All @@ -70,6 +73,7 @@ setupKeyVault() {
--certificate-permissions get create import 2> "${results_dir}"/error || python3 /arc/setup_failure_handler.py

# create keyvault secret
echo "INFO: Creating secret in key vault"
secret_value=$(openssl rand -hex 6)
az keyvault secret set \
--vault-name "$keyvault_name" \
Expand All @@ -79,6 +83,7 @@ setupKeyVault() {
export SECRET_VALUE=$secret_value

# create keyvault key
echo "INFO: Creating keys in key vault"
# RSA key
key_name=key1
az keyvault key create \
Expand Down Expand Up @@ -115,6 +120,7 @@ setupKeyVault() {


# create keyvault certificate
echo "INFO: Importing certificates in key vault"
# PEM and PKCS12 certificates
step certificate create test.domain.com test.crt test.key \
--profile self-signed \
Expand Down Expand Up @@ -155,6 +161,33 @@ setupKeyVault() {
--file testec.pfx 2> "${results_dir}"/error || python3 /arc/setup_failure_handler.py
}

# setup kubeconfig for conformance test
setupKubeConfig() {
KUBECTL_CONTEXT=azure-arc-akv-test
APISERVER=https://kubernetes.default.svc/
TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
cat /var/run/secrets/kubernetes.io/serviceaccount/ca.crt > ca.crt

kubectl config set-cluster ${KUBECTL_CONTEXT} \
--embed-certs=true \
--server=${APISERVER} \
--certificate-authority=./ca.crt 2> "${results_dir}"/error || python3 /arc/setup_failure_handler.py

kubectl config set-credentials ${KUBECTL_CONTEXT} --token="${TOKEN}" 2> "${results_dir}"/error || python3 /arc/setup_failure_handler.py

# Delete previous rolebinding if exists. And ignore the error if not found.
kubectl delete clusterrolebinding clusterconnect-binding --ignore-not-found
kubectl create clusterrolebinding clusterconnect-binding --clusterrole=cluster-admin --user="${OBJECT_ID}" 2> "${results_dir}"/error || python3 /arc/setup_failure_handler.py

kubectl config set-context ${KUBECTL_CONTEXT} \
--cluster=${KUBECTL_CONTEXT} \
--user=${KUBECTL_CONTEXT} \
--namespace=default 2> "${results_dir}"/error || python3 /arc/setup_failure_handler.py

kubectl config use-context ${KUBECTL_CONTEXT} 2> "${results_dir}"/error || python3 /arc/setup_failure_handler.py
echo "INFO: KubeConfig setup complete"
}

# validate enviorment variables
if [ -z "${TENANT_ID}" ]; then
echo "ERROR: parameter TENANT_ID is required." > "${results_dir}"/error
Expand Down Expand Up @@ -186,6 +219,12 @@ if [ -z "${ARC_CLUSTER_RG}" ]; then
python3 /arc/setup_failure_handler.py
fi

# OBJECT_ID is an id of the Service Principal created in conformance test subscription.
if [ -z "${OBJECT_ID}" ]; then
nilekhc marked this conversation as resolved.
Show resolved Hide resolved
echo "ERROR: parameter OBJECT_ID is required." > "${results_dir}"/error
python3 /arc/setup_failure_handler.py
fi

# add az cli extensions
az extension add --name aks-preview
az extension add --name k8s-extension
Expand All @@ -204,14 +243,20 @@ setEnviornmentVariables
# setup keyvault
setupKeyVault

# setup Kubeconfig
setupKubeConfig

# wait for resources in ARC namespace
waitSuccessArc="$(waitForResources deployment azure-arc)"
if [ "${waitSuccessArc}" == false ]; then
echo "ERROR: deployment is not avilable in namespace - azure-arc" > "${results_dir}"/error
echo "ERROR: deployment is not available in namespace - azure-arc" > "${results_dir}"/error
python3 /arc/setup_failure_handler.py
exit 1
else
echo "INFO: resources are available in namespace - azure-arc"
fi

echo "INFO: Creating extension"
az k8s-extension create \
--name arc-akv-conformance \
--extension-type Microsoft.AzureKeyVaultSecretsProvider \
Expand All @@ -223,7 +268,7 @@ az k8s-extension create \
--release-namespace kube-system \
--configuration-settings 'secrets-store-csi-driver.enableSecretRotation=true' \
'secrets-store-csi-driver.rotationPollInterval=30s' \
'secrets-store-csi-driver.syncSecret.enabled=true'
'secrets-store-csi-driver.syncSecret.enabled=true' 2> "${results_dir}"/error || python3 /arc/setup_failure_handler.py

# wait for secrets store csi driver and provider pods
kubectl wait pod -n kube-system --for=condition=Ready -l app=secrets-store-csi-driver
Expand All @@ -232,6 +277,7 @@ kubectl wait pod -n kube-system --for=condition=Ready -l app=csi-secrets-store-p
/arc/e2e -ginkgo.v -ginkgo.skip="${GINKGO_SKIP}" -ginkgo.focus="${GINKGO_FOCUS}"

# clean up test resources
echo "INFO: cleaning up test resources"
az k8s-extension delete \
--name arc-akv-conformance \
--resource-group "${ARC_CLUSTER_RG}" \
Expand Down
4 changes: 2 additions & 2 deletions arc/conformance/plugin/conformance.yaml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
sonobuoy-config:
driver: Job
plugin-name: akv-secrets-provider-arc-conformance
plugin-name: azure-arc-akv-secrets-provider
result-format: junit
spec:
image: mcr.microsoft.com/oss/azure/secrets-store/provider-azure-arc-conformance:v1.0.0
image: mcr.microsoft.com/oss/azure/secrets-store/provider-azure-arc-conformance:v1.0.1
imagePullPolicy: IfNotPresent
name: plugin
resources: {}
Expand Down