Skip to content

Commit 2b6d744

Browse files
author
OpenShift Bot
committed
Merge pull request #9044 from deads2k/service-signer-ca-02
Merged by openshift-bot
2 parents 59ad19d + 0fd084a commit 2b6d744

File tree

3 files changed

+48
-12
lines changed

3 files changed

+48
-12
lines changed

Godeps/_workspace/src/k8s.io/kubernetes/pkg/controller/serviceaccount/tokens_controller.go

+23-9
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/cmd/server/origin/run_components.go

+22-2
Original file line numberDiff line numberDiff line change
@@ -122,10 +122,30 @@ func (c *MasterConfig) RunServiceAccountTokensController(cm *cmapp.CMServer) {
122122
glog.Fatalf("Error parsing master ca file for Service Account Token Manager: %s: %v", c.Options.ServiceAccountConfig.MasterCA, err)
123123
}
124124
}
125+
servingServingCABundle := []byte{}
126+
if c.Options.ControllerConfig.ServiceServingCert.Signer != nil && len(c.Options.ControllerConfig.ServiceServingCert.Signer.CertFile) > 0 {
127+
servingServingCA, err := ioutil.ReadFile(c.Options.ControllerConfig.ServiceServingCert.Signer.CertFile)
128+
if err != nil {
129+
glog.Fatalf("Error reading ca file for Service Serving Certificate Signer: %s: %v", c.Options.ControllerConfig.ServiceServingCert.Signer.CertFile, err)
130+
}
131+
if _, err := kcrypto.CertsFromPEM(servingServingCA); err != nil {
132+
glog.Fatalf("Error parsing ca file for Service Serving Certificate Signer: %s: %v", c.Options.ControllerConfig.ServiceServingCert.Signer.CertFile, err)
133+
}
134+
135+
// if we have a rootCA bundle add that too. The rootCA will be used when hitting the default master service, since those are signed
136+
// using a different CA by default. The rootCA's key is more closely guarded than ours and if it is compromised, that power could
137+
// be used to change the trusted signers for every pod anyway, so we're already effectively trusting it.
138+
if len(rootCA) > 0 {
139+
servingServingCABundle = append(servingServingCABundle, rootCA...)
140+
servingServingCABundle = append(servingServingCABundle, []byte("\n")...)
141+
}
142+
servingServingCABundle = append(servingServingCABundle, servingServingCA...)
143+
}
125144

126145
options := sacontroller.TokensControllerOptions{
127-
TokenGenerator: serviceaccount.JWTTokenGenerator(privateKey),
128-
RootCA: rootCA,
146+
TokenGenerator: serviceaccount.JWTTokenGenerator(privateKey),
147+
RootCA: rootCA,
148+
ServiceServingCA: servingServingCABundle,
129149
}
130150

131151
go sacontroller.NewTokensController(clientadapter.FromUnversionedClient(c.KubeClient()), options).Run(int(cm.ConcurrentSATokenSyncs), utilwait.NeverStop)

test/extended/cmd.sh

+3-1
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,9 @@ os::cmd::expect_success_and_not_text 'oc status' 'pod\/test-deployment-config-1-
178178

179179
# break mac os
180180
service_ip=$(oc get service/nginx -o=jsonpath={.spec.clusterIP})
181-
os::cmd::try_until_success "curl --cacert ${MASTER_CONFIG_DIR}/service-signer.crt --resolve nginx.service-serving-cert-generation.svc:443:${service_ip} https://nginx.service-serving-cert-generation.svc:443"
181+
os::cmd::try_until_success 'oc run --restart=Never --generator=run-pod/v1 --image=centos centos -- bash -c "curl --cacert /var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt https://nginx.service-serving-cert-generation.svc:443"'
182+
os::cmd::try_until_text 'oc get pods/centos -o jsonpath={.status.phase}' "Succeeded"
183+
os::cmd::expect_success_and_text 'oc logs pods/centos' "Welcome to nginx"
182184
os::test::junit::declare_suite_end
183185

184186
os::test::junit::declare_suite_end

0 commit comments

Comments
 (0)