使用Operator在OpenShift上安装Project Quay Registry

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

Project Quay是一个可伸缩的容器镜像注册表,使我们可以构建,组织,分发和部署容器。使用Quay,我们可以创建图像存储库,执行图像漏洞扫描和强大的访问控制。我们已经介绍了使用Quay在Linux发行版上安装Quay的过程。

如何在CentOS/RHEL/Ubuntu上设置Red Hat Quay注册表

在本教程中,我们将回顾如何使用Operator在OpenShift Container Platform上部署Quay容器注册表。操作员中心提供了对操作员的良好使用。

数据库由Project Quay组成,数据库由Red Hat Quay用作主要元数据存储(不用于图像存储)Redis(密钥,值存储)存储实时构建器日志和Red Hat Quay教程。 (容器注册表):将Quay容器作为服务运行,由Pod中的多个组件组成。克莱尔:扫描容器镜像中的漏洞并提出修复建议。

为Project Quay创建新项目

让我们从为Quay注册表创建一个新项目开始。

$oc new-project quay-enterprise
Now using project "quay-enterprise" on server "https://api.crc.testing:6443".
.....

我们也可以从OpenShift Web控制台创建项目。

单击创建按钮,并确认该项目已创建并正在运行。

安装Red Hat Quay设置操作器

Red Hat Quay设置操作员提供了一种简单的方法来部署和管理Red Hat Quay集群。

登录到OpenShift控制台,然后选择Operators OperatorHub:

选择Red Hat Quay运算符。

选择安装,然后将显示操作员订阅页面。

选择以下各项,然后选择"订阅":安装模式:选择要安装到更新频道的特定名称空间:选择更新频道(可能只有一个)批准策略:选择批准自动或者手动更新

部署Red Hat Quay生态系统

访问Quay.io注册表需要某些凭据。使用以下详细信息创建一个新文件。

$vim Quay_quay.json 
{
  "auths":{
    "quay.io": {
        "auth": "cmVkaGF0K3F1YXk6TzgxV1NIUlNKUjE0VUFaQks1NEdRSEpTMFAxVjRDTFdBSlYxWDJDNFNEN0tPNTlDUTlOM1JFMTI2MTJYVTFIUg==",
        "email": ""
    }
  }
}

然后在将要使用的OpenShift上创建一个秘密。

oc project quay-enterprise
oc create secret generic redhat-pull-secret --from-file=".Quayconfigjson=Quay_quay.json" --type='kubernetes.io/Quayconfigjson'

创建Quay超级用户凭据机密:

oc create secret generic quay-admin \
--from-literal=superuser-username=quayadmin \
--from-literal=superuser-password=StrongAdminPassword \
theitroad@localhost

其中:quayadmin是Quay管理员用户名StrongAdminPassword是管理员用户的密码theitroad @ localhost是要创建的管理员用户的电子邮件

创建Quay配置机密

Quay Enterprise的专用部署用于管理Quay的配置。对配置界面的访问是安全的,并且需要进行身份验证才能访问。

oc create secret generic quay-config --from-literal=config-app-password=StrongPassword

用所需的密码替换StrongPassword。

创建数据库凭证秘密PostgreSQL

oc create secret generic postgres-creds \
--from-literal=database-username=quay \
--from-literal=database-password=StrongUserPassword \
--from-literal=database-root-password=StrongRootPassword \
--from-literal=database-name=quay

这些是访问数据库服务器的凭据:Quay数据库和数据库用户名StrongUserPasswordQuay数据库用户密码StrongRootPassword根用户数据库密码

创建Redis密码凭证

默认情况下,操作员管理的Redis实例在部署时没有密码。可以通过在密钥密码中创建一个包含密码的秘密来指定密码。

oc create secret generic redis-password  --from-literal=password=StrongRedisPassword

创建Quay生态系统部署列表

我的Red Hat Quay生态系统配置文件如下所示

apiVersion: redhatcop.redhat.io/v1alpha1
kind: QuayEcosystem
metadata:
  name: quay-ecosystem
spec:
  clair:
    enabled: true
    imagePullSecretName: redhat-pull-secret
    updateInterval: "60m"
  quay:
    imagePullSecretName: redhat-pull-secret
    superuserCredentialsSecretName: quay-admin
    configSecretName: quay-config
    deploymentStrategy: RollingUpdate
    skipSetup: false
    redis:
      credentialsSecretName: redis-password
    database:
      volumeSize: 10Gi
      credentialsSecretName: postgres-creds
    registryStorage:
      persistentVolumeSize: 20Gi
      persistentVolumeAccessModes:
        - ReadWriteMany
    livenessProbe:
      initialDelaySeconds: 120
      httpGet:
        path: /health/instance
        port: 8443
        scheme: HTTPS
    readinessProbe:
      initialDelaySeconds: 10
      httpGet:
        path: /health/instance
        port: 8443
        scheme: HTTPS

对其进行修改以适合用例。完成后,应用配置:

oc apply -f quay-ecosystem.yaml

使用自定义SSL证书

如果要对Quay使用自定义SSL证书,则需要使用密钥和证书创建一个秘密:

oc create secret generic custom-quay-ssl \
   --from-file=ssl.key=example.key \
   --from-file=ssl.cert=example.crt

然后修改Ecosystem文件以使用自定义证书密钥:

quay:
    imagePullSecretName: redhat-pull-secret
    sslCertificatesSecretName: custom-quay-ssl
.......

等待几分钟,然后确认部署:

$oc get deployments
NAME                              READY   UP-TO-DATE   AVAILABLE   AGE
quay-ecosystem-clair              1/1     1            1           2m35s
quay-ecosystem-clair-postgresql   1/1     1            1           2m57s
quay-ecosystem-quay               1/1     1            1           3m45s
quay-ecosystem-quay-postgresql    1/1     1            1           5m8s
quay-ecosystem-redis              1/1     1            1           5m57s
quay-operator                     1/1     1            1           70m

$oc get svc
NAME                              TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
quay-ecosystem-clair              ClusterIP   172.30.66.1     <none>        6060/TCP,6061/TCP   4m
quay-ecosystem-clair-postgresql   ClusterIP   172.30.10.126   <none>        5432/TCP            3m58s
quay-ecosystem-quay               ClusterIP   172.30.47.147   <none>        443/TCP             5m38s
quay-ecosystem-quay-postgresql    ClusterIP   172.30.196.61   <none>        5432/TCP            6m15s
quay-ecosystem-redis              ClusterIP   172.30.48.112   <none>        6379/TCP            6m58s
quay-operator-metrics             ClusterIP   172.30.81.233   <none>        8383/TCP,8686/TCP   70m

在项目中运行Pod:

$oc get pods
NAME                                              READY   STATUS    RESTARTS   AGE
quay-ecosystem-clair-84b4d77654-cjwcr             1/1     Running   0          2m57s
quay-ecosystem-clair-postgresql-7c47b5955-qbc4s   1/1     Running   0          3m23s
quay-ecosystem-quay-66584ccbdb-8szts              1/1     Running   0          4m8s
quay-ecosystem-quay-postgresql-74bf8db7f8-vnrx9   1/1     Running   0          5m34s
quay-ecosystem-redis-7dcd5c58d6-p7xkn             1/1     Running   0          6m23s
quay-operator-764c99dcdb-k44cq                    1/1     Running   0          70m

访问Quay仪表板

获取已部署Quay的路线URL:

$oc get route
quay-ecosystem-quay   quay-ecosystem-quay-quay-enterprise.apps.example.com         quay-ecosystem-quay   8443   passthrough/Redirect   None

在有权访问群集域的计算机上打开URL。

使用我们配置的凭据登录Quay注册表。