Use kops-controller to issue kube-router cert

This commit is contained in:
John Gardiner Myers 2020-08-16 22:36:51 -07:00
parent 8e43c1d637
commit b6947ccaee
6 changed files with 21 additions and 7 deletions

View File

@ -168,6 +168,10 @@ func (s *Server) issueCert(name string, pubKey string, id *fi.VerifyResult, vali
issueReq.Subject = pkix.Name{ issueReq.Subject = pkix.Name{
CommonName: rbac.KubeProxy, CommonName: rbac.KubeProxy,
} }
case "kube-router":
issueReq.Subject = pkix.Name{
CommonName: rbac.KubeRouter,
}
default: default:
return "", fmt.Errorf("unexpected key name") return "", fmt.Errorf("unexpected key name")
} }

View File

@ -14,6 +14,7 @@ go_library(
deps = [ deps = [
"//nodeup/pkg/model:go_default_library", "//nodeup/pkg/model:go_default_library",
"//pkg/apis/kops:go_default_library", "//pkg/apis/kops:go_default_library",
"//pkg/rbac:go_default_library",
"//upup/pkg/fi:go_default_library", "//upup/pkg/fi:go_default_library",
"//upup/pkg/fi/nodeup/nodetasks:go_default_library", "//upup/pkg/fi/nodeup/nodetasks:go_default_library",
"//vendor/github.com/aws/aws-sdk-go/aws:go_default_library", "//vendor/github.com/aws/aws-sdk-go/aws:go_default_library",

View File

@ -18,6 +18,7 @@ package networking
import ( import (
"k8s.io/kops/nodeup/pkg/model" "k8s.io/kops/nodeup/pkg/model"
"k8s.io/kops/pkg/rbac"
"k8s.io/kops/upup/pkg/fi" "k8s.io/kops/upup/pkg/fi"
"k8s.io/kops/upup/pkg/fi/nodeup/nodetasks" "k8s.io/kops/upup/pkg/fi/nodeup/nodetasks"
) )
@ -37,14 +38,21 @@ func (b *KuberouterBuilder) Build(c *fi.ModelBuilderContext) error {
return nil return nil
} }
kubeconfig, err := b.BuildPKIKubeconfig("kube-router") var kubeconfig fi.Resource
if err != nil { var err error
return err
if b.IsMaster {
kubeconfig = b.BuildIssuedKubeconfig("kube-router", nodetasks.PKIXName{CommonName: rbac.KubeRouter}, c)
} else {
kubeconfig, err = b.BuildBootstrapKubeconfig("kube-router", c)
if err != nil {
return err
}
} }
c.AddTask(&nodetasks.File{ c.AddTask(&nodetasks.File{
Path: "/var/lib/kube-router/kubeconfig", Path: "/var/lib/kube-router/kubeconfig",
Contents: fi.NewStringResource(kubeconfig), Contents: kubeconfig,
Type: nodetasks.FileType_File, Type: nodetasks.FileType_File,
Mode: fi.String("0400"), Mode: fi.String("0400"),
}) })

View File

@ -474,7 +474,7 @@ func ReadableStatePaths(cluster *kops.Cluster, role kops.InstanceGroupRole) ([]s
if networkingSpec != nil { if networkingSpec != nil {
// @check if kuberoute is enabled and permit access to the private key // @check if kuberoute is enabled and permit access to the private key
if networkingSpec.Kuberouter != nil { if networkingSpec.Kuberouter != nil && !model.UseKopsControllerForNodeBootstrap(cluster) {
paths = append(paths, "/pki/private/kube-router/*") paths = append(paths, "/pki/private/kube-router/*")
} }

View File

@ -140,10 +140,10 @@ func (b *PKIModelBuilder) Build(c *fi.ModelBuilderContext) error {
} }
} }
if b.KopsModelContext.Cluster.Spec.Networking.Kuberouter != nil { if b.KopsModelContext.Cluster.Spec.Networking.Kuberouter != nil && !b.UseKopsControllerForNodeBootstrap() {
t := &fitasks.Keypair{ t := &fitasks.Keypair{
Name: fi.String("kube-router"), Name: fi.String("kube-router"),
Subject: "cn=" + "system:kube-router", Subject: "cn=" + rbac.KubeRouter,
Type: "client", Type: "client",
Signer: defaultCA, Signer: defaultCA,
} }

View File

@ -29,6 +29,7 @@ const (
// core kubernetes process identities // core kubernetes process identities
KubeProxy = "system:kube-proxy" KubeProxy = "system:kube-proxy"
KubeRouter = "system:kube-router"
KubeControllerManager = "system:kube-controller-manager" KubeControllerManager = "system:kube-controller-manager"
KubeScheduler = "system:kube-scheduler" KubeScheduler = "system:kube-scheduler"
) )