Skip to content

Commit 4d0bdaa

Browse files
fix(pmm): use EKS Access Entries API for cluster access
Replace eksctl iamidentitymapping (ConfigMap-based) with EKS Access Entries API for more reliable user access to pmm-ha-eks clusters. Changes: - Add new 'Configure Cluster Access' stage using AWS EKS API - Dynamically query pmm-eks-admins IAM group for user list - Add SSO AdministratorAccess role for SSO users - Simplify kubeconfig command (no --role-arn required) This fixes AccessDeniedException errors when users try to access clusters, as Access Entries grant both Kubernetes API and implicit eks:DescribeCluster permissions.
1 parent 28d398e commit 4d0bdaa

File tree

1 file changed

+56
-7
lines changed

1 file changed

+56
-7
lines changed

pmm/v3/pmm3-ha-eks.groovy

Lines changed: 56 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -98,14 +98,63 @@ EOF
9898
withCredentials([aws(credentialsId: 'pmm-staging-slave')]) {
9999
sh '''
100100
eksctl create cluster -f cluster-config.yaml --timeout=40m --verbose=4
101+
'''
102+
}
103+
}
104+
}
105+
106+
stage('Configure Cluster Access') {
107+
steps {
108+
withCredentials([aws(credentialsId: 'pmm-staging-slave')]) {
109+
sh '''
110+
# Add EKSAdminRole with cluster admin access
111+
aws eks create-access-entry \
112+
--cluster-name "${CLUSTER_NAME}" \
113+
--region "${REGION}" \
114+
--principal-arn arn:aws:iam::119175775298:role/EKSAdminRole
115+
116+
aws eks associate-access-policy \
117+
--cluster-name "${CLUSTER_NAME}" \
118+
--region "${REGION}" \
119+
--principal-arn arn:aws:iam::119175775298:role/EKSAdminRole \
120+
--policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \
121+
--access-scope type=cluster
122+
123+
# Add pmm-eks-admins group members dynamically
124+
# To manage access, add/remove users from the pmm-eks-admins IAM group:
125+
# https://us-east-1.console.aws.amazon.com/iam/home#/groups/details/pmm-eks-admins
126+
# CLI: aws iam add-user-to-group --group-name pmm-eks-admins --user-name <username>
127+
USERS=$(aws iam get-group --group-name pmm-eks-admins --query 'Users[].Arn' --output text)
128+
for USER_ARN in $USERS; do
129+
echo "Adding access for ${USER_ARN}..."
130+
aws eks create-access-entry \
131+
--cluster-name "${CLUSTER_NAME}" \
132+
--region "${REGION}" \
133+
--principal-arn "${USER_ARN}" || true
101134
102-
# Map EKSAdminRole for IAM users
103-
eksctl create iamidentitymapping \
104-
--cluster "${CLUSTER_NAME}" \
135+
aws eks associate-access-policy \
136+
--cluster-name "${CLUSTER_NAME}" \
137+
--region "${REGION}" \
138+
--principal-arn "${USER_ARN}" \
139+
--policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \
140+
--access-scope type=cluster || true
141+
done
142+
143+
# Add SSO AdministratorAccess role
144+
aws eks create-access-entry \
145+
--cluster-name "${CLUSTER_NAME}" \
146+
--region "${REGION}" \
147+
--principal-arn "arn:aws:iam::119175775298:role/aws-reserved/sso.amazonaws.com/AWSReservedSSO_AdministratorAccess_5922b1e9e802dfa5" || true
148+
149+
aws eks associate-access-policy \
150+
--cluster-name "${CLUSTER_NAME}" \
105151
--region "${REGION}" \
106-
--arn arn:aws:iam::119175775298:role/EKSAdminRole \
107-
--username eks-admin \
108-
--group system:masters
152+
--principal-arn "arn:aws:iam::119175775298:role/aws-reserved/sso.amazonaws.com/AWSReservedSSO_AdministratorAccess_5922b1e9e802dfa5" \
153+
--policy-arn arn:aws:eks::aws:cluster-access-policy/AmazonEKSClusterAdminPolicy \
154+
--access-scope type=cluster || true
155+
156+
echo "Access entries configured:"
157+
aws eks list-access-entries --cluster-name "${CLUSTER_NAME}" --region "${REGION}"
109158
'''
110159
}
111160
}
@@ -197,7 +246,7 @@ EOF
197246
echo ""
198247
199248
echo "To access this cluster, run:"
200-
echo "aws eks update-kubeconfig --name ${CLUSTER_NAME} --region ${REGION} --role-arn arn:aws:iam::119175775298:role/EKSAdminRole"
249+
echo "aws eks update-kubeconfig --name ${CLUSTER_NAME} --region ${REGION}"
201250
'''
202251
}
203252
}

0 commit comments

Comments
 (0)