func()

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
}