[2019Q2] UX Scorecard for adding EKS cluster to GitLab
Job To Be Done
When managing my clusters using AWS, I want to add my Kubernetes cluster to GitLab, so I can deploy and manage my containerized application at scale using advanced features.
Experience Baseline
-
Benchmark Score: C-
- Workflow needs improvement, but user can still finish completing the task. It usually takes longer to complete the task than it should. User may abandon the process or try again later.
- Frustration: Medium
- Task Completion: Successful but with unnecessary steps
- Steps to Complete Task: Excessive
-
Walkthrough video: https://youtu.be/xAi9u2eqrSk
Walkthrough steps
1. View Kubernetes screen
| Step | Screenshot | Emotional grade |
|---|---|---|
| Within my project, I navigate to the Kubernetes area where I can add my existing cluster. | ![]() |
Neutral: I am able to find where to add a cluster. |
| Step | Screenshot | Emotional grade |
|---|---|---|
I click the Add Kubernetes Cluster button |
![]() |
Neutral: Add cluster button is where I would expect. |
| Step | Screenshot | Emotional grade |
|---|---|---|
| I can't create a cluster on EKS via the GitLab UI. Only GKE. So I need to go create one first. | ![]() |
Negative: I cannot create an EKS cluster via the GitLab interface. |
2. Find docs
| Step | Screenshot | Emotional grade |
|---|---|---|
| I google "how to create cluster on eks console" and find the related docs. | ![]() |
Negative: I have to navigate away and use google to find out how I should create an EKS cluster. |
3. Create Role prereq
| Step | Screenshot | Emotional grade |
|---|---|---|
According to docs, I need to create a Service Role. I navigate to IAM console and click Roles. I choose Create role
|
![]() |
Neutral: Docs easily guide me towards the right place to create a service role. |
| Step | Screenshot | Emotional grade |
|---|---|---|
| Docs don't mention permissions so I keep as is. | ![]() |
Neutral: Nothing unexpected arises. |
| Step | Screenshot | Emotional grade |
|---|---|---|
| I skip the optional tags because I don't know what they are for. | ![]() |
Neutral: Nothing unexpected arises. |
| Step | Screenshot | Emotional grade |
|---|---|---|
I add a Role name taurie-eks-role, review settings, and click Create role. |
![]() |
Neutral: Nothing unexpected arises. |
3. Create VPC prereq
| Step | Screenshot | Emotional grade |
|---|---|---|
| I navigate back to the docs and see that I need to create a VPC as another prereq. | ![]() |
Neutral: Docs tell me what to do next. |
| Step | Screenshot | Emotional grade |
|---|---|---|
I follow the docs and navigate to the CloudFormation console and click Create stack. |
![]() |
Neutral: Nothing unexpected arises. |
| Step | Screenshot | Emotional grade |
|---|---|---|
| I keep the template as Amazon S3 and I add the URL provided from the docs. | ![]() |
Neutral: Nothing unexpected arises. |
| Step | Screenshot | Emotional grade |
|---|---|---|
I add my stack name taurie-eks-vpc and keep the other details using the defaults. |
![]() |
Neutral: Nothing unexpected arises. |
| Step | Screenshot | Emotional grade |
|---|---|---|
| I don't touch any of the options and choose Next. | ![]() |
Neutral: Nothing unexpected arises. |
| Step | Screenshot | Emotional grade |
|---|---|---|
| I review my VPC and choose to create it. | ![]() |
Neutral: Nothing unexpected arises. |
4. Install kubectl and AWS CLI
| Step | Screenshot | Emotional grade |
|---|---|---|
| While my VPC is being created, I navigate back to the docs and see I need to install kubectl. I navigate to those docs. | ![]() |
Neutral: There are two options and I'm not entirely sure which is best to use but I just choose to use the one provided by Amazon. |
| Step | Screenshot | Emotional grade |
|---|---|---|
| From the docs, I see I need the latest AWS CLI. I follow the link to the docs. | ![]() |
Neutral: Nothing unexpected arises. |
| Step | Screenshot | Emotional grade |
|---|---|---|
I see I can use pip3 if my Python version is 3 or greater so I check my Python version in the terminal using my version manager, asdf. I run asdf current Python and see that my version is 3.6.2. |
![]() |
Neutral: Nothing unexpected arises. |
| Step | Screenshot | Emotional grade |
|---|---|---|
I follow the docs and run the pip command in my terminal. I then run aws --version to check that I have the latest version. |
![]() |
Neutral: Nothing unexpected arises. |
5. Create cluster
| Step | Screenshot | Emotional grade |
|---|---|---|
| I navigate back to the docs and see I am ready to create my cluster. I choose to create my cluster using the AWS console. I follow the link in the docs to the EKS console and choose Create cluster. | ![]() |
Positive: I am relieved that I don't have any more prereqs and I can finally create my cluster. |
| Step | Screenshot | Emotional grade |
|---|---|---|
| I choose the VPC I created earlier and keep the subnets selected. I made sure to select the security group associated with my VPC. | ![]() |
Neutral: Nothing unexpected arises. |
6. Create a kubeconfig file
| Step | Screenshot | Emotional grade |
|---|---|---|
| I follow the docs to create a kubeconfig file and test my configuration. | ![]() |
Neutral: Nothing unexpected arises. |
7. Launch worker nodes
| Step | Screenshot | Emotional grade |
|---|---|---|
I follow the docs and learn I need to launch worker nodes by creating another stack. I follow the link in the docs to the CloudFormation console and choose Create stack. |
![]() |
Negative: Nothing unexpected happens, but I'm a little irritated I have to create another stack. |
| Step | Screenshot | Emotional grade |
|---|---|---|
| I select the Amazon S3 template, as per the docs and paste in the URL the docs provide. | ![]() |
Neutral: Nothing unexpected arises. |
| Step | Screenshot | Emotional grade |
|---|---|---|
I add a name for my node group taurie-node-group and keep the other node options as the default. |
![]() |
Neutral: Nothing unexpected arises. |
| Step | Screenshot | Emotional grade |
|---|---|---|
| I learn I need a KeyName. I follow the link in the docs to create one. | ![]() |
Negative: I am not sure why KeyName wasn't included as part of the prereqs. |
7a. Adding a key name
| Step | Screenshot | Emotional grade |
|---|---|---|
| From here, I am linked to another docs page for how to create a Key Pair. | ![]() |
Neutral: Nothing unexpected arises. |
| Step | Screenshot | Emotional grade |
|---|---|---|
I click Create Key Pair from the top of the page. |
![]() |
Neutral: Nothing unexpected arises. |
| Step | Screenshot | Emotional grade |
|---|---|---|
I enter in my name into the modal and click Create. |
![]() |
Neutral: Nothing unexpected arises. |
| Step | Screenshot | Emotional grade |
|---|---|---|
| I fill out all the fields again. I keep the Bootstrap Arguments blank. I add my VPC and the Subnets from my VPC. | ![]() |
Neutral: Nothing unexpected arises. |
| Step | Screenshot | Emotional grade |
|---|---|---|
| I skip the options page. | ![]() |
Neutral: Nothing unexpected arises. |
| Step | Screenshot | Emotional grade |
|---|---|---|
| I review my VPC, acknowledge that IAM resources may be created, and create the stack. | ![]() |
Neutral: Nothing unexpected arises. |
| Step | Screenshot | Emotional grade |
|---|---|---|
Once created, I view the Outputs tab, per the docs. I see I will need the NodeInstanceRole for later, so I leave this page up. |
![]() |
Neutral: Nothing unexpected arises. |
7. Enable worker nodes
| Step | Screenshot | Emotional grade |
|---|---|---|
| Per the docs, I download the configuration map using the command they give me. | ![]() |
Neutral: Nothing unexpected arises. |
| Step | Screenshot | Emotional grade |
|---|---|---|
I create a new file in my terminal using nano. It doesn't tell me what to name the file so I look ahead to the next step to see how the file will be used. There it says it will apply the file to my cluster using aws-auth-cm.yaml so I use this for my file name. |
- | Negative: Its unclear what to name the file or if it matters until I read further along in the docs. |
| Step | Screenshot | Emotional grade |
|---|---|---|
I paste the content of the file and add my rolearn. |
![]() |
Neutral: Nothing unexpected arises. |
| Step | Screenshot | Emotional grade |
|---|---|---|
| I save the file and then apply it to my cluster. | ![]() |
Neutral: Nothing unexpected arises. |
| Step | Screenshot | Emotional grade |
|---|---|---|
| Per the docs, I watch the nodes and wait for them to be ready. | ![]() |
Positive: Its nice to see the nodes go from Not Ready to Ready quickly. |
8. Adding my cluster to GitLab
| Step | Screenshot | Emotional grade |
|---|---|---|
| I click on the documentation link to figure out how to get my API URL | ![]() |
Neutral: Nothing unexpected arises. |
| Step | Screenshot | Emotional grade |
|---|---|---|
| I type the command found in the docs to get my API url and add it to GitLab. | ![]() |
Neutral: Nothing unexpected arises. |
| Step | Screenshot | Emotional grade |
|---|---|---|
| I type the command found in the docs to get my token name. | ![]() |
Neutral: Nothing unexpected arises. |
| Step | Screenshot | Emotional grade |
|---|---|---|
| I need to create a service account file to apply to my cluster. Using nano, I do this and then apply the file to my cluster. | ![]() |
Neutral: Nothing unexpected arises. |
| Step | Screenshot | Emotional grade |
|---|---|---|
| I use the command in the docs to get the token output. | ![]() |
Neutral: Nothing unexpected arises. |
| Step | Screenshot | Emotional grade |
|---|---|---|
| I copy the token output and add it to GitLab. I choose to not add a project namespace and keep my RBAC cluster managed by GitLab. | ![]() |
Neutral: Nothing unexpected arises. |
Edited by Valerie Karnes






















































