Skip to content

Commit

Permalink
Add node_taints to aws_inventory script (#10168) (#10170)
Browse files Browse the repository at this point in the history
  • Loading branch information
mstoetzer authored Jun 2, 2023
1 parent d7b7939 commit f25b6fc
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 2 deletions.
7 changes: 6 additions & 1 deletion contrib/aws_inventory/kubespray-aws-inventory.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ def search_tags(self):
hosts[group] = []
tag_key = "kubespray-role"
tag_value = ["*"+group+"*"]
region = os.environ['REGION']
region = os.environ['AWS_REGION']

ec2 = boto3.resource('ec2', region)
filters = [{'Name': 'tag:'+tag_key, 'Values': tag_value}, {'Name': 'instance-state-name', 'Values': ['running']}]
Expand Down Expand Up @@ -67,6 +67,11 @@ def search_tags(self):
if node_labels_tag:
ansible_host['node_labels'] = dict([ label.strip().split('=') for label in node_labels_tag[0]['Value'].split(',') ])

##Set when instance actually has node_taints
node_taints_tag = list(filter(lambda t: t['Key'] == 'kubespray-node-taints', instance.tags))
if node_taints_tag:
ansible_host['node_taints'] = list([ taint.strip() for taint in node_taints_tag[0]['Value'].split(',') ])

hosts[group].append(dns_name)
hosts['_meta']['hostvars'][dns_name] = ansible_host

Expand Down
14 changes: 13 additions & 1 deletion docs/aws.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,11 +58,23 @@ Guide:
```ShellSession
export AWS_ACCESS_KEY_ID="xxxxx"
export AWS_SECRET_ACCESS_KEY="yyyyy"
export REGION="us-east-2"
export AWS_REGION="us-east-2"
```

- We will now create our cluster. There will be either one or two small changes. The first is that we will specify `-i inventory/kubespray-aws-inventory.py` as our inventory script. The other is conditional. If your AWS instances are public facing, you can set the `VPC_VISIBILITY` variable to `public` and that will result in public IP and DNS names being passed into the inventory. This causes your cluster.yml command to look like `VPC_VISIBILITY="public" ansible-playbook ... cluster.yml`

**Optional** Using labels and taints

To add labels to your kubernetes node, add the following tag to your instance:

- Key: `kubespray-node-labels`
- Value: `node-role.kubernetes.io/ingress=`

To add taints to your kubernetes node, add the following tag to your instance:

- Key: `kubespray-node-taints`
- Value: `node-role.kubernetes.io/ingress=:NoSchedule`

## Kubespray configuration

Declare the cloud config variables for the `aws` provider as follows. Setting these variables are optional and depend on your use case.
Expand Down

0 comments on commit f25b6fc

Please sign in to comment.