Skip to content
This repository was archived by the owner on Mar 16, 2024. It is now read-only.

Commit 6db89ac

Browse files
authored
change: if default storage class exists use 10Gi PVC for registry (#1985)
Signed-off-by: Thorsten Klein <tk@thklein.io>
1 parent e207b5e commit 6db89ac

File tree

4 files changed

+65
-9
lines changed

4 files changed

+65
-9
lines changed

pkg/imagesystem/registry.go

Lines changed: 46 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,12 @@ import (
1111
v1 "github.com/acorn-io/runtime/pkg/apis/internal.acorn.io/v1"
1212
"github.com/acorn-io/runtime/pkg/config"
1313
"github.com/acorn-io/runtime/pkg/system"
14+
"github.com/acorn-io/runtime/pkg/volume"
1415
"github.com/google/go-containerregistry/pkg/name"
1516
corev1 "k8s.io/api/core/v1"
1617
apierrors "k8s.io/apimachinery/pkg/api/errors"
18+
"k8s.io/apimachinery/pkg/api/resource"
19+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1720
"sigs.k8s.io/controller-runtime/pkg/client"
1821
)
1922

@@ -121,10 +124,49 @@ func GetRegistryObjects(ctx context.Context, c client.Reader) (result []client.O
121124
return nil, err
122125
}
123126

124-
result = append(result, registryDeployment(
125-
system.ImagesNamespace,
126-
system.DefaultImage(),
127-
system.ResourceRequirementsFor(*cfg.RegistryMemory, *cfg.RegistryCPU))...)
127+
volumeSource := corev1.VolumeSource{
128+
EmptyDir: &corev1.EmptyDirVolumeSource{},
129+
}
130+
131+
if sc, err := volume.FindDefaultStorageClass(ctx, c); err != nil {
132+
return nil, err
133+
} else if sc != "" {
134+
volumeSource = corev1.VolumeSource{
135+
PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{
136+
ClaimName: system.RegistryName,
137+
},
138+
}
139+
140+
result = append(result,
141+
&corev1.PersistentVolumeClaim{
142+
ObjectMeta: metav1.ObjectMeta{
143+
Name: system.RegistryName,
144+
Namespace: system.ImagesNamespace,
145+
Labels: map[string]string{
146+
"app": system.RegistryName,
147+
},
148+
},
149+
Spec: corev1.PersistentVolumeClaimSpec{
150+
StorageClassName: &sc,
151+
AccessModes: []corev1.PersistentVolumeAccessMode{corev1.ReadWriteOnce},
152+
Resources: corev1.ResourceRequirements{
153+
Requests: corev1.ResourceList{
154+
corev1.ResourceStorage: resource.MustParse(system.RegistryPVCSize),
155+
},
156+
},
157+
},
158+
},
159+
)
160+
}
161+
162+
result = append(result,
163+
registryDeployment(
164+
system.ImagesNamespace,
165+
system.DefaultImage(),
166+
system.ResourceRequirementsFor(*cfg.RegistryMemory, *cfg.RegistryCPU),
167+
volumeSource,
168+
)...,
169+
)
128170

129171
return result, nil
130172
}

pkg/imagesystem/registrytemplate.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ func registryService(namespace string) []client.Object {
3939
}
4040
}
4141

42-
func registryDeployment(namespace, registryImage string, requirements corev1.ResourceRequirements) []client.Object {
42+
func registryDeployment(namespace, registryImage string, requirements corev1.ResourceRequirements, volumeSource corev1.VolumeSource) []client.Object {
4343
deployment := &appsv1.Deployment{
4444
ObjectMeta: metav1.ObjectMeta{
4545
Name: system.RegistryName,
@@ -117,10 +117,8 @@ func registryDeployment(namespace, registryImage string, requirements corev1.Res
117117
},
118118
Volumes: []corev1.Volume{
119119
{
120-
VolumeSource: corev1.VolumeSource{
121-
EmptyDir: &corev1.EmptyDirVolumeSource{},
122-
},
123-
Name: "registry",
120+
VolumeSource: volumeSource,
121+
Name: "registry",
124122
},
125123
},
126124
Tolerations: []corev1.Toleration{

pkg/system/constants.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ const (
2222

2323
var (
2424
RegistryName = "registry"
25+
RegistryPVCSize = "10Gi"
2526
RegistryPort = 5000
2627
BuildKitName = "buildkitd"
2728
ControllerName = "acorn-controller"

pkg/volume/volume.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,3 +173,18 @@ func CopyVolumeDefaults(volumeRequest v1.VolumeRequest, volumeBinding v1.VolumeB
173173

174174
return volumeRequest
175175
}
176+
177+
func FindDefaultStorageClass(ctx context.Context, c client.Reader) (string, error) {
178+
storageClasses := &storagev1.StorageClassList{}
179+
if err := c.List(ctx, storageClasses); err != nil {
180+
return "", err
181+
}
182+
183+
for _, sc := range storageClasses.Items {
184+
if sc.Annotations[storage.IsDefaultStorageClassAnnotation] == "true" {
185+
return sc.Name, nil
186+
}
187+
}
188+
189+
return "", nil
190+
}

0 commit comments

Comments
 (0)