in pkg/provider/eks/eks.go [531:577]
func (c *EKS) NewK8sProvider(*kingpin.ParseContext) error {
clusterName := c.DeploymentVars["CLUSTER_NAME"]
region := c.DeploymentVars["ZONE"]
req := &eks.DescribeClusterInput{
Name: &clusterName,
}
rep, err := c.clientEKS.DescribeCluster(req)
if err != nil {
return fmt.Errorf("failed to get cluster details: %v", err)
}
arnRole := *rep.Cluster.Arn
caCert, err := base64.StdEncoding.DecodeString(*rep.Cluster.CertificateAuthority.Data)
if err != nil {
return fmt.Errorf("failed to decode certificate: %v", err.Error())
}
cluster := clientcmdapi.NewCluster()
cluster.CertificateAuthorityData = []byte(caCert)
cluster.Server = *rep.Cluster.Endpoint
clusterContext := clientcmdapi.NewContext()
clusterContext.Cluster = arnRole
clusterContext.AuthInfo = arnRole
authInfo := clientcmdapi.NewAuthInfo()
authInfo.Token = c.EKSK8sToken(clusterName, region).Token
config := clientcmdapi.NewConfig()
config.AuthInfos[arnRole] = authInfo
config.Contexts[arnRole] = clusterContext
config.Clusters[arnRole] = cluster
config.CurrentContext = arnRole
config.Kind = "Config"
config.APIVersion = "v1"
c.k8sProvider, err = k8sProvider.New(c.ctx, config)
if err != nil {
return fmt.Errorf("k8s provider error %v", err)
}
return nil
}