Skip to content

Commit

Permalink
use a deterministic kubeconfig file (#27)
Browse files Browse the repository at this point in the history
* use a deterministic kubeconfig file

* fix validation issues

Co-authored-by: Pankaj Patil <patilpankaj212@gmail.com>
  • Loading branch information
Devang Gaur and patilpankaj212 committed May 18, 2021
1 parent e78d01b commit c02f24c
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 22 deletions.
19 changes: 19 additions & 0 deletions test/e2e/validatingwebhook/config_data/kubeconfig.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM1ekNDQWMrZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJeE1EVXhPREEwTkRnd09Wb1hEVE14TURVeE5qQTBORGd3T1Zvd0ZURVRNQkVHQTFVRQpBeE1LYTNWaVpYSnVaWFJsY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT1A2CjltMEEzcG9rUFpGbkhjdVBCc2ZwMTRkUzdUM1JUVW1xUFRSd1BmSU95U3ZxRlFXMDJ6M1Q0WXhxWWU2RURlT3oKMEZCb1BwNkUzcFJTTmU3dWtaRkpSd29IT25kdVlXNFpzREw4aDlVUVQxSUZRVm1IL1pWYkphSEI3WUhta1M2QgplRXhYWTIvMTY1K1VRZzVyRy9VcHFOeXRScnNDb1VDWXNWOGJFeURFRHZHQXBkbFZkVGJWUzlqQnlJS3N4QXlyClpyTWU0M2pVUFVLTTlGZ1gvNy9uanRLRXJmYk4zM1I3R3QwWEVuYU1QMFVOcHI4WE8ybklJajk0TDZoNHVHT0oKeERBSVdiVVRTUURXVnBSeHJYY2lla2N2ZlIwdUdOeG1pTGE4OXZhYTJTZjBNUGI5Y292bG80VlhLY2hFbmdjSApSTWJJd0NBSmJrVE9UOExNSnBVQ0F3RUFBYU5DTUVBd0RnWURWUjBQQVFIL0JBUURBZ0trTUE4R0ExVWRFd0VCCi93UUZNQU1CQWY4d0hRWURWUjBPQkJZRUZCbGUwbHZMazFHU3V3ZkdJcWlQS09LZWdSdzdNQTBHQ1NxR1NJYjMKRFFFQkN3VUFBNElCQVFCSjdDUFdUNHpGVEtGTkFIUERGVzAxSmZpcWNNQ1BaZEl0QmlZMlI2cHhzTHpkdTErcApJeitHR0F5eGFmUU1KdVdyTzlCcnpPbERFWVhzUjV3QllaclkxQ0U0VjZEWW52UDRtUXkrRk9hNVNqRWhzUGViClZGd0hyQTRnUThKUFllcGtDNFVrTDkyOXlMUjZ2d29pV1pUZkdhaTZxMDBaamx6cjV6bERKNFh6dTlzNmNFM2EKT0JwbG9mdFhVZDN0K3pqMHV5RUw2OW5wL1ZwQlU1UzlNTks5U05DaHRXbVpJbUVmTU5uUlk1ckJpTWI1RG5WagpRemxGc3hqNnFKbDlTSlBPemtFandLVEdMb1RVdkVYcEFJVTRRT1p1VDJkYlNjazRXNnZyYUs3cXo5TlkxSTIyCmFJQ2l5b29nWDY1TUhRNGFicXdDMHlXcy9MREFCSDdIRTN3WAotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
server: https://127.0.0.1:51638
name: kind-kind
contexts:
- context:
cluster: kind-kind
user: kind-kind
name: kind-kind
current-context: kind-kind
kind: Config
preferences: {}
users:
- name: kind-kind
user:
client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURFekNDQWZ1Z0F3SUJBZ0lJSmY5ZnFJbXdyVFl3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TVRBMU1UZ3dORFE0TURsYUZ3MHlNakExTVRnd05EUTRNVEJhTURReApGekFWQmdOVkJBb1REbk41YzNSbGJUcHRZWE4wWlhKek1Sa3dGd1lEVlFRREV4QnJkV0psY201bGRHVnpMV0ZrCmJXbHVNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQXVaWE9sZWlmZUpmVWhkRVEKT3dUdjJBeGQ5V2hhZ1I2WkVYL01DZUl1MExZRHZPNnlZbm84MU96RENvaEUvQjEzNG1sQ3RieGdyR2NRamNsTwpkNDVKWnNZWkdLaU9yMEJMbUw0dEJUQ3lUbXRhdFExd05ycTN0dmR0Z2Ntam1INksrWG9tSHQ5VXF6VzNwTFloClRrWXpjOXVoc0k0eXNId1pYWnE5d3lGRTBpOFF4TnlFOFVPaFQvQjI0WC83V2oyWE1aUGp1WmRidG04MGpIck0KUTZZNHUyby9GVzlCcjZFYXdRbVcwRjFxc1ZVUFpOSnFxMTlCY1ROMkdxaUdGcURmM0ZscjM3ZDUxTGM4SU1jeApGblMzSmJ1Q0EwSTEyKzJaRFNCalIveUtVdmQ1NzNPTTBUbVNDTFhRclZWNkUxYTBkeld6OE5IKzd6U3R2dU5nCkV4SCtKUUlEQVFBQm8wZ3dSakFPQmdOVkhROEJBZjhFQkFNQ0JhQXdFd1lEVlIwbEJBd3dDZ1lJS3dZQkJRVUgKQXdJd0h3WURWUjBqQkJnd0ZvQVVHVjdTVzh1VFVaSzdCOFlpcUk4bzRwNkJIRHN3RFFZSktvWklodmNOQVFFTApCUUFEZ2dFQkFERkJKWjVNbjlUUndFbTBCNEE1aXUxNHdCS1ZqWlVpclExaTYvZ2ljaVVWWEt0NkhLTi9FUTlyCmtzL0kreUJVM1hXeEJ4VTh3c2orZ3V0L001N3dSNlE4SmtQWUZuSm1aS254aDl2ZlcxbU9Qc28wY21XVElXTmEKenk4WWxJRkh2VkFwRXlqRS9ocU5TYnJJcitHQjB5WnhsYURoajNTMlpvc0ptN2RsTysrZVk0bzErNE5Vbk4rcwpyNk92V1llUTJwM0RUL2lOOEgwbzlvK201VW1QY0pMODU2ajZhODNEU2VhQ1A4aVpDMXlIR051bzJEUkJUbGMzCmM3VERtVThNZHZFZVUwZlV0dmRaTk9CdnlMTTNQZk1kZEVVL281OWJvZmUrbFFNanQ3ais0OHlld1FtVmdRVm4KVzJrVnA5Q0h1aWJtcS9zYUNnTmNaREhBMkNyNWxvcz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFcFFJQkFBS0NBUUVBdVpYT2xlaWZlSmZVaGRFUU93VHYyQXhkOVdoYWdSNlpFWC9NQ2VJdTBMWUR2TzZ5CllubzgxT3pEQ29oRS9CMTM0bWxDdGJ4Z3JHY1FqY2xPZDQ1SlpzWVpHS2lPcjBCTG1MNHRCVEN5VG10YXRRMXcKTnJxM3R2ZHRnY21qbUg2SytYb21IdDlVcXpXM3BMWWhUa1l6Yzl1aHNJNHlzSHdaWFpxOXd5RkUwaThReE55RQo4VU9oVC9CMjRYLzdXajJYTVpQanVaZGJ0bTgwakhyTVE2WTR1Mm8vRlc5QnI2RWF3UW1XMEYxcXNWVVBaTkpxCnExOUJjVE4yR3FpR0ZxRGYzRmxyMzdkNTFMYzhJTWN4Rm5TM0pidUNBMEkxMisyWkRTQmpSL3lLVXZkNTczT00KMFRtU0NMWFFyVlY2RTFhMGR6V3o4TkgrN3pTdHZ1TmdFeEgrSlFJREFRQUJBb0lCQVFDZ3FEMGtyVEtRVk8vWAp3RHBLdldWY0pLaWFML0paWU1HbDBub3gvQ29HNStxb2ZnTFRHWHJiNFBLZmhZUWl0T2Y1aXFJRGJjWkt1Ull0CmlCMXpoaXVvMnNrUy9hZzNzbk0vRVRNc0VSSHFyU2pqSDNVTEMrekthYnZVNVZmSVJaUE5rSjY3ang1ZThLdS8KM1NOTC9aM0JLRnI2MnI2cTVXT1lFc00venVjakE3M0ZnU3hnamU1T1d3S0VnaWJObHRReEhwNmJES0lqWXZ3WgpKQXltZkNiaW92ZDRBYW1FdUVRWEN6dHJuUnF1dlk0TmNQMnpQdGxDRWdQZG1vaHE0QlFKaWpqaTUvcGl0eGZ4Ci9EUnRSQ1Y4aFBnT0VYZTFSUW1IS2hIaE1Hd2dwVzdIcGRhazBqa0F3Vm5QUm1BS1FQdzk4M2ZIcnRkaGszOHoKaTA3VVVsMXBBb0dCQU5DOW1BdlhmUTZQVnQyTEhuaHFqNk9GUU5lb3J6NkpyYzFINWlHY0tFSURCR0NsblR3bgpXT092a3VSOVZFUUNKUkkwT21MVERVc2VwdGw2c0Jnb1FvWGJGZkJrVmE5WlgyOGNNczcwekZvaEVwNmRDbFptCkkzeHJiWUdNUWJRR25sb2xORms0Y3dkQVIrK1JsQmxJQW96bG92RnFDTVJqdm1tZXlqbUh0U0R2QW9HQkFPT2EKSmFub0k1OG82d2hqRHJJeTkrWnhmNk9HNDJwenZ5aVp4L0gyeVk1d0ZhOWpKMkRPSFgwNEpXSVM5WHc0Uy9QYwo2ZEN2amI5cHJybVljUy9tSGl4NlNudkdVWEVONEpWU2lIOEE0d21udloxNDVHb255V25SWUp2c0xtK1lBeHJFCmVqWS9QU2NoRTNOWlNMa0JzQ2huV1Q5YnN5K1dTWm1aOXJoYkplb3JBb0dCQUxVUmtWL01SL1dtVHpLVUtCVksKVWxrRkVROUJpdXBUb1lqdGNtbjdQRXl1czFCbXVQTGlLdEF1ajl4Vi93K1RVTGJ1eVNyS2FzQ2IwUjNidC83cwpoVy81Y0psN1gzeGdxVkVIZytkVUlDT2FocjFCK2lLaUxPd1RnQVVkTmkxRWhINHJ3YklYTG1pKzBPZTJQMktDCnZYdWRBdkFwQzN2WURlY3V6N3FCeHBQUEFvR0FFQURHcFN1dFZZT0xBd3Z6L0pPWTJwc2dYbDhkbmw2RkVsVzkKdVVXZzVtTDdJMW5WYXZrVEdiclk1Z3h2Tmt5L0NtWitDaTVOeVNlbElXZVdqY2VnVjRCQnZISTFSNzJ5RE0zQQp5eTFFeVdrQjdCQ1QvdUxOUnFOeUo0Unp2MlR3MHZEOXB0TExlZlRaYVVMZDJpUkVQcE1GczI2L0twbG1rMlkvCjhyWjE5QUVDZ1lFQWtTR0dUQVQzL09RdGJ3dXVyZEx6Q1FieGV6OExHYXdYS255Tkx6SkhGT3RSTDU2UW1ZK3MKUlFDZWhtY095dW5yTnZDaFZyNWlpb2RKNzFxenBOY3FLUzV3UEJPMks0aHhuUUNKVW9EZUlkSWFENlVFVzU0YwpRRkIvaDk5M0hyTjJ5UDN5VE1HYmwxWHRrVEt0RTV5ZEVVUkJhbit2VG5RdVZVMVNwQjVwelQ4PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=
18 changes: 4 additions & 14 deletions test/e2e/validatingwebhook/kubeclient.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,6 @@ import (
"context"
"fmt"
"io/ioutil"
"path/filepath"

"github.com/mitchellh/go-homedir"
admissionv1 "k8s.io/api/admissionregistration/v1"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
Expand All @@ -43,26 +40,19 @@ type KubernetesClient struct {
}

// NewKubernetesClient creates a new Kubernetes client
func NewKubernetesClient() (*KubernetesClient, error) {
func NewKubernetesClient(kubeconfig string) (*KubernetesClient, error) {
kubernetesClient := new(KubernetesClient)
var err error
kubernetesClient.client, err = kubernetesClient.getK8sClient()
kubernetesClient.client, err = kubernetesClient.getK8sClient(kubeconfig)
if err != nil {
return nil, err
}
return kubernetesClient, nil
}

// getK8sClient creates a kubernetes clientset with default config path
func (k *KubernetesClient) getK8sClient() (*kubernetes.Clientset, error) {
home, err := homedir.Dir()
if err != nil {
return nil, fmt.Errorf("home directory not found, error: %s", err.Error())
}

configPath := filepath.Join(home, ".kube", "config")

config, err := clientcmd.BuildConfigFromFlags("", configPath)
func (k *KubernetesClient) getK8sClient(kubeconfig string) (*kubernetes.Clientset, error) {
config, err := clientcmd.BuildConfigFromFlags("", kubeconfig)
if err != nil {
return nil, fmt.Errorf("failed to create k8s config, error: %s", err.Error())
}
Expand Down
9 changes: 5 additions & 4 deletions test/e2e/validatingwebhook/validating_webhook_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,28 +51,29 @@ var (
webhookYamlRelPath = filepath.Join("test-data", "yamls", "webhook.yaml")
podYamlRelPath = filepath.Join("test-data", "yamls", "pod.yaml")
serviceYamlPath = filepath.Join("test-data", "yamls", "service.yaml")
kubeConfig = filepath.Join("config_data", "kubeconfig.yaml")
)

var _ = Describe("ValidatingWebhook", func() {

BeforeSuite(func() {

// delete the default cluster if it is already running
err := validatingwebhook.DeleteDefaultKindCluster()
err := validatingwebhook.DeleteDefaultKindCluster(kubeConfig)
if err != nil {
message := fmt.Sprintf("error while deleting cluster. err: %v", err)
Fail(message)
}

// create a new cluster
err = validatingwebhook.CreateDefaultKindCluster()
err = validatingwebhook.CreateDefaultKindCluster(kubeConfig)
if err != nil {
message := fmt.Sprintf("error while creating cluster. err: %v", err)
Fail(message)
}

// get k8s client
kubeClient, err = validatingwebhook.NewKubernetesClient()
kubeClient, err = validatingwebhook.NewKubernetesClient(kubeConfig)
if err != nil {
errMessage := fmt.Sprintf("failed to connected to default k8s cluster, error: %s", err.Error())
Fail(errMessage)
Expand Down Expand Up @@ -101,7 +102,7 @@ var _ = Describe("ValidatingWebhook", func() {
}

// delete the cluster
err := validatingwebhook.DeleteDefaultKindCluster()
err := validatingwebhook.DeleteDefaultKindCluster(kubeConfig)
if err != nil {
message := fmt.Sprintf("error while deleting cluster. err: %v", err)
Fail(message)
Expand Down
8 changes: 4 additions & 4 deletions test/e2e/validatingwebhook/validatingwebhook_utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,8 @@ func CreateCertificate(certsFolder, certFileName, privKeyFileName string) (strin
}

// DeleteDefaultKindCluster deletes the default kind cluster
func DeleteDefaultKindCluster() error {
cmd := exec.Command("kind", "delete", "cluster")
func DeleteDefaultKindCluster(kubeconfig string) error {
cmd := exec.Command("kind", "delete", "cluster", "--kubeconfig", kubeconfig)
cmd.Stderr = os.Stderr
err := cmd.Run()
if err != nil {
Expand All @@ -97,8 +97,8 @@ func DeleteDefaultKindCluster() error {
}

// CreateDefaultKindCluster creates the default kind cluster
func CreateDefaultKindCluster() error {
cmd := exec.Command("kind", "create", "cluster")
func CreateDefaultKindCluster(kubeconfig string) error {
cmd := exec.Command("kind", "create", "cluster", "--kubeconfig", kubeconfig)
cmd.Stderr = os.Stderr
err := cmd.Run()
if err != nil {
Expand Down

0 comments on commit c02f24c

Please sign in to comment.