github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/topgun/k8s/external_worker_test.go (about) 1 package k8s_test 2 3 import ( 4 "time" 5 6 . "github.com/pf-qiu/concourse/v6/topgun" 7 . "github.com/onsi/ginkgo" 8 . "github.com/onsi/gomega" 9 ) 10 11 var _ = Describe("external workers through separate deployments", func() { 12 13 const publicKey = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC496FSYFcBAKgDtMsBAJiF/6/NxlXKP5UZecyEsedYuTt1GOgJTwaA1qZ1LmHsbfLDE68oDdiM4uvxfI4wtLhz57w3u0jOUxZ2JeF7SVwEf1nVqLn4Gh/f8GUNQGSyIp1zUD5Bx9fq0PAyQ47mt7Ufi84rcf8LKl7nzAIHTcdg2BvTkQN9bUGPaq/Pb1W2bKPAQy4OzXTSIyrAJ89TH2jFeaZfyxQFGbD9jVHH/yl0oiMrDeaRYgccE5II+KY7WoLjsBry/9Qf2ERELKTK4UeIGIqWci9lab1ti+GxFPPiC3krNFjo4jShV4eUs4cNIrjwNrxVaKPXmU6o7Y3Hpayx Concourse" 14 15 var ( 16 atc Endpoint 17 18 workerKey string 19 tsaPort string 20 webDeployArgs []string 21 workerDeployArgs []string 22 ) 23 24 JustBeforeEach(func() { 25 setReleaseNameAndNamespace("xw") 26 27 By("creating a web only deployment in one namespace") 28 tsaPort = "2222" 29 helmArgs := append(webDeployArgs, 30 "--set=worker.enabled=false", 31 "--set=web.tsa.bindPort="+tsaPort, 32 ) 33 deployConcourseChart(releaseName+"-web", helmArgs...) 34 35 By("creating a worker only deployment in another namespace") 36 helmArgs = append(workerDeployArgs, 37 "--set=postgresql.enabled=false", 38 "--set=web.enabled=false", 39 "--set=worker.replicas=1", 40 "--set=concourse.worker.tsa.hosts[0]="+releaseName+"-web-web-worker-gateway."+releaseName+"-web.svc.cluster.local:"+tsaPort, 41 ) 42 deployConcourseChart(releaseName+"-worker", helmArgs...) 43 44 waitAllPodsInNamespaceToBeReady(namespace + "-worker") 45 waitAllPodsInNamespaceToBeReady(namespace + "-web") 46 47 atc = endpointFactory.NewServiceEndpoint( 48 namespace+"-web", 49 releaseName+"-web-web", 50 "8080", 51 ) 52 53 fly.Login("test", "test", "http://"+atc.Address()) 54 55 }) 56 57 var waitForRunningWorker = func() { 58 By("waiting for a running worker") 59 Eventually(func() []Worker { 60 return getRunningWorkers(fly.GetWorkers()) 61 }, 2*time.Minute, 10*time.Second). 62 Should(HaveLen(1)) 63 } 64 65 var workerDoesntRegister = func() { 66 By("worker never registers") 67 Consistently(func() []Worker { 68 return getRunningWorkers(fly.GetWorkers()) 69 }, 1*time.Minute, 10*time.Second). 70 Should(HaveLen(0)) 71 } 72 73 AfterEach(func() { 74 atc.Close() 75 cleanupReleases() 76 }) 77 78 Context("main team worker, webs only allow team workers", func() { 79 invalidGenericKey := "ssh-rsa ABCD1234 OnlyTeamWorkers" 80 Context("web with correct public key", func() { 81 BeforeEach(func() { 82 workerKey = publicKey 83 webDeployArgs = []string{ 84 "--set=secrets.teamAuthorizedKeys[0].team=main", 85 "--set=secrets.teamAuthorizedKeys[0].key=" + workerKey, 86 "--set=secrets.workerKeyPub=" + invalidGenericKey, 87 } 88 workerDeployArgs = []string{ 89 "--set=concourse.worker.team=main", 90 } 91 }) 92 93 It("worker registers with team main", func() { 94 waitForRunningWorker() 95 worker := getRunningWorkers(fly.GetWorkers()) 96 Expect(worker[0].Team).To(Equal("main")) 97 }) 98 }) 99 100 Context("web with invalid public key", func() { 101 BeforeEach(func() { 102 workerKey = "ssh-rsa 1234ABCD Concourse" 103 webDeployArgs = []string{ 104 "--set=secrets.teamAuthorizedKeys[0].team=main", 105 "--set=secrets.teamAuthorizedKeys[0].key=" + workerKey, 106 "--set=secrets.workerKeyPub=" + invalidGenericKey, 107 } 108 workerDeployArgs = []string{ 109 "--set=concourse.worker.team=main", 110 } 111 }) 112 113 It("worker doesn't register", func() { 114 workerDoesntRegister() 115 }) 116 }) 117 }) 118 119 Context("generic worker", func() { 120 Context("web with correct public key", func() { 121 BeforeEach(func() { 122 workerDeployArgs = []string{} 123 webDeployArgs = []string{} 124 }) 125 126 It("worker registers with atc", func() { 127 waitForRunningWorker() 128 worker := getRunningWorkers(fly.GetWorkers()) 129 Expect(worker[0].Team).To(Equal("")) 130 }) 131 }) 132 133 Context("web with invalid public key", func() { 134 BeforeEach(func() { 135 workerKey = "ssh-rsa 1234ABCD Concourse" 136 webDeployArgs = []string{ 137 "--set=secrets.workerKeyPub=" + workerKey, 138 } 139 }) 140 141 It("worker doesn't register", func() { 142 workerDoesntRegister() 143 }) 144 }) 145 }) 146 })