Skip to content

Commit

Permalink
append AdditionalServiceAccountIssuers flags
Browse files Browse the repository at this point in the history
zetaab committed Apr 29, 2024
1 parent 496b7f5 commit a35c4f3
Showing 6 changed files with 10 additions and 66 deletions.
27 changes: 3 additions & 24 deletions nodeup/pkg/model/kube_apiserver.go
Original file line number Diff line number Diff line change
@@ -678,7 +678,9 @@ func (b *KubeAPIServerBuilder) buildPod(ctx context.Context, kubeAPIServer *kops
"/usr/local/bin/kube-apiserver",
}
container.Args = append(container.Args, sortedStrings(flags)...)
container.Args = sortServiceAccountIssuers(container.Args, fi.ValueOf(kubeAPIServer.ServiceAccountIssuer), kubeAPIServer.AdditionalServiceAccountIssuers)
for _, issuer := range kubeAPIServer.AdditionalServiceAccountIssuers {
container.Args = append(container.Args, "--service-account-issuer="+issuer)
}
}

for _, path := range b.SSLHostPaths() {
@@ -756,26 +758,3 @@ func (b *KubeAPIServerBuilder) buildAnnotations() map[string]string {

return annotations
}

func sortServiceAccountIssuers(in []string, currentIssuer string, oldIssuers []string) []string {
if len(oldIssuers) == 0 {
return in
}

positionMap := make(map[int]string)
positionMap[0] = fmt.Sprintf("--service-account-issuer=%s", currentIssuer)
for k, v := range oldIssuers {
positionMap[k+1] = fmt.Sprintf("--service-account-issuer=%s", v)
}

out := make([]string, 0, len(in))
issuerPosition := 0
for _, flag := range in {
if strings.HasPrefix(flag, "--service-account-issuer=") {
flag = positionMap[issuerPosition]
issuerPosition++
}
out = append(out, flag)
}
return out
}
35 changes: 0 additions & 35 deletions nodeup/pkg/model/kube_apiserver_test.go
Original file line number Diff line number Diff line change
@@ -19,7 +19,6 @@ package model
import (
"testing"

"github.com/stretchr/testify/assert"
"k8s.io/kops/pkg/apis/kops"
"k8s.io/kops/pkg/flagbuilder"
"k8s.io/kops/upup/pkg/fi"
@@ -198,37 +197,3 @@ func TestKubeAPIServerBuilderARM64(t *testing.T) {
return builder.Build(target)
})
}

func TestSortServiceAccountIssuers(t *testing.T) {
type testCase struct {
name string
flags []string
currentIssuer string
oldIssuers []string
expected []string
}

testCases := []testCase{
{
name: "flags without old issuers",
flags: []string{"--bar=foo", "--service-account-issuer=https://foo"},
currentIssuer: "https://foo",
oldIssuers: nil,
expected: []string{"--bar=foo", "--service-account-issuer=https://foo"},
},
{
name: "flags without with old issuers",
flags: []string{"--bar=foo", "--service-account-issuer=https://aa", "--service-account-issuer=https://bar", "--service-account-issuer=https://foo", "--zz=zz"},
currentIssuer: "https://foo",
oldIssuers: []string{"https://aa", "https://bar"},
expected: []string{"--bar=foo", "--service-account-issuer=https://foo", "--service-account-issuer=https://aa", "--service-account-issuer=https://bar", "--zz=zz"},
},
}

for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
actual := sortServiceAccountIssuers(tc.flags, tc.currentIssuer, tc.oldIssuers)
assert.Equal(t, tc.expected, actual)
})
}
}
8 changes: 4 additions & 4 deletions nodeup/pkg/model/tests/golden/oidc/tasks-kube-apiserver.yaml
Original file line number Diff line number Diff line change
@@ -53,10 +53,6 @@ contents: |
- --requestheader-username-headers=X-Remote-User
- --secure-port=443
- --service-account-issuer=https://huh.com/multisaissuer.example.com
- --service-account-issuer=https://foobar.com
- --service-account-issuer=https://aaa.com
- --service-account-issuer=https://hello.com
- --service-account-issuer=https://dorld.com
- --service-account-jwks-uri=https://huh.com/multisaissuer.example.com/openid/v1/jwks
- --service-account-key-file=/srv/kubernetes/kube-apiserver/service-account.pub
- --service-account-signing-key-file=/srv/kubernetes/kube-apiserver/service-account.key
@@ -65,6 +61,10 @@ contents: |
- --tls-cert-file=/srv/kubernetes/kube-apiserver/server.crt
- --tls-private-key-file=/srv/kubernetes/kube-apiserver/server.key
- --v=2
- --service-account-issuer=https://foobar.com
- --service-account-issuer=https://aaa.com
- --service-account-issuer=https://hello.com
- --service-account-issuer=https://dorld.com
command:
- /go-runner
image: registry.k8s.io/kube-apiserver:v1.28.0
2 changes: 1 addition & 1 deletion pkg/apis/kops/componentconfig.go
Original file line number Diff line number Diff line change
@@ -501,7 +501,7 @@ type KubeAPIServerConfig struct {
ServiceAccountIssuer *string `json:"serviceAccountIssuer,omitempty" flag:"service-account-issuer"`

// AdditionalServiceAccountIssuers can contain additional service account token issuers.
AdditionalServiceAccountIssuers []string `json:"additionalServiceAccountIssuers,omitempty" flag:"service-account-issuer,repeat"`
AdditionalServiceAccountIssuers []string `json:"additionalServiceAccountIssuers,omitempty"`

// ServiceAccountJWKSURI overrides the path for the jwks document; this is useful when we are republishing the service account discovery information elsewhere.
ServiceAccountJWKSURI *string `json:"serviceAccountJWKSURI,omitempty" flag:"service-account-jwks-uri"`
2 changes: 1 addition & 1 deletion pkg/apis/kops/v1alpha2/componentconfig.go
Original file line number Diff line number Diff line change
@@ -508,7 +508,7 @@ type KubeAPIServerConfig struct {
ServiceAccountIssuer *string `json:"serviceAccountIssuer,omitempty" flag:"service-account-issuer"`

// AdditionalServiceAccountIssuers can contain additional service account token issuers.
AdditionalServiceAccountIssuers []string `json:"additionalServiceAccountIssuers,omitempty" flag:"service-account-issuer,repeat"`
AdditionalServiceAccountIssuers []string `json:"additionalServiceAccountIssuers,omitempty"`

// ServiceAccountJWKSURI overrides the path for the jwks document; this is useful when we are republishing the service account discovery information elsewhere.
ServiceAccountJWKSURI *string `json:"serviceAccountJWKSURI,omitempty" flag:"service-account-jwks-uri"`
2 changes: 1 addition & 1 deletion pkg/apis/kops/v1alpha3/componentconfig.go
Original file line number Diff line number Diff line change
@@ -499,7 +499,7 @@ type KubeAPIServerConfig struct {
ServiceAccountIssuer *string `json:"serviceAccountIssuer,omitempty" flag:"service-account-issuer"`

// AdditionalServiceAccountIssuers can contain additional service account token issuers.
AdditionalServiceAccountIssuers []string `json:"additionalServiceAccountIssuers,omitempty" flag:"service-account-issuer,repeat"`
AdditionalServiceAccountIssuers []string `json:"additionalServiceAccountIssuers,omitempty"`

// ServiceAccountJWKSURI overrides the path for the jwks document; this is useful when we are republishing the service account discovery information elsewhere.
ServiceAccountJWKSURI *string `json:"serviceAccountJWKSURI,omitempty" flag:"service-account-jwks-uri"`

0 comments on commit a35c4f3

Please sign in to comment.