@@ -4,11 +4,24 @@ package main
44import (
55 "fmt"
66 "os"
7+ "path/filepath"
8+ "time"
79
10+ corev1 "k8s.io/api/core/v1"
11+ metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
12+ "k8s.io/cli-runtime/pkg/genericclioptions"
13+ "k8s.io/client-go/kubernetes"
14+
15+ "github.com/jetstack/kube-oidc-proxy/test/e2e/framework/config"
16+ "github.com/jetstack/kube-oidc-proxy/test/e2e/framework/helper"
817 "github.com/jetstack/kube-oidc-proxy/test/environment"
918 "github.com/jetstack/kube-oidc-proxy/test/kind"
1019)
1120
21+ const (
22+ clientID = "kube-oidc-proxy-e2e-client-id"
23+ )
24+
1225func main () {
1326 if len (os .Args ) != 2 {
1427 errExit (fmt .Errorf ("expecting 2 arguments, got=%d" ,
@@ -18,11 +31,13 @@ func main() {
1831 switch os .Args [1 ] {
1932 case "create" :
2033 create ()
34+ case "deploy" :
35+ deploy ()
2136 case "destroy" :
2237 destroy ()
2338 default :
24- errExit (fmt .Errorf ("unexpected argument %q, expecting %q or %q" ,
25- os .Args [1 ], "create" , "destroy" ))
39+ errExit (fmt .Errorf ("unexpected argument %q, expecting [ %q %q %q] " ,
40+ os .Args [1 ], "create" , "deploy" , " destroy" ))
2641 }
2742
2843 os .Exit (0 )
@@ -32,13 +47,69 @@ func create() {
3247 env , err := environment .Create (1 , 1 )
3348 errExit (err )
3449
35- fmt .Printf ("dev environment created.\n " )
50+ fmt .Printf ("> dev environment created.\n " )
3651 fmt .Printf ("export KUBECONFIG=%s\n " , env .KubeConfigPath ())
3752}
3853
54+ func deploy () {
55+ k := new (kind.Kind )
56+ kubeconfig := k .KubeConfigPath ()
57+ rootPath , err := environment .RootPath ()
58+ errExit (err )
59+
60+ cfg := & config.Config {
61+ KubeConfigPath : kubeconfig ,
62+ RepoRoot : rootPath ,
63+ Kubectl : filepath .Join (rootPath , "bin" , "kubectl" ),
64+ }
65+
66+ err = cfg .Validate ()
67+ errExit (err )
68+
69+ helper := helper .NewHelper (cfg )
70+
71+ clientConfigFlags := genericclioptions .NewConfigFlags (true )
72+ clientConfigFlags .KubeConfig = & kubeconfig
73+ config , err := clientConfigFlags .ToRESTConfig ()
74+ errExit (err )
75+
76+ kubeClient , err := kubernetes .NewForConfig (config )
77+ errExit (err )
78+
79+ helper .KubeClient = kubeClient
80+
81+ ns := & corev1.Namespace {
82+ ObjectMeta : metav1.ObjectMeta {
83+ GenerateName : "kube-oidc-proxy-e2e-" ,
84+ },
85+ }
86+ ns , err = kubeClient .CoreV1 ().Namespaces ().Create (ns )
87+ errExit (err )
88+
89+ fmt .Printf ("> created new namespace %s\n " , ns .Name )
90+
91+ issuerKeyBundle , issuerURL , err := helper .DeployIssuer (ns .Name )
92+ errExit (err )
93+
94+ fmt .Printf ("> deployed issuer at url %s\n " , issuerURL )
95+
96+ _ , proxyURL , err := helper .DeployProxy (ns , issuerURL ,
97+ "kube-oidc-proxy-e2e-client-id" , issuerKeyBundle , nil )
98+ errExit (err )
99+ fmt .Printf ("> deployed proxy at url %s\n " , proxyURL )
100+
101+ tokenPayload := helper .NewTokenPayload (issuerURL , clientID , time .Now ().Add (time .Hour * 48 ))
102+
103+ signedToken , err := helper .SignToken (issuerKeyBundle , tokenPayload )
104+ errExit (err )
105+ fmt .Printf ("> signed token valid for 48 hours:\n %s\n " , signedToken )
106+
107+ fmt .Printf ("export KUBECONFIG=%s\n " , kubeconfig )
108+ }
109+
39110func destroy () {
40111 errExit (kind .DeleteCluster ("kube-oidc-proxy-e2e" ))
41- fmt .Printf ("dev environment destroyed.\n " )
112+ fmt .Printf ("> dev environment destroyed.\n " )
42113}
43114
44115func errExit (err error ) {
0 commit comments