diff --git a/contrib/aws_inventory/kubespray-aws-inventory.py b/contrib/aws_inventory/kubespray-aws-inventory.py index 44a4a09a9..7527c6838 100755 --- a/contrib/aws_inventory/kubespray-aws-inventory.py +++ b/contrib/aws_inventory/kubespray-aws-inventory.py @@ -39,7 +39,7 @@ class SearchEC2Tags(object): 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']}] @@ -67,6 +67,11 @@ class SearchEC2Tags(object): 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 diff --git a/docs/aws.md b/docs/aws.md index 57cc70c3e..45938980c 100644 --- a/docs/aws.md +++ b/docs/aws.md @@ -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.