Skip to content

Commit 166c2e9

Browse files
Merge pull request #19561 from mfojtik/up-21-registry-volume
up: fix mount-path for docker registry
2 parents d2ef32f + 7195cc9 commit 166c2e9

File tree

4 files changed

+37
-9
lines changed

4 files changed

+37
-9
lines changed

pkg/oc/bootstrap/clusteradd/components/registry/registry_install.go

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,18 @@ import (
55
"os"
66
"path"
77

8+
"github.com/golang/glog"
9+
10+
apierrors "k8s.io/apimachinery/pkg/api/errors"
11+
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
12+
"k8s.io/client-go/kubernetes"
13+
814
"github.com/openshift/origin/pkg/oc/bootstrap/clusteradd/componentinstall"
915
"github.com/openshift/origin/pkg/oc/bootstrap/clusterup/kubeapiserver"
1016
"github.com/openshift/origin/pkg/oc/bootstrap/docker/dockerhelper"
1117
"github.com/openshift/origin/pkg/oc/bootstrap/docker/host"
1218
"github.com/openshift/origin/pkg/oc/bootstrap/docker/run"
1319
"github.com/openshift/origin/pkg/oc/errors"
14-
apierrors "k8s.io/apimachinery/pkg/api/errors"
15-
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
16-
"k8s.io/client-go/kubernetes"
1720
)
1821

1922
const (
@@ -31,6 +34,24 @@ func (r *RegistryComponentOptions) Name() string {
3134
return "openshift-image-registry"
3235
}
3336

37+
// ensureRemoteRegistryStoragePermissions ensures the remote host directory for registry storage have write access permissions
38+
// so the registry can successfully write data into it.
39+
// TODO: This is a remote docker snowflake
40+
func (r *RegistryComponentOptions) ensureRemoteRegistryStoragePermissions(dir string, dockerClient dockerhelper.Interface) error {
41+
glog.V(5).Infof("Ensuring the write permissions in remote directory %s", dir)
42+
_, rc, err := run.NewRunHelper(dockerhelper.NewHelper(dockerClient)).New().
43+
Image(r.InstallContext.ClientImage()).
44+
DiscardContainer().
45+
Privileged().
46+
Bind(fmt.Sprintf("%s:/pv", dir)).
47+
Entrypoint("/bin/bash").
48+
Command("-c", "mkdir -p /pv/registry && chmod 0777 /pv/registry").Run()
49+
if rc != 0 {
50+
return fmt.Errorf("command returning non-zero exit code: %d", rc)
51+
}
52+
return err
53+
}
54+
3455
func (r *RegistryComponentOptions) Install(dockerClient dockerhelper.Interface, logdir string) error {
3556
kubeAdminClient, err := kubernetes.NewForConfig(r.InstallContext.ClusterAdminClientConfig())
3657
if err != nil {
@@ -55,6 +76,14 @@ func (r *RegistryComponentOptions) Install(dockerClient dockerhelper.Interface,
5576
if len(os.Getenv("DOCKER_HOST")) > 0 {
5677
baseDir = path.Join(host.RemoteHostOriginDir, r.InstallContext.BaseDir())
5778
}
79+
registryStorageDir := path.Join(baseDir, "openshift.local.pv", "registry")
80+
81+
// If docker is on remote host, ensure the permissions for registry
82+
if len(os.Getenv("DOCKER_HOST")) > 0 {
83+
if err := r.ensureRemoteRegistryStoragePermissions(registryStorageDir, dockerClient); err != nil {
84+
return errors.NewError("error ensuring remote host registry directory permissions").WithCause(err)
85+
}
86+
}
5887

5988
masterConfigDir := path.Join(baseDir, kubeapiserver.KubeAPIServerDirName)
6089
flags := []string{
@@ -67,7 +96,7 @@ func (r *RegistryComponentOptions) Install(dockerClient dockerhelper.Interface,
6796
fmt.Sprintf("--cluster-ip=%s", RegistryServiceClusterIP),
6897
fmt.Sprintf("--config=%s", path.Join(masterConfigDir, "admin.kubeconfig")),
6998
fmt.Sprintf("--images=%s", r.InstallContext.ImageFormat()),
70-
fmt.Sprintf("--mount-host=%s", path.Join(r.InstallContext.BaseDir(), "openshift.local.pv", "registry")),
99+
fmt.Sprintf("--mount-host=%s", registryStorageDir),
71100
}
72101
_, rc, err := imageRunHelper.Image(r.InstallContext.ClientImage()).
73102
Privileged().

pkg/oc/bootstrap/docker/down.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package docker
22

33
import (
44
"fmt"
5-
"io"
65
"strconv"
76
"strings"
87

@@ -30,7 +29,7 @@ type ClientStopConfig struct {
3029
}
3130

3231
// NewCmdDown creates a command that stops OpenShift
33-
func NewCmdDown(name, fullName string, out io.Writer) *cobra.Command {
32+
func NewCmdDown(name, fullName string) *cobra.Command {
3433
config := &ClientStopConfig{}
3534
cmd := &cobra.Command{
3635
Use: name,

pkg/oc/cli/cli.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ func NewCommandCLI(name, fullName string, in io.Reader, out, errout io.Writer) *
108108
cmd.NewCmdProject(fullName+" project", f, out),
109109
cmd.NewCmdProjects(fullName, f, out),
110110
cmd.NewCmdExplain(fullName, f, out, errout),
111-
cluster.NewCmdCluster(cluster.ClusterRecommendedName, fullName+" "+cluster.ClusterRecommendedName, f, in, out, errout),
111+
cluster.NewCmdCluster(cluster.ClusterRecommendedName, fullName+" "+cluster.ClusterRecommendedName, f, out, errout),
112112
},
113113
},
114114
{

pkg/oc/cli/cmd/cluster/cluster.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ var (
3232
routing suffix, use the --routing-suffix flag.`)
3333
)
3434

35-
func NewCmdCluster(name, fullName string, f *clientcmd.Factory, in io.Reader, out, errout io.Writer) *cobra.Command {
35+
func NewCmdCluster(name, fullName string, f *clientcmd.Factory, out, errout io.Writer) *cobra.Command {
3636
// Parent command to which all subcommands are added.
3737
cmds := &cobra.Command{
3838
Use: fmt.Sprintf("%s ACTION", name),
@@ -45,7 +45,7 @@ func NewCmdCluster(name, fullName string, f *clientcmd.Factory, in io.Reader, ou
4545

4646
cmds.AddCommand(clusterAdd)
4747
cmds.AddCommand(docker.NewCmdUp(docker.CmdUpRecommendedName, fullName+" "+docker.CmdUpRecommendedName, out, errout, clusterAdd))
48-
cmds.AddCommand(docker.NewCmdDown(docker.CmdDownRecommendedName, fullName+" "+docker.CmdDownRecommendedName, out))
48+
cmds.AddCommand(docker.NewCmdDown(docker.CmdDownRecommendedName, fullName+" "+docker.CmdDownRecommendedName))
4949
cmds.AddCommand(docker.NewCmdStatus(docker.CmdStatusRecommendedName, fullName+" "+docker.CmdStatusRecommendedName, f, out))
5050
return cmds
5151
}

0 commit comments

Comments
 (0)