Skip to content

Commit 89f91df

Browse files
committed
Use SubscribeToLocalBundle UpstreamAuthority RPC if available
Signed-off-by: Sorin Dumitru <[email protected]>
1 parent 472ed91 commit 89f91df

File tree

3 files changed

+39
-0
lines changed

3 files changed

+39
-0
lines changed

pkg/server/ca/manager/manager.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ type AuthorityManager interface {
7171
IsUpstreamAuthority() bool
7272
PublishJWTKey(ctx context.Context, jwtKey *common.PublicKey) ([]*common.PublicKey, error)
7373
NotifyTaintedX509Authority(ctx context.Context, authorityID string) error
74+
SubscribeToLocalBundle(ctx context.Context) error
7475
}
7576

7677
type Config struct {
@@ -434,6 +435,7 @@ func (m *Manager) PublishJWTKey(ctx context.Context, jwtKey *common.PublicKey) (
434435
})
435436
case err != nil:
436437
return nil, err
438+
437439
default:
438440
return upstreamJWTKeys, nil
439441
}
@@ -447,6 +449,22 @@ func (m *Manager) PublishJWTKey(ctx context.Context, jwtKey *common.PublicKey) (
447449
return bundle.JwtSigningKeys, nil
448450
}
449451

452+
func (m *Manager) SubscribeToLocalBundle(ctx context.Context) error {
453+
if m.upstreamClient == nil {
454+
return nil
455+
}
456+
457+
err := m.upstreamClient.SubscribeToLocalBundle(ctx)
458+
switch {
459+
case status.Code(err) == codes.Unimplemented:
460+
return nil
461+
case err != nil:
462+
return err
463+
default:
464+
return nil
465+
}
466+
}
467+
450468
func (m *Manager) PruneBundle(ctx context.Context) (err error) {
451469
counter := telemetry_server.StartCAManagerPruneBundleCall(m.c.Metrics)
452470
defer counter.Done(&err)

pkg/server/ca/rotator/rotator.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ type CAManager interface {
3737
ActivateJWTKey(ctx context.Context)
3838
RotateJWTKey(ctx context.Context)
3939

40+
SubscribeToLocalBundle(ctx context.Context) error
41+
4042
PruneBundle(ctx context.Context) error
4143
PruneCAJournals(ctx context.Context) error
4244
}
@@ -77,10 +79,25 @@ func (r *Rotator) Run(ctx context.Context) error {
7779
if err := r.c.Manager.NotifyBundleLoaded(ctx); err != nil {
7880
return err
7981
}
82+
8083
err := util.RunTasks(ctx,
8184
func(ctx context.Context) error {
8285
return r.rotateEvery(ctx, rotateInterval)
8386
},
87+
func(ctx context.Context) error {
88+
var lastError error
89+
for {
90+
select {
91+
case <-ctx.Done():
92+
return lastError
93+
case <-time.After(5 * time.Second):
94+
lastError = r.c.Manager.SubscribeToLocalBundle(ctx)
95+
if lastError == nil {
96+
return nil
97+
}
98+
}
99+
}
100+
},
84101
func(ctx context.Context) error {
85102
return r.pruneBundleEvery(ctx, pruneBundleInterval)
86103
},

pkg/server/ca/rotator/rotator_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -506,6 +506,10 @@ func (f *fakeCAManager) RotateJWTKey(context.Context) {
506506
f.jwtKeyCh <- struct{}{}
507507
}
508508

509+
func (f *fakeCAManager) SubscribeToLocalBundle(ctx context.Context) error {
510+
return nil
511+
}
512+
509513
func (f *fakeCAManager) PruneBundle(context.Context) error {
510514
defer func() {
511515
f.pruneBundleCh <- struct{}{}

0 commit comments

Comments
 (0)