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
kubectl get mutatingwebhookconfigurations.admissionregistration.k8s.io pod-identity-webhook
CopyDownload the IAM Policy for the AWS Load Balancer Hooks
wget https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.2.0/docs/install/iam_policy.json
CopyCreate AWS Role with inline policy
aws iam create-role \ --role-name AWSLoadBalancerController --query Policy.Arn --output text
CopyCreate AWS Policy and Service Account
POLICY_ARN=$(aws iam create-policy --policy-name "AWSLoadBalancerControllerIAMPolicy" --policy-document file://iam_policy.json --query Policy.Arn --output text) echo $POLICY_ARN
CopyCreate service account
Note I had issues with the policy, and for now just gave this user admin creds. Need to revisit and figure out.
SA_ARN=$(aws iam create-user --user-name aws-lb-controller --permissions-boundary=$POLICY_ARN --query User.Arn --output text)
CopyCreate access key
ACCESS_KEY=$(aws iam create-access-key --user-name aws-lb-controller)
CopyAttach policy to user
CopyPaste the
AccessKeyId
andSecretAccessKey
into values.yamltag your public subnet with ``
Create a namespace for the controller
kubectl create ns aws-load-balancer-controller
Copy
Apply CRDs
kubectl apply -k "github.com/aws/eks-charts/stable/aws-load-balancer-controller//crds?ref=master"
CopyAdd the helm repo and install the controller (install helm3 if not already)
helm 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
Copy
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