Allow custom service account issuer without public bucket

This commit is contained in:
Ciprian Hacman 2023-01-13 09:59:12 +02:00
parent d543c9ad6f
commit 17d313e89f
1 changed files with 14 additions and 5 deletions

View File

@ -87,13 +87,22 @@ func (b *IssuerDiscoveryModelBuilder) Build(c *fi.CloudupModelBuilderContext) er
switch discoveryStore := discoveryStore.(type) { switch discoveryStore := discoveryStore.(type) {
case *vfs.S3Path: case *vfs.S3Path:
isPublic, err := discoveryStore.IsBucketPublic(ctx) discoveryStoreURL, err := discoveryStore.GetHTTPsUrl(b.Cluster.Spec.IsIPv6Only())
if err != nil { if err != nil {
return fmt.Errorf("checking if bucket was public: %w", err) return err
} }
if !isPublic { if discoveryStoreURL == fi.ValueOf(b.Cluster.Spec.KubeAPIServer.ServiceAccountIssuer) {
klog.Infof("serviceAccountIssuers bucket %q is not public; will use object ACL", discoveryStore.Bucket()) // Using Amazon S3 static website hosting requires public access
publicFileACL = fi.PtrTo(true) isPublic, err := discoveryStore.IsBucketPublic(ctx)
if err != nil {
return fmt.Errorf("checking if bucket was public: %w", err)
}
if !isPublic {
klog.Infof("serviceAccountIssuers bucket %q is not public; will use object ACL", discoveryStore.Bucket())
publicFileACL = fi.PtrTo(true)
}
} else {
klog.Infof("using user managed serviceAccountIssuers")
} }
case *vfs.MemFSPath: case *vfs.MemFSPath: