Skip to content

Commit

Permalink
Merge pull request #4868 from ministryofjustice/eks-addon-updates
Browse files Browse the repository at this point in the history
Add script to create GitHub issues for EKS add-on upgrades
  • Loading branch information
jakemulley authored Oct 10, 2023
2 parents 2bdda65 + ad6ea77 commit 6e80000
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 3 deletions.
7 changes: 4 additions & 3 deletions scripts/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

This directory contains scripts to automatically create GitHub issues based on EKS upgrades.

| Script | Description |
| ---------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [eks-updates.sh](./eks-updates.sh) | Fetches current cluster versions and compares them against supported Kubernetes versions in EKS. It creates a GitHub issue (example)[https://github.com/ministryofjustice/cloud-platform/issues/4857] to track upgrade progress. |
| Script | Description |
| ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [eks-updates.sh](./eks-updates.sh) | Fetches current cluster versions and compares them against supported Kubernetes versions in EKS. It creates a GitHub issue [example](https://github.com/ministryofjustice/cloud-platform/issues/4857) to track upgrade progress. |
| [eks-addon-updates.sh](./eks-addon-updates.sh) | Fetches cluster add-on versions and compares them against the latest supported add-on version for the Kubernetes version a cluster is running. It creates a GitHub issue [example](https://github.com/ministryofjustice/cloud-platform/issues/4867) to track upgrade progress. |
52 changes: 52 additions & 0 deletions scripts/eks-addon-updates.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
#!/bin/bash

# list clusters
CLUSTERS=(live live-2 manager)

for CLUSTER in "${CLUSTERS[@]}";
do
# get cluster versions
CLUSTER_VERSION=$(aws eks describe-cluster --name "$CLUSTER" | jq -r '.cluster.version')

# get addons
CLUSTER_ADDONS=($(aws eks list-addons --cluster-name "$CLUSTER" | jq -r '.addons[] | .'))

for CLUSTER_ADDON in "${CLUSTER_ADDONS[@]}";
do
# get addon version for cluster
CLUSTER_ADDON_VERSION=$(aws eks describe-addon --cluster-name "$CLUSTER" --addon-name "$CLUSTER_ADDON" | jq -r '.addon.addonVersion')

# get latest supported addon version for the cluster/k8s version
LATEST_SUPPORTED_ADDON_VERSION_FOR_KUBERNETES_VERSION=$(aws eks describe-addon-versions --addon-name "$CLUSTER_ADDON" --kubernetes-version "$CLUSTER_VERSION" | jq -r '.addons[0].addonVersions[0].addonVersion')

TITLE="EKS addon ($CLUSTER): Update $CLUSTER_ADDON from $CLUSTER_ADDON_VERSION to the latest version"

if [[ "$LATEST_SUPPORTED_ADDON_VERSION_FOR_KUBERNETES_VERSION" != "$CLUSTER_ADDON_VERSION" ]]; then # check if newer version is supported
BODY=$(cat << END
## Background
There is a new version of the EKS add-on $CLUSTER_ADDON. $CLUSTER_ADDON needs updating on the $CLUSTER cluster. When this issue was created, the latest supported add-on version for Kubernetes $CLUSTER_VERSION was $LATEST_SUPPORTED_ADDON_VERSION_FOR_KUBERNETES_VERSION.
See the [Amazon EKS add-ons](https://docs.aws.amazon.com/eks/latest/userguide/eks-add-ons.html) documentation for more information about addons, or find the latest versions for these EKS add-ons directly:
- [coredns](https://docs.aws.amazon.com/eks/latest/userguide/managing-coredns.html)
- [kube-proxy](https://docs.aws.amazon.com/eks/latest/userguide/managing-kube-proxy.html)
- [vpc-cni](https://docs.aws.amazon.com/eks/latest/userguide/managing-vpc-cni.html)
END
)

GITHUB_ISSUES=$(gh issue list --repo ministryofjustice/cloud-platform --state all --search "in:title \"$TITLE\"" --limit 50 --json title | jq -r "[ .[] | select(.title == \"$TITLE\") ] | length")

# if no issues yet, create one
if (( $(echo "0 == $GITHUB_ISSUES" | bc -l) )); then
echo "No issue found for $TITLE, creating one..."
gh issue create --title "$TITLE" --body "$BODY" --repo ministryofjustice/cloud-platform
else
echo "Issue already exists for $TITLE, skipping..."
fi
else
echo "Up to date, skipping issue creation for $TITLE"
fi

done
done

0 comments on commit 6e80000

Please sign in to comment.