Skip to content

Commit 840bea6

Browse files
authored
Merge pull request #1745 from fluxcd/token-cache
Introduce token cache and use it for GitHub App tokens
2 parents 9dedced + 9593041 commit 840bea6

File tree

4 files changed

+59
-23
lines changed

4 files changed

+59
-23
lines changed

go.mod

+8-7
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ require (
1313
cloud.google.com/go/storage v1.48.0
1414
github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6
1515
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.17.0
16-
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.1
16+
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.2
1717
github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.5.0
1818
github.com/Masterminds/semver/v3 v3.3.1
1919
github.com/cyphar/filepath-securejoin v0.4.1
@@ -24,7 +24,8 @@ require (
2424
github.com/fluxcd/cli-utils v0.36.0-flux.12
2525
github.com/fluxcd/pkg/apis/event v0.16.0
2626
github.com/fluxcd/pkg/apis/meta v1.10.0
27-
github.com/fluxcd/pkg/auth v0.3.0
27+
github.com/fluxcd/pkg/auth v0.8.0
28+
github.com/fluxcd/pkg/cache v0.7.0
2829
github.com/fluxcd/pkg/git v0.24.0
2930
github.com/fluxcd/pkg/git/gogit v0.24.0
3031
github.com/fluxcd/pkg/gittestserver v0.16.0
@@ -61,7 +62,7 @@ require (
6162
github.com/sigstore/sigstore v1.8.15
6263
github.com/sirupsen/logrus v1.9.3
6364
github.com/spf13/pflag v1.0.6
64-
golang.org/x/crypto v0.33.0
65+
golang.org/x/crypto v0.34.0
6566
golang.org/x/oauth2 v0.26.0
6667
golang.org/x/sync v0.11.0
6768
google.golang.org/api v0.211.0
@@ -98,7 +99,7 @@ require (
9899
github.com/Azure/go-autorest/logger v0.2.1 // indirect
99100
github.com/Azure/go-autorest/tracing v0.6.0 // indirect
100101
github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358 // indirect
101-
github.com/AzureAD/microsoft-authentication-library-for-go v1.3.3 // indirect
102+
github.com/AzureAD/microsoft-authentication-library-for-go v1.4.0 // indirect
102103
github.com/BurntSushi/toml v1.4.0 // indirect
103104
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.24.1 // indirect
104105
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 // indirect
@@ -142,7 +143,7 @@ require (
142143
github.com/beorn7/perks v1.0.1 // indirect
143144
github.com/blang/semver v3.5.1+incompatible // indirect
144145
github.com/blang/semver/v4 v4.0.0 // indirect
145-
github.com/bradleyfalzon/ghinstallation/v2 v2.13.0 // indirect
146+
github.com/bradleyfalzon/ghinstallation/v2 v2.14.0 // indirect
146147
github.com/bshuster-repo/logrus-logstash-hook v1.0.0 // indirect
147148
github.com/buildkite/agent/v3 v3.81.0 // indirect
148149
github.com/buildkite/go-pipeline v0.13.1 // indirect
@@ -227,10 +228,10 @@ require (
227228
github.com/google/btree v1.1.3 // indirect
228229
github.com/google/certificate-transparency-go v1.2.1 // indirect
229230
github.com/google/gnostic-models v0.6.9 // indirect
230-
github.com/google/go-cmp v0.6.0 // indirect
231+
github.com/google/go-cmp v0.7.0 // indirect
231232
github.com/google/go-containerregistry/pkg/authn/kubernetes v0.0.0-20230516205744-dbecb1de8cfa // indirect
232233
github.com/google/go-github/v55 v55.0.0 // indirect
233-
github.com/google/go-github/v68 v68.0.0 // indirect
234+
github.com/google/go-github/v69 v69.2.0 // indirect
234235
github.com/google/go-querystring v1.1.0 // indirect
235236
github.com/google/gofuzz v1.2.0 // indirect
236237
github.com/google/s2a-go v0.1.8 // indirect

go.sum

+18-15
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,10 @@ github.com/Azure/azure-sdk-for-go v68.0.0+incompatible h1:fcYLmCpyNYRnvJbPerq7U0
4141
github.com/Azure/azure-sdk-for-go v68.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
4242
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.17.0 h1:g0EZJwz7xkXQiZAI5xi9f3WWFYBlX1CPTrR+NDToRkQ=
4343
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.17.0/go.mod h1:XCW7KnZet0Opnr7HccfUw1PLc4CjHqpcaxW8DHklNkQ=
44-
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.1 h1:1mvYtZfWQAnwNah/C+Z+Jb9rQH95LPE2vlmMuWAHJk8=
45-
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.1/go.mod h1:75I/mXtme1JyWFtz8GocPHVFyH421IBoZErnO16dd0k=
46-
github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.1 h1:Bk5uOhSAenHyR5P61D/NzeQCv+4fEVV8mOkJ82NqpWw=
47-
github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.1/go.mod h1:QZ4pw3or1WPmRBxf0cHd1tknzrT54WPBOQoGutCPvSU=
44+
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.2 h1:F0gBpfdPLGsw+nsgk6aqqkZS1jiixa5WwFe3fk/T3Ys=
45+
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.2/go.mod h1:SqINnQ9lVVdRlyC8cd1lCI0SdX4n2paeABd2K8ggfnE=
46+
github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2 h1:yz1bePFlP5Vws5+8ez6T3HWXPmwOK7Yvq8QxDBD3SKY=
47+
github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2/go.mod h1:Pa9ZNPuoNu/GztvBSKk9J1cDJW6vk/n0zLtV4mgd8N8=
4848
github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 h1:ywEEhmNahHBihViHepv3xPBn1663uRv2t2q/ESv9seY=
4949
github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0/go.mod h1:iZDifYGJTIgIIkYRNWPENUnqx6bJ2xnSDFI2tjwZNuY=
5050
github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.6.0 h1:PiSrjRPpkQNjrM8H0WwKMnZUdu1RGMtd/LdGKUrOo+c=
@@ -84,8 +84,8 @@ github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358 h1:mFRzDkZVAjdal+
8484
github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU=
8585
github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1 h1:WJTmL004Abzc5wDB5VtZG2PJk5ndYDgVacGqfirKxjM=
8686
github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1/go.mod h1:tCcJZ0uHAmvjsVYzEFivsRTN00oz5BEsRgQHu5JZ9WE=
87-
github.com/AzureAD/microsoft-authentication-library-for-go v1.3.3 h1:H5xDQaE3XowWfhZRUpnfC+rGZMEVoSiji+b+/HFAPU4=
88-
github.com/AzureAD/microsoft-authentication-library-for-go v1.3.3/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
87+
github.com/AzureAD/microsoft-authentication-library-for-go v1.4.0 h1:MUkXAnvvDHgvPItl0nBj0hgk0f7hnnQbGm0h0+YxbN4=
88+
github.com/AzureAD/microsoft-authentication-library-for-go v1.4.0/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI=
8989
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
9090
github.com/BurntSushi/toml v1.4.0 h1:kuoIxZQy2WRRk1pttg9asf+WVv6tWQuBNVmK8+nqPr0=
9191
github.com/BurntSushi/toml v1.4.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
@@ -222,8 +222,8 @@ github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdn
222222
github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
223223
github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
224224
github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
225-
github.com/bradleyfalzon/ghinstallation/v2 v2.13.0 h1:5FhjW93/YLQJDmPdeyMPw7IjAPzqsr+0jHPfrPz0sZI=
226-
github.com/bradleyfalzon/ghinstallation/v2 v2.13.0/go.mod h1:EJ6fgedVEHa2kUyBTTvslJCXJafS/mhJNNKEOCspZXQ=
225+
github.com/bradleyfalzon/ghinstallation/v2 v2.14.0 h1:0D4vKCHOvYrDU8u61TnE2JfNT4VRrBLphmxtqazTO+M=
226+
github.com/bradleyfalzon/ghinstallation/v2 v2.14.0/go.mod h1:LOVmdZYVZ8jqdr4n9wWm1ocDiMz9IfMGfRkaYC1a52A=
227227
github.com/bshuster-repo/logrus-logstash-hook v1.0.0 h1:e+C0SB5R1pu//O4MQ3f9cFuPGoOVeF2fE4Og9otCc70=
228228
github.com/bshuster-repo/logrus-logstash-hook v1.0.0/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk=
229229
github.com/bsm/ginkgo/v2 v2.7.0/go.mod h1:AiKlXPm7ItEHNc/2+OkrNG4E0ITzojb9/xWzvQ9XZ9w=
@@ -374,8 +374,10 @@ github.com/fluxcd/pkg/apis/event v0.16.0 h1:ffKc/3erowPnh72lFszz7sPQhLZ7bhqNrq+p
374374
github.com/fluxcd/pkg/apis/event v0.16.0/go.mod h1:D/QQi5lHT9/Ur3OMFLJO71D4KDQHbJ5s8dQV3h1ZAT0=
375375
github.com/fluxcd/pkg/apis/meta v1.10.0 h1:rqbAuyl5ug7A5jjRf/rNwBXmNl6tJ9wG2iIsriwnQUk=
376376
github.com/fluxcd/pkg/apis/meta v1.10.0/go.mod h1:n7NstXHDaleAUMajcXTVkhz0MYkvEXy1C/eLI/t1xoI=
377-
github.com/fluxcd/pkg/auth v0.3.0 h1:I1A3e81O+bpAgEcJ3e+rXqObKPjzBu6FLYXQTSxXLOs=
378-
github.com/fluxcd/pkg/auth v0.3.0/go.mod h1:g9KJ4iNcCd6Sb7al4yN1+olgOfgwmU4lgCWbwvMsFRE=
377+
github.com/fluxcd/pkg/auth v0.8.0 h1:E5iDhsomYBZKOA2XkVW1/DZFGeMLJ4TFDV0C5xCBJi0=
378+
github.com/fluxcd/pkg/auth v0.8.0/go.mod h1:St5N+xY4KXDTFvuP8UMlgWkaZv6cpU+CQ9SL7Z0bsJg=
379+
github.com/fluxcd/pkg/cache v0.7.0 h1:6TTWbxCyAxErIAT338KrLTy96ds+vSDw4sEyypSISfs=
380+
github.com/fluxcd/pkg/cache v0.7.0/go.mod h1:EHpyMSXf/ECKIoKEQmNCOesH2wfAdpmXR/ZXD6VwWRg=
379381
github.com/fluxcd/pkg/git v0.24.0 h1:aMAL8MUNPZXyRia+LVVudTpmLHIpzmz9F5tedvhhLzs=
380382
github.com/fluxcd/pkg/git v0.24.0/go.mod h1:vxUhjBwnkvbAByN7UC5Go33/mgrLSIIg1rH+dyOZVRo=
381383
github.com/fluxcd/pkg/git/gogit v0.24.0 h1:i59dkijZZ+IfsI++tDFzTmGvi8VqeenvSijRy8pd8ts=
@@ -541,8 +543,9 @@ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
541543
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
542544
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
543545
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
544-
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
545546
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
547+
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
548+
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
546549
github.com/google/go-containerregistry v0.20.3 h1:oNx7IdTI936V8CQRveCjaxOiegWwvM7kqkbXTpyiovI=
547550
github.com/google/go-containerregistry v0.20.3/go.mod h1:w00pIgBRDVUDFM6bq+Qx8lwNWK+cxgCuX1vd3PIBDNI=
548551
github.com/google/go-containerregistry/pkg/authn/k8schain v0.0.0-20241111191718-6bce25ecf029 h1:0G7T22yXy+FqumvxcEg48EU4llskcDeQ2eM3vaTr64c=
@@ -551,8 +554,8 @@ github.com/google/go-containerregistry/pkg/authn/kubernetes v0.0.0-2023051620574
551554
github.com/google/go-containerregistry/pkg/authn/kubernetes v0.0.0-20230516205744-dbecb1de8cfa/go.mod h1:KdL98/Va8Dy1irB6lTxIRIQ7bQj4lbrlvqUzKEQ+ZBU=
552555
github.com/google/go-github/v55 v55.0.0 h1:4pp/1tNMB9X/LuAhs5i0KQAE40NmiR/y6prLNb9x9cg=
553556
github.com/google/go-github/v55 v55.0.0/go.mod h1:JLahOTA1DnXzhxEymmFF5PP2tSS9JVNj68mSZNDwskA=
554-
github.com/google/go-github/v68 v68.0.0 h1:ZW57zeNZiXTdQ16qrDiZ0k6XucrxZ2CGmoTvcCyQG6s=
555-
github.com/google/go-github/v68 v68.0.0/go.mod h1:K9HAUBovM2sLwM408A18h+wd9vqdLOEqTUCbnRIcx68=
557+
github.com/google/go-github/v69 v69.2.0 h1:wR+Wi/fN2zdUx9YxSmYE0ktiX9IAR/BeePzeaUUbEHE=
558+
github.com/google/go-github/v69 v69.2.0/go.mod h1:xne4jymxLR6Uj9b7J7PyTpkMYstEMMwGZa0Aehh1azM=
556559
github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8=
557560
github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
558561
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
@@ -1123,8 +1126,8 @@ golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72
11231126
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
11241127
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
11251128
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
1126-
golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus=
1127-
golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M=
1129+
golang.org/x/crypto v0.34.0 h1:+/C6tk6rf/+t5DhUketUbD1aNGqiSX3j15Z6xuIDlBA=
1130+
golang.org/x/crypto v0.34.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ=
11281131
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
11291132
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8=
11301133
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY=

internal/controller/gitrepository_controller.go

+10
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ import (
4747

4848
eventv1 "github.com/fluxcd/pkg/apis/event/v1beta1"
4949
"github.com/fluxcd/pkg/apis/meta"
50+
"github.com/fluxcd/pkg/cache"
5051
"github.com/fluxcd/pkg/git"
5152
"github.com/fluxcd/pkg/git/gogit"
5253
"github.com/fluxcd/pkg/git/repository"
@@ -136,11 +137,14 @@ type GitRepositoryReconciler struct {
136137
features map[string]bool
137138

138139
patchOptions []patch.Option
140+
141+
tokenCache *cache.TokenCache
139142
}
140143

141144
type GitRepositoryReconcilerOptions struct {
142145
DependencyRequeueInterval time.Duration
143146
RateLimiter workqueue.TypedRateLimiter[reconcile.Request]
147+
TokenCache *cache.TokenCache
144148
}
145149

146150
// gitRepositoryReconcileFunc is the function type for all the
@@ -160,6 +164,8 @@ func (r *GitRepositoryReconciler) SetupWithManagerAndOptions(mgr ctrl.Manager, o
160164
r.features = features.FeatureGates()
161165
}
162166

167+
r.tokenCache = opts.TokenCache
168+
163169
return ctrl.NewControllerManagedBy(mgr).
164170
For(&sourcev1.GitRepository{}, builder.WithPredicates(
165171
predicate.Or(predicate.GenerationChangedPredicate{}, predicates.ReconcileRequestedPredicate{}),
@@ -677,6 +683,7 @@ func (r *GitRepositoryReconciler) getAuthOpts(ctx context.Context, obj *sourcev1
677683
Name: sourcev1.GitProviderGitHub,
678684
GitHubOpts: []github.OptFunc{
679685
github.WithAppData(authData),
686+
github.WithCache(r.tokenCache, sourcev1.GitRepositoryKind, obj.GetName(), obj.GetNamespace()),
680687
},
681688
}
682689
default:
@@ -1089,6 +1096,9 @@ func (r *GitRepositoryReconciler) reconcileDelete(ctx context.Context, obj *sour
10891096
// Remove our finalizer from the list
10901097
controllerutil.RemoveFinalizer(obj, sourcev1.SourceFinalizer)
10911098

1099+
// Cleanup caches.
1100+
r.tokenCache.DeleteEventsForObject(sourcev1.GitRepositoryKind, obj.GetName(), obj.GetNamespace())
1101+
10921102
// Stop reconciliation as the object is being deleted
10931103
return sreconcile.ResultEmpty, nil
10941104
}

main.go

+23-1
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,10 @@ import (
3636
ctrlcache "sigs.k8s.io/controller-runtime/pkg/cache"
3737
ctrlclient "sigs.k8s.io/controller-runtime/pkg/client"
3838
ctrlcfg "sigs.k8s.io/controller-runtime/pkg/config"
39+
ctrlmetrics "sigs.k8s.io/controller-runtime/pkg/metrics"
3940
metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server"
4041

42+
pkgcache "github.com/fluxcd/pkg/cache"
4143
"github.com/fluxcd/pkg/git"
4244
"github.com/fluxcd/pkg/runtime/client"
4345
helper "github.com/fluxcd/pkg/runtime/controller"
@@ -50,7 +52,7 @@ import (
5052
"github.com/fluxcd/pkg/runtime/pprof"
5153
"github.com/fluxcd/pkg/runtime/probes"
5254

53-
"github.com/fluxcd/source-controller/api/v1"
55+
v1 "github.com/fluxcd/source-controller/api/v1"
5456
"github.com/fluxcd/source-controller/api/v1beta2"
5557

5658
// +kubebuilder:scaffold:imports
@@ -89,6 +91,10 @@ func init() {
8991
}
9092

9193
func main() {
94+
const (
95+
tokenCacheDefaultMaxSize = 0
96+
)
97+
9298
var (
9399
metricsAddr string
94100
eventsAddr string
@@ -114,6 +120,7 @@ func main() {
114120
artifactRetentionTTL time.Duration
115121
artifactRetentionRecords int
116122
artifactDigestAlgo string
123+
tokenCacheOptions pkgcache.TokenFlags
117124
)
118125

119126
flag.StringVar(&metricsAddr, "metrics-addr", envOrDefault("METRICS_ADDR", ":8080"),
@@ -160,6 +167,7 @@ func main() {
160167
featureGates.BindFlags(flag.CommandLine)
161168
watchOptions.BindFlags(flag.CommandLine)
162169
intervalJitterOptions.BindFlags(flag.CommandLine)
170+
tokenCacheOptions.BindFlags(flag.CommandLine, tokenCacheDefaultMaxSize)
163171

164172
flag.Parse()
165173

@@ -187,6 +195,19 @@ func main() {
187195
mustSetupHelmLimits(helmIndexLimit, helmChartLimit, helmChartFileLimit)
188196
helmIndexCache, helmIndexCacheItemTTL := mustInitHelmCache(helmCacheMaxSize, helmCacheTTL, helmCachePurgeInterval)
189197

198+
var tokenCache *pkgcache.TokenCache
199+
if tokenCacheOptions.MaxSize > 0 {
200+
var err error
201+
tokenCache, err = pkgcache.NewTokenCache(tokenCacheOptions.MaxSize,
202+
pkgcache.WithMaxDuration(tokenCacheOptions.MaxDuration),
203+
pkgcache.WithMetricsRegisterer(ctrlmetrics.Registry),
204+
pkgcache.WithMetricsPrefix("gotk_token_"))
205+
if err != nil {
206+
setupLog.Error(err, "unable to create token cache")
207+
os.Exit(1)
208+
}
209+
}
210+
190211
ctx := ctrl.SetupSignalHandler()
191212

192213
if err := (&controller.GitRepositoryReconciler{
@@ -198,6 +219,7 @@ func main() {
198219
}).SetupWithManagerAndOptions(mgr, controller.GitRepositoryReconcilerOptions{
199220
DependencyRequeueInterval: requeueDependency,
200221
RateLimiter: helper.GetRateLimiter(rateLimiterOptions),
222+
TokenCache: tokenCache,
201223
}); err != nil {
202224
setupLog.Error(err, "unable to create controller", "controller", v1.GitRepositoryKind)
203225
os.Exit(1)

0 commit comments

Comments
 (0)