47 lines
		
	
	
		
			914 B
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			47 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
 |