node-tagger is a Kubernetes operator that applies specified tags to all aws nodes of the cluster.
The controller requires AWS credentials to be set before deploying it. This is accomplished by creating a secret with name aws-credentials
in the controller namespace with the following keys:
- AWS_ACCESS_KEY_ID
- AWS_SECRET_ACCESS_KEY
For example running the following will create an appropriate secret in the node-tagger
namespace:
kubectl create secret generic aws-credentials --from-literal=AWS_ACCESS_KEY_ID=access_key --from-literal=AWS_SECRET_ACCESS_KEY=secret_access_key --namespace=node-tagger
The operator requires ec2:CreateTags
and ec2:DescribeInstance
permissions for the nodes that we are going to tag
Deploy the operator dependencies:
kubectl apply -f deploy/service_account.yaml -n node-tagger
kubectl apply -f deploy/role.yaml -n node-tagger
kubectl apply -f deploy/role_binding.yaml -n node-tagger
Deploy the operator:
kubectl apply -f deploy/deployment.yaml -n node-tagger
helm upgrade --install node-tagger https://github.com/ouzi-dev/node-tagger/releases/download/${VERSION}/node-tagger-${VERSION}.tgz \
-n node-tagger \
--set awsCredentials.create=true \
--set awsCredentials.awsAccessKeyId=access_key \
--set awsCredentials.awsSecretAccessKey=secret_access_key \
--set awsCredentials.awsRegion=region \
--set tagsToApply[0].name=tag1,tagsToApply[0].value=value1
Where ${VERSION} is the version you want to install
helm upgrade --install node-tagger https://github.com/ouzi-dev/node-tagger/releases/download/${VERSION}/node-tagger-${VERSION}.tgz \
-n node-tagger \
--set awsCredentials.secretName=aws-credentials \
--set tagsToApply[0].name=tag1,tagsToApply[0].value=value1
Where ${VERSION} is the version you want to install
helm upgrade --install node-tagger https://github.com/ouzi-dev/node-tagger/releases/download/${VERSION}/node-tagger-${VERSION}.tgz \
-n node-tagger \
--set awsCredentials.useSecret=false \
--set tagsToApply[0].name=tag1,tagsToApply[0].value=value1 \
--set serviceAccount.annotations."eks\.amazonaws\.com/role-arn"="arn:aws:iam::123456789:role/my-role-name"
Where ${VERSION} is the version you want to install