in cmd/resource/k8sauth.go [242:295]
func putAwsAuthAdminRole(clientset *kubernetes.Clientset) error {
role := &rbac.Role{
TypeMeta: metav1.TypeMeta{},
ObjectMeta: metav1.ObjectMeta{
Name: "aws-auth-admin",
Namespace: "kube-system",
},
Rules: []rbac.PolicyRule{
{
Verbs: []string{"*"},
APIGroups: []string{""},
Resources: []string{"configmaps"},
ResourceNames: []string{"aws-auth"},
},
},
}
_, err := clientset.RbacV1().Roles("kube-system").Get("aws-auth-admin", metav1.GetOptions{})
if !errors.IsNotFound(err) {
_, err = clientset.RbacV1().Roles("kube-system").Create(role)
} else {
_, err = clientset.RbacV1().Roles("kube-system").Update(role)
}
if err != nil {
return err
}
roleBinding := &rbac.RoleBinding{
ObjectMeta: metav1.ObjectMeta{
Name: "aws-auth-admin",
Namespace: "kube-system",
},
Subjects: []rbac.Subject{
{
Kind: "Group",
APIGroup: "rbac.authorization.k8s.io",
Name: "aws-auth-admin",
},
},
RoleRef: rbac.RoleRef{
APIGroup: "rbac.authorization.k8s.io",
Kind: "Role",
Name: "aws-auth-admin",
},
}
_, err = clientset.RbacV1().RoleBindings("kube-system").Get("aws-auth-admin", metav1.GetOptions{})
if !errors.IsNotFound(err) {
_, err = clientset.RbacV1().RoleBindings("kube-system").Create(roleBinding)
} else {
_, err = clientset.RbacV1().RoleBindings("kube-system").Update(roleBinding)
}
if err != nil {
return err
}
return nil
}