$ oc policy add-role-to-user registry-viewer <user_name>
请使用以下部分中的说明来访问注册表,包括查看日志和指标,以及保护和公开注册表。
您可以直接访问注册表以调用podman
命令。这允许您使用诸如podman push
或podman pull
之类的操作直接将镜像推送到集成注册表或从中拉取镜像。为此,您必须使用podman login
命令登录到注册表。您可以执行的操作取决于您的用户权限,如下节所述。
您作为具有cluster-admin
角色的用户可以访问集群。
您必须已配置身份提供商 (IDP)。
对于拉取镜像(例如,使用podman pull
命令时),用户必须具有registry-viewer
角色。要添加此角色,请运行以下命令
$ oc policy add-role-to-user registry-viewer <user_name>
对于写入或推送镜像(例如,使用podman push
命令时)
用户必须具有registry-editor
角色。要添加此角色,请运行以下命令
$ oc policy add-role-to-user registry-editor <user_name>
您的集群必须具有一个现有的项目,可以将镜像推送到该项目。
您可以从集群内部访问注册表。
使用内部路由从集群访问注册表
通过获取节点名称来访问节点
$ oc get nodes
$ oc debug nodes/<node_name>
要启用对节点上的oc
和podman
等工具的访问,请将根目录更改为/host
sh-4.2# chroot /host
使用您的访问令牌登录到容器镜像注册表
sh-4.2# oc login -u kubeadmin -p <password_from_install_log> https://api-int.<cluster_name>.<base_domain>:6443
sh-4.2# podman login -u kubeadmin -p $(oc whoami -t) image-registry.openshift-image-registry.svc:5000
您应该看到一条确认登录的消息,例如
Login Succeeded!
您可以为用户名传递任何值;令牌包含所有必要信息。传递包含冒号的用户名将导致登录失败。 由于 Image Registry Operator 创建了路由,因此它可能类似于 |
对您的注册表执行podman pull
和podman push
操作
您可以拉取任意镜像,但如果您添加了system:registry角色,则只能将镜像推送到项目中的注册表。 |
在以下示例中,使用
组件 | 值 |
---|---|
<registry_ip> |
|
<port> |
|
<project> |
|
<image> |
|
<tag> |
省略(默认为 |
拉取任意镜像
sh-4.2# podman pull <name.io>/<image>
使用<registry_ip>:<port>/<project>/<image>
格式标记新镜像。为了OpenShift Container Platform能够正确放置并在以后访问注册表中的镜像,项目名称必须出现在此拉取规范中。
sh-4.2# podman tag <name.io>/<image> image-registry.openshift-image-registry.svc:5000/openshift/<image>
您必须拥有指定项目的 |
将新标记的镜像推送到您的注册表
sh-4.2# podman push image-registry.openshift-image-registry.svc:5000/openshift/<image>
将镜像推送到内部注册表时,仓库名称必须使用 |
作为集群管理员,您可以列出在openshift-image-registry
项目中运行的镜像注册表 Pod 并检查其状态。
您作为具有cluster-admin
角色的用户可以访问集群。
列出openshift-image-registry
项目中的 Pod 并查看其状态
$ oc get pods -n openshift-image-registry
NAME READY STATUS RESTARTS AGE
image-registry-79fb4469f6-llrln 1/1 Running 0 77m
node-ca-hjksc 1/1 Running 0 73m
node-ca-tftj6 1/1 Running 0 77m
node-ca-wb6ht 1/1 Running 0 77m
node-ca-zvt9q 1/1 Running 0 74m
您可以使用oc logs
命令查看注册表的日志。
使用带有部署的oc logs
命令查看容器镜像注册表的日志
$ oc logs deployments/image-registry -n openshift-image-registry
2015-05-01T19:48:36.300593110Z time="2015-05-01T19:48:36Z" level=info msg="version=v2.0.0+unknown"
2015-05-01T19:48:36.303294724Z time="2015-05-01T19:48:36Z" level=info msg="redis not configured" instance.id=9ed6c43d-23ee-453f-9a4b-031fea646002
2015-05-01T19:48:36.303422845Z time="2015-05-01T19:48:36Z" level=info msg="using inmemory layerinfo cache" instance.id=9ed6c43d-23ee-453f-9a4b-031fea646002
2015-05-01T19:48:36.303433991Z time="2015-05-01T19:48:36Z" level=info msg="Using OpenShift Auth handler"
2015-05-01T19:48:36.303439084Z time="2015-05-01T19:48:36Z" level=info msg="listening on :5000" instance.id=9ed6c43d-23ee-453f-9a4b-031fea646002
OpenShift Container Registry 提供了一个用于Prometheus 指标的端点。Prometheus 是一款独立的开源系统监控和警报工具包。
指标在注册表端点的/extensions/v2/metrics路径下公开。
您可以使用集群角色运行指标查询来访问指标。
集群角色
如果您还没有访问指标的集群角色,请创建一个。
$ cat <<EOF | oc create -f -
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: prometheus-scraper
rules:
- apiGroups:
- image.openshift.io
resources:
- registry/metrics
verbs:
- get
EOF
将此角色添加到用户,运行以下命令
$ oc adm policy add-cluster-role-to-user prometheus-scraper <username>
指标查询
获取用户令牌。
openshift:
$ oc whoami -t
在节点或 Pod 内运行指标查询,例如
$ curl --insecure -s -u <user>:<secret> \ (1)
https://image-registry.openshift-image-registry.svc:5000/extensions/v2/metrics | grep imageregistry | head -n 20
# HELP imageregistry_build_info A metric with a constant '1' value labeled by major, minor, git commit & git version from which the image registry was built.
# TYPE imageregistry_build_info gauge
imageregistry_build_info{gitCommit="9f72191",gitVersion="v3.11.0+9f72191-135-dirty",major="3",minor="11+"} 1
# HELP imageregistry_digest_cache_requests_total Total number of requests without scope to the digest cache.
# TYPE imageregistry_digest_cache_requests_total counter
imageregistry_digest_cache_requests_total{type="Hit"} 5
imageregistry_digest_cache_requests_total{type="Miss"} 24
# HELP imageregistry_digest_cache_scoped_requests_total Total number of scoped requests to the digest cache.
# TYPE imageregistry_digest_cache_scoped_requests_total counter
imageregistry_digest_cache_scoped_requests_total{type="Hit"} 33
imageregistry_digest_cache_scoped_requests_total{type="Miss"} 44
# HELP imageregistry_http_in_flight_requests A gauge of requests currently being served by the registry.
# TYPE imageregistry_http_in_flight_requests gauge
imageregistry_http_in_flight_requests 1
# HELP imageregistry_http_request_duration_seconds A histogram of latencies for requests to the registry.
# TYPE imageregistry_http_request_duration_seconds summary
imageregistry_http_request_duration_seconds{method="get",quantile="0.5"} 0.01296087
imageregistry_http_request_duration_seconds{method="get",quantile="0.9"} 0.014847248
imageregistry_http_request_duration_seconds{method="get",quantile="0.99"} 0.015981195
imageregistry_http_request_duration_seconds_sum{method="get"} 12.260727916000022
1 | <user> 对象可以是任意的,但<secret> 标签必须使用用户令牌。 |
有关允许项目中的 Pod 引用另一个项目中的镜像的更多信息,请参见允许 Pod 跨项目引用镜像。
kubeadmin
可以访问注册表,直到被删除。有关更多信息,请参见删除 kubeadmin 用户。
有关配置身份提供程序的更多信息,请参见了解身份提供程序配置。