config.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package local
  2. import (
  3. "github.com/aws/aws-sdk-go/service/iam"
  4. "github.com/porter-dev/porter/cli/cmd/providers/aws"
  5. "github.com/porter-dev/porter/internal/kubernetes/local"
  6. "k8s.io/client-go/kubernetes"
  7. "k8s.io/client-go/tools/clientcmd"
  8. "github.com/aws/aws-sdk-go/aws/session"
  9. )
  10. // NewDefaultAgent returns an AWS agent without a k8s clientset
  11. func NewDefaultAgent() *aws.Agent {
  12. sess := session.Must(session.NewSession())
  13. iamSvc := iam.New(sess)
  14. // Return a new agent with AWS session and iam service
  15. return &aws.Agent{
  16. Session: sess,
  17. IAMService: iamSvc,
  18. Clientset: nil,
  19. }
  20. }
  21. // NewDefaultKubernetesAgent returns an AWS agent using local credentials.
  22. func NewDefaultKubernetesAgent(kubeconfigPath string, contextName string) (*aws.Agent, error) {
  23. // (1) Construct a local clientset from the AWS context, and use the eksctl authconfigmap package
  24. // to read the current identities of the config map, to make sure user has access. Save the created
  25. // clientset.
  26. rawBytes, err := local.GetKubeconfigFromHost(kubeconfigPath, []string{contextName})
  27. if err != nil {
  28. return nil, err
  29. }
  30. conf, err := clientcmd.NewClientConfigFromBytes(rawBytes)
  31. rawConf, err := conf.RawConfig()
  32. conf = clientcmd.NewDefaultClientConfig(rawConf, &clientcmd.ConfigOverrides{
  33. CurrentContext: contextName,
  34. })
  35. restConf, err := conf.ClientConfig()
  36. if err != nil {
  37. return nil, err
  38. }
  39. clientset, err := kubernetes.NewForConfig(restConf)
  40. if err != nil {
  41. return nil, err
  42. }
  43. sess := session.Must(session.NewSession())
  44. iamSvc := iam.New(sess)
  45. // Return a new agent with AWS session and clientset
  46. return &aws.Agent{
  47. Session: sess,
  48. IAMService: iamSvc,
  49. Clientset: clientset,
  50. }, nil
  51. }