外部公开OpenShift内部注册表,并使用Docker/Podman CLI登录

时间:2020-02-23 14:30:23  来源:igfitidea点击:

OpenShift容器平台提供内部集成容器图像注册表,可在OpenShift集装箱平台环境中部署到本地管理图像。
此注册表允许我们从源代码中构建容器镜像,请在OpenShift平台上部署它们并管理其生命周期。
在初始群集设置期间,我们将设置内部注册表。
在文档中介绍了完整的安装教程,然后在现有群集部分部署注册表项下。

配置OpenShift内部图像注册表

在不提供可共享对象存储的基础架构平台上,OpenShift图像注册表运营商自行启动 Removed
由于我在裸机服务器上运行群集,因此我将从删除以删除到管理时更改注册表运算符配置的ManagementState。

$oc edit configs.imageregistry/cluster
spec:
  managementState: Managed

我们还需要为内部注册表设置持久卷索赔。
请参阅以下示例。

...
storage:
    pvc:
      claim: ocs4registry

确认PVC在图像注册表命名空间中绑定。

$oc get pvc -n openshift-image-registry
NAME           STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
ocs4registry   Bound    pvc-a07963ea-2b23-477f-936d-4f8f674de9a5   100Gi      RWX            cephfs         57d

验证我们没有注册表POD:

$oc get pod -n openshift-image-registry
NAME                                               READY   STATUS      RESTARTS   AGE
cluster-image-registry-operator-674b759cfb-vvsmr   2/2     Running     0          41d
image-pruner-1600387200-5qzgn                      0/1     Completed   0          2d10h
image-pruner-1600473600-x8rd6                      0/1     Completed   0          34h
image-pruner-1600560000-ss6mn                      0/1     Completed   0          10h
image-registry-6f4b4db789-2wdmt                    1/1     Running     0          41d
node-ca-7pkp4                                      1/1     Running     0          53d
node-ca-f5pnq                                      1/1     Running     0          53d
node-ca-h5v2f                                      1/1     Running     0          53d
node-ca-ldgvv                                      1/1     Running     0          53d
node-ca-ldplz                                      1/1     Running     0          53d
node-ca-rl8xt                                      1/1     Running     0          53d
node-ca-s59td                                      1/1     Running     0          53d
node-ca-shk7l                                      1/1     Running     0          53d
node-ca-t7ghk                                      1/1     Running     0          53d
node-ca-vk9sl                                      1/1     Running     0          53d
node-ca-xjz45                                      1/1     Running     0          53d
node-ca-xr75h                                      1/1     Running     0          53d

外部曝光OpenShift内部图像注册表

在注册表安装时,它不会外部暴露。
这意味着注册表只能在群集中内部使用。
对于外部访问,我们需要使用OpenShift路由公开该服务。

可以通过使用configs.imagregersgistry.operator.openshift.io资源或者使用自定义路由来通过使用defaultRoute参数来公开路由。
我们将运行以下命令通过修改defaultRoute参数来公开路由。

oc patch configs.imageregistry.operator.openshift.io/cluster --patch '{"spec":{"defaultRoute":true}}' --type=merge

预期

config.imageregistry.operator.openshift.io/cluster patched

确认已创建路由。

$oc get  route  -n openshift-image-registry
NAME            HOST/PORT                                                          PATH   SERVICES         PORT    TERMINATION   WILDCARD
default-route   default-route-openshift-image-registry.apps.ocp.example.net               image-registry   <all>   reencrypt     None

使用Docker登录OpenShift注册表|帕德曼

使用OC命令行工具登录OpenShift群集。

$oc login https://api.<cluster>.<domain>:6443

使用以下命令将自动记录注册表路由后。

HOST=$(oc get route default-route -n openshift-image-registry --template='{{ .spec.host }}')

我们可以使用以下方式验证值:

$echo $HOST

然后,我们可以使用以下命令登录我们公开的注册表:

$podman login -u $(oc whoami) -p $(oc whoami -t) --tls-verify=false $HOST

使用Docker CLI登录:

$docker login -u $(oc whoami) -p $(oc whoami -t) --tls-verify=false $HOST

将容器图像推到OpenShift注册表

将容器图像推送到注册表,将首先标记它们。
请参阅以下示例。

$docker pull busybox:latest
$docker tag busybox:latest registry.dev.example.com/testplatform/busybox:latest
$docker push  registry.dev.example.com/testplatform/busybox:latest
$oc get is busybox

将图像推入注册表后,将自动创建OpenShift ImageStream。
不需要采取进一步行动。