ipn/ipnlocal: fix cert storage in Kubernetes
We were checking against the wrong directory, instead if we
have a custom store configured just use that.
Fixes #7588
Fixes #7665
Signed-off-by: Maisem Ali <maisem@tailscale.com>
(cherry picked from commit 8a11f76a0d
)
pull/7789/head
parent
d47b74e461
commit
26bf7c4dbe
|
@ -212,7 +212,7 @@ tailscale.com/cmd/tailscaled dependencies: (generated by github.com/tailscale/de
|
||||||
tailscale.com/ipn/ipnstate from tailscale.com/control/controlclient+
|
tailscale.com/ipn/ipnstate from tailscale.com/control/controlclient+
|
||||||
tailscale.com/ipn/localapi from tailscale.com/ipn/ipnserver
|
tailscale.com/ipn/localapi from tailscale.com/ipn/ipnserver
|
||||||
tailscale.com/ipn/policy from tailscale.com/ipn/ipnlocal
|
tailscale.com/ipn/policy from tailscale.com/ipn/ipnlocal
|
||||||
tailscale.com/ipn/store from tailscale.com/cmd/tailscaled
|
tailscale.com/ipn/store from tailscale.com/cmd/tailscaled+
|
||||||
L tailscale.com/ipn/store/awsstore from tailscale.com/ipn/store
|
L tailscale.com/ipn/store/awsstore from tailscale.com/ipn/store
|
||||||
L tailscale.com/ipn/store/kubestore from tailscale.com/ipn/store
|
L tailscale.com/ipn/store/kubestore from tailscale.com/ipn/store
|
||||||
tailscale.com/ipn/store/mem from tailscale.com/ipn/store+
|
tailscale.com/ipn/store/mem from tailscale.com/ipn/store+
|
||||||
|
|
|
@ -35,6 +35,8 @@ import (
|
||||||
"tailscale.com/hostinfo"
|
"tailscale.com/hostinfo"
|
||||||
"tailscale.com/ipn"
|
"tailscale.com/ipn"
|
||||||
"tailscale.com/ipn/ipnstate"
|
"tailscale.com/ipn/ipnstate"
|
||||||
|
"tailscale.com/ipn/store"
|
||||||
|
"tailscale.com/ipn/store/mem"
|
||||||
"tailscale.com/types/logger"
|
"tailscale.com/types/logger"
|
||||||
"tailscale.com/version"
|
"tailscale.com/version"
|
||||||
"tailscale.com/version/distro"
|
"tailscale.com/version/distro"
|
||||||
|
@ -150,13 +152,21 @@ type certStore interface {
|
||||||
var errCertExpired = errors.New("cert expired")
|
var errCertExpired = errors.New("cert expired")
|
||||||
|
|
||||||
func (b *LocalBackend) getCertStore() (certStore, error) {
|
func (b *LocalBackend) getCertStore() (certStore, error) {
|
||||||
|
switch b.store.(type) {
|
||||||
|
case *store.FileStore:
|
||||||
|
case *mem.Store:
|
||||||
|
default:
|
||||||
|
if hostinfo.GetEnvType() == hostinfo.Kubernetes {
|
||||||
|
// We're running in Kubernetes with a custom StateStore,
|
||||||
|
// use that instead of the cert directory.
|
||||||
|
// TODO(maisem): expand this to other environments?
|
||||||
|
return certStateStore{StateStore: b.store}, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
dir, err := b.certDir()
|
dir, err := b.certDir()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if hostinfo.GetEnvType() == hostinfo.Kubernetes && dir == "/tmp" {
|
|
||||||
return certStateStore{StateStore: b.store}, nil
|
|
||||||
}
|
|
||||||
return certFileStore{dir: dir}, nil
|
return certFileStore{dir: dir}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -298,7 +298,7 @@ func NewLocalBackend(logf logger.Logf, logid string, store ipn.StateStore, diale
|
||||||
statsLogf: logger.LogOnChange(logf, 5*time.Minute, time.Now),
|
statsLogf: logger.LogOnChange(logf, 5*time.Minute, time.Now),
|
||||||
e: e,
|
e: e,
|
||||||
pm: pm,
|
pm: pm,
|
||||||
store: pm.Store(),
|
store: store,
|
||||||
dialer: dialer,
|
dialer: dialer,
|
||||||
backendLogID: logid,
|
backendLogID: logid,
|
||||||
state: ipn.NoState,
|
state: ipn.NoState,
|
||||||
|
|
Loading…
Reference in New Issue