46 lines
914 B
Ruby
46 lines
914 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Gitlab
|
|
module Kubernetes
|
|
module ConfigMaps
|
|
class AwsNodeAuth
|
|
attr_reader :node_role
|
|
|
|
def initialize(node_role)
|
|
@node_role = node_role
|
|
end
|
|
|
|
def generate
|
|
Kubeclient::Resource.new(
|
|
metadata: metadata,
|
|
data: data
|
|
)
|
|
end
|
|
|
|
private
|
|
|
|
def metadata
|
|
{
|
|
'name' => 'aws-auth',
|
|
'namespace' => 'kube-system'
|
|
}
|
|
end
|
|
|
|
def data
|
|
{ 'mapRoles' => instance_role_config(node_role) }
|
|
end
|
|
|
|
def instance_role_config(role)
|
|
[{
|
|
'rolearn' => role,
|
|
'username' => 'system:node:{{EC2PrivateDNSName}}',
|
|
'groups' => [
|
|
'system:bootstrappers',
|
|
'system:nodes'
|
|
]
|
|
}].to_yaml
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|