Expose EMF TCP and UDP ports, and others, in the service (#182) #793
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. | |
# SPDX-License-Identifier: Apache-2.0 | |
name: Operator Integration Test | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
types: [ opened, reopened, synchronize, ready_for_review ] | |
branches: | |
- main | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref_name }} | |
cancel-in-progress: true | |
permissions: | |
id-token: write | |
contents: read | |
jobs: | |
AmazonCloudWatchAgentOperatorIntegrationTest: | |
name: AmazonCloudWatchAgentOperatorIntegrationTest | |
runs-on: ubuntu-latest | |
permissions: | |
id-token: write | |
contents: read | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Start minikube | |
uses: medyagh/setup-minikube@master | |
- name: Deploy cert-manager to minikube | |
run: | |
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.12.0/cert-manager.yaml | |
- name: Verify minikube and cert-manager | |
run: | | |
sleep 10 | |
kubectl get pods -A | |
- name: Build image | |
run: | | |
eval $(minikube docker-env) | |
make container | |
docker images | |
- name: Deploy operator to minikube | |
run: | | |
make deploy | |
- name: Test case for AmazonCloudWatchAgent pod creation | |
run: | | |
kubectl apply -f integration-tests/manifests/cloudwatch-agent-daemonset.yaml -n amazon-cloudwatch | |
sleep 60 | |
kubectl describe pods -n amazon-cloudwatch | |
pod_name="$(kubectl get pods -n amazon-cloudwatch -l app.kubernetes.io/component=amazon-cloudwatch-agent,app.kubernetes.io/instance=amazon-cloudwatch.cloudwatch-agent -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}')" | |
if [ -z "$pod_name" ]; then | |
echo "Pod $pod_name is not created. Exiting with ERROR." | |
echo "Pod is not created test case: FAIL" | |
else | |
echo "Pod $pod_name is created." | |
echo "Pod is created test case: PASS" | |
fi | |
- name: Test for default instrumentation resources for Java | |
run: | | |
kubectl apply -f integration-tests/java/sample-deployment-java.yaml | |
sleep 5 | |
kubectl get pods -A | |
kubectl describe pods -n default | |
go run integration-tests/manifests/cmd/validate_instrumentation_vars.go default integration-tests/java/default_instrumentation_java_env_variables.json | |
- name: Test for defined instrumentation resources for Java | |
run: | | |
kubectl apply -f integration-tests/manifests/sample-instrumentation.yaml | |
sleep 5 | |
kubectl rollout restart deployment nginx | |
sleep 5 | |
kubectl get pods -A | |
kubectl describe pods -n default | |
cd integration-tests/manifests/cmd | |
go run validate_instrumentation_vars.go default ns_instrumentation_env_variables.json | |
kubectl delete instrumentation sample-instrumentation | |
- name: Test for default instrumentation resources for python | |
run: | | |
kubectl apply -f integration-tests/python/sample-deployment-python.yaml | |
sleep 5 | |
kubectl rollout restart deployment nginx | |
sleep 5 | |
kubectl get pods -A | |
kubectl describe pods -n default | |
go run integration-tests/manifests/cmd/validate_instrumentation_vars.go default integration-tests/python/default_instrumentation_python_env_variables.json | |
- name: Test for defined instrumentation resources for python | |
run: | | |
kubectl apply -f integration-tests/manifests/sample-instrumentation.yaml | |
sleep 5 | |
kubectl rollout restart deployment nginx | |
sleep 5 | |
kubectl describe pods -n default | |
cd integration-tests/manifests/cmd | |
go run validate_instrumentation_vars.go default ns_instrumentation_env_variables.json | |
kubectl delete instrumentation sample-instrumentation | |
- name: Test for default instrumentation resources for python and java | |
run: | | |
kubectl apply -f integration-tests/python-java/sample-deployment-python-java.yaml | |
sleep 5 | |
kubectl rollout restart deployment nginx | |
sleep 5 | |
kubectl get pods -A | |
kubectl describe pods -n default | |
kubectl describe pods -n amazon-cloudwatch | |
go run integration-tests/manifests/cmd/validate_instrumentation_vars.go default integration-tests/python-java/default_instrumentation_python-java_env_variables.json | |
- name: Test for defined instrumentation resources for python and java | |
run: | | |
kubectl apply -f integration-tests/manifests/sample-instrumentation.yaml | |
sleep 5 | |
kubectl rollout restart deployment nginx | |
sleep 5 | |
kubectl get pods -A | |
kubectl describe pods -n default | |
cd integration-tests/manifests/cmd | |
go run validate_instrumentation_vars.go default ns_instrumentation_env_variables.json | |
kubectl delete instrumentation sample-instrumentation | |
DeploymentAnnotationsTest: | |
name: DeploymentAnnotationsTest | |
runs-on: ubuntu-latest | |
permissions: | |
id-token: write | |
contents: read | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Start minikube | |
uses: medyagh/setup-minikube@master | |
- name: Deploy cert-manager to minikube | |
run: | |
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.12.0/cert-manager.yaml | |
- name: Verify minikube and cert-manager | |
run: | | |
sleep 10 | |
kubectl get pods -A | |
- name: Build image | |
run: | | |
eval $(minikube docker-env) | |
make container | |
docker images | |
- name: Deploy operator to minikube | |
run: | | |
make deploy | |
- name: Test Annotations | |
run: | | |
kubectl apply -f integration-tests/manifests/sample-deployment.yaml | |
kubectl get pods -A | |
kubectl describe pods -n default | |
sleep 5 | |
go test -v -run TestJavaAndPythonDeployment ./integration-tests/manifests/annotations -timeout 30m | |
sleep 5 | |
go test -v -run TestJavaOnlyDeployment ./integration-tests/manifests/annotations -timeout 30m | |
sleep 5 | |
go test -v -run TestPythonOnlyDeployment ./integration-tests/manifests/annotations -timeout 30m | |
sleep 5 | |
go test -v -run TestAnnotationsOnMultipleResources ./integration-tests/manifests/annotations -timeout 30m | |
DaemonsetAnnotationsTest: | |
name: DaemonsetAnnotationsTest | |
runs-on: ubuntu-latest | |
permissions: | |
id-token: write | |
contents: read | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Start minikube | |
uses: medyagh/setup-minikube@master | |
- name: Deploy cert-manager to minikube | |
run: | |
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.12.0/cert-manager.yaml | |
- name: Verify minikube and cert-manager | |
run: | | |
sleep 10 | |
kubectl get pods -A | |
- name: Build image | |
run: | | |
eval $(minikube docker-env) | |
make container | |
docker images | |
- name: Deploy operator to minikube | |
run: | | |
make deploy | |
- name: Test Annotations | |
run: | | |
kubectl apply -f integration-tests/manifests/sample-daemonset.yaml | |
sleep 5 | |
kubectl get pods -A | |
kubectl describe pods -n default | |
go test -v -run TestJavaAndPythonDaemonSet ./integration-tests/manifests/annotations -timeout 30m | |
sleep 5 | |
go test -v -run TestJavaOnlyDaemonSet ./integration-tests/manifests/annotations -timeout 30m | |
sleep 5 | |
go test -v -run TestPythonOnlyDaemonSet ./integration-tests/manifests/annotations -timeout 30m | |
sleep 5 | |
go test -v -run TestAutoAnnotationForManualAnnotationRemoval ./integration-tests/manifests/annotations -timeout 30m | |
StatefulsetAnnotationsTest: | |
name: StatefulsetAnnotationsTest | |
runs-on: ubuntu-latest | |
permissions: | |
id-token: write | |
contents: read | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Start minikube | |
uses: medyagh/setup-minikube@master | |
- name: Deploy cert-manager to minikube | |
run: | |
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.12.0/cert-manager.yaml | |
- name: Verify minikube and cert-manager | |
run: | | |
sleep 10 | |
kubectl get pods -A | |
- name: Build image | |
run: | | |
eval $(minikube docker-env) | |
make container | |
docker images | |
- name: Deploy operator to minikube | |
run: | | |
make deploy | |
- name: Test Annotations | |
run: | | |
kubectl apply -f integration-tests/manifests/sample-statefulset.yaml | |
sleep 5 | |
kubectl get pods -A | |
kubectl describe pods -n default | |
go test -v -run TestJavaAndPythonStatefulSet ./integration-tests/manifests/annotations -timeout 30m | |
sleep 5 | |
go test -v -run TestJavaOnlyStatefulSet ./integration-tests/manifests/annotations -timeout 30m | |
sleep 5 | |
go test -v -run TestPythonOnlyStatefulSet ./integration-tests/manifests/annotations -timeout 30m | |
sleep 5 | |
go test -v -run TestOnlyNonAnnotatedAppsShouldBeRestarted ./integration-tests/manifests/annotations -timeout 30m | |
NamespaceAnnotationsTest: | |
name: NamespaceAnnotationsTest | |
runs-on: ubuntu-latest | |
permissions: | |
id-token: write | |
contents: read | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Start minikube | |
uses: medyagh/setup-minikube@master | |
- name: Deploy cert-manager to minikube | |
run: | |
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.12.0/cert-manager.yaml | |
- name: Verify minikube and cert-manager | |
run: | | |
kubectl get pods -A | |
- name: Build image | |
run: | | |
eval $(minikube docker-env) | |
make container | |
docker images | |
- name: Deploy operator to minikube | |
run: | | |
make deploy | |
- name: Test Annotations | |
run: | | |
kubectl get pods -A | |
kubectl describe pods -n default | |
go test -v -run TestJavaAndPythonNamespace ./integration-tests/manifests/annotations -timeout 30m | |
sleep 5 | |
go test -v -run TestJavaOnlyNamespace ./integration-tests/manifests/annotations -timeout 30m | |
sleep 5 | |
go test -v -run TestPythonOnlyNamespace ./integration-tests/manifests/annotations -timeout 30m | |
sleep 5 | |
go test -v -run TestAlreadyAutoAnnotatedResourceShouldNotRestart ./integration-tests/manifests/annotations -timeout 30m | |