Extending ROSA STS to include authentication with AWS Services
This content is authored by Red Hat experts, but has not yet been tested on every supported configuration.
In this example we will deploy the Amazon Ingress Controller that uses ALBs, and configure it to use STS authentication.
Deployment
Configure STS
Make sure your cluster has the pod identity webhook
Copykubectl get mutatingwebhookconfigurations.admissionregistration.k8s.io pod-identity-webhook
Download the IAM Policy for the AWS Load Balancer Hooks
Copywget https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.2.0/docs/install/iam_policy.json
Create AWS Role with inline policy
Copyaws iam create-role \ --role-name AWSLoadBalancerController --query Policy.Arn --output text
Create AWS Policy and Service Account
CopyPOLICY_ARN=$(aws iam create-policy --policy-name "AWSLoadBalancerControllerIAMPolicy" --policy-document file://iam_policy.json --query Policy.Arn --output text) echo $POLICY_ARN
Create service account
Note I had issues with the policy, and for now just gave this user admin creds. Need to revisit and figure out.
CopySA_ARN=$(aws iam create-user --user-name aws-lb-controller --permissions-boundary=$POLICY_ARN --query User.Arn --output text)
Create access key
CopyACCESS_KEY=$(aws iam create-access-key --user-name aws-lb-controller)
Attach policy to user
CopyPaste the
AccessKeyId
andSecretAccessKey
into values.yamltag your public subnet with ``
Create a namespace for the controller
Copykubectl create ns aws-load-balancer-controller
Apply CRDs
Copykubectl apply -k "github.com/aws/eks-charts/stable/aws-load-balancer-controller//crds?ref=master"
Add the helm repo and install the controller (install helm3 if not already)
Copyhelm repo add eks https://aws.github.io/eks-charts helm install -n aws-load-balancer-controller \ aws-load-balancer-controller eks/aws-load-balancer-controller \ --values=./helm/values.yaml --create-namespace
Deploy Sample Application
oc new-project demo
oc new-app https://github.com/sclorg/django-ex.git
kubectl -n demo patch service django-ex -p '{"spec":{"type":"NodePort"}}'
kubectl apply -f ingress.yaml