Illumina Innovates with Rancher and Kubernetes
Use Rancher to create a Kubernetes cluster in Amazon EC2.
The steps to create a cluster differ based on your Rancher version.
Result: You have created the cloud credentials that will be used to provision nodes in your cluster. You can reuse these credentials for other node templates, or in other clusters.
Complete each of the following forms using information available from the EC2 Management Console.
rancher-nodes
If you need to pass an IAM Instance Profile Name (not ARN), for example, when you want to use a Kubernetes Cloud Provider, you will need an additional permission in your policy. See Example IAM policy with PassRole for an example policy.
Optional: In the Engine Options section of the node template, you can configure the Docker daemon. You may want to specify the docker version or a Docker registry mirror.
Add one or more node pools to your cluster.A node pool is a collection of nodes based on a node template. A node template defines the configuration of a node, like what operating system to use, number of CPUs and amount of memory. Each node pool must have one or more nodes roles assigned.
Notes: Each node role (i.e. etcd, Control Plane, and Worker) should be assigned to a distinct node pool. Although it is possible to assign multiple node roles to a node pool, this should not be done for production clusters. The recommended setup is to have a node pool with the etcd node role and a count of three, a node pool with the Control Plane node role and a count of at least two, and a node pool with the Worker node role and a count of at least two. Regarding the etcd node role, refer to the etcd Admin Guide.
Notes:
etcd
Control Plane
Worker
From the Clusters page, click Add Cluster.
Choose Amazon EC2.
Enter a Cluster Name.
Create a node pool for each Kubernetes role. For each node pool, choose a node template that you created.
Click Add Member to add users that can access the cluster.
Use the Role drop-down to set permissions for each user.
Use Cluster Options to choose the version of Kubernetes, what network provider will be used and if you want to enable project network isolation. Refer to Selecting Cloud Providers to configure the Kubernetes Cloud Provider.
Click Create.
Result:
Default
default
System
cattle-system
ingress-nginx
kube-public
kube-system
Use Member Roles to configure user authorization for the cluster.
Use Cluster Options to choose the version of Kubernetes, what network provider will be used and if you want to enable project network isolation. To see more cluster options, click on Show advanced options. Refer to Selecting Cloud Providers to configure the Kubernetes Cloud Provider.
Click Add Node Template.
The Docker daemon configuration options include:
Labels: For information on labels, refer to the Docker object label documentation.
Docker Engine Install URL: Determines what Docker version will be installed on the instance. Note: If you are using RancherOS, please check what Docker versions are available using sudo ros engine list on the RancherOS version you want to use, as the default Docker version configured might not be available. If you experience issues installing Docker on other operating systems, please try to install Docker manually using the configured Docker Engine Install URL to troubleshoot.
sudo ros engine list
Registry mirrors: Docker Registry mirror to be used by the Docker daemon
Other advanced options: Refer to the Docker daemon option reference
Optional: Add additional node pools.
Review your cluster settings to confirm they are correct. Then click Create.
After creating your cluster, you can access it through the Rancher UI. As a best practice, we recommend setting up these alternate ways of accessing your cluster:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "ec2:AuthorizeSecurityGroupIngress", "ec2:Describe*", "ec2:ImportKeyPair", "ec2:CreateKeyPair", "ec2:CreateSecurityGroup", "ec2:CreateTags", "ec2:DeleteKeyPair" ], "Resource": "*" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:REGION::image/ami-*", "arn:aws:ec2:REGION:AWS_ACCOUNT_ID:instance/*", "arn:aws:ec2:REGION:AWS_ACCOUNT_ID:placement-group/*", "arn:aws:ec2:REGION:AWS_ACCOUNT_ID:volume/*", "arn:aws:ec2:REGION:AWS_ACCOUNT_ID:subnet/*", "arn:aws:ec2:REGION:AWS_ACCOUNT_ID:key-pair/*", "arn:aws:ec2:REGION:AWS_ACCOUNT_ID:network-interface/*", "arn:aws:ec2:REGION:AWS_ACCOUNT_ID:security-group/*" ] }, { "Sid": "VisualEditor2", "Effect": "Allow", "Action": [ "ec2:RebootInstances", "ec2:TerminateInstances", "ec2:StartInstances", "ec2:StopInstances" ], "Resource": "arn:aws:ec2:REGION:AWS_ACCOUNT_ID:instance/*" } ] }
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "ec2:AuthorizeSecurityGroupIngress", "ec2:Describe*", "ec2:ImportKeyPair", "ec2:CreateKeyPair", "ec2:CreateSecurityGroup", "ec2:CreateTags", "ec2:DeleteKeyPair" ], "Resource": "*" }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": [ "iam:PassRole", "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:REGION::image/ami-*", "arn:aws:ec2:REGION:AWS_ACCOUNT_ID:instance/*", "arn:aws:ec2:REGION:AWS_ACCOUNT_ID:placement-group/*", "arn:aws:ec2:REGION:AWS_ACCOUNT_ID:volume/*", "arn:aws:ec2:REGION:AWS_ACCOUNT_ID:subnet/*", "arn:aws:ec2:REGION:AWS_ACCOUNT_ID:key-pair/*", "arn:aws:ec2:REGION:AWS_ACCOUNT_ID:network-interface/*", "arn:aws:ec2:REGION:AWS_ACCOUNT_ID:security-group/*", "arn:aws:iam::AWS_ACCOUNT_ID:role/YOUR_ROLE_NAME" ] }, { "Sid": "VisualEditor2", "Effect": "Allow", "Action": [ "ec2:RebootInstances", "ec2:TerminateInstances", "ec2:StartInstances", "ec2:StopInstances" ], "Resource": "arn:aws:ec2:REGION:AWS_ACCOUNT_ID:instance/*" } ] }
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:GenerateDataKeyWithoutPlaintext", "kms:Encrypt", "kms:DescribeKey", "kms:CreateGrant", "ec2:DetachVolume", "ec2:AttachVolume", "ec2:DeleteSnapshot", "ec2:DeleteTags", "ec2:CreateTags", "ec2:CreateVolume", "ec2:DeleteVolume", "ec2:CreateSnapshot" ], "Resource": [ "arn:aws:ec2:REGION:AWS_ACCOUNT_ID:volume/*", "arn:aws:ec2:REGION:AWS_ACCOUNT_ID:instance/*", "arn:aws:ec2:REGION:AWS_ACCOUNT_ID:snapshot/*", "arn:aws:kms:REGION:AWS_ACCOUNT_ID:key/KMS_KEY_ID" ] }, { "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeTags", "ec2:DescribeVolumes", "ec2:DescribeSnapshots" ], "Resource": "*" } ] }