3Scale

安装

模版下载

1. Enale rhel-7-server-3scale-amp-2.4-rpms
# subscription-manager list --available --matches '*3scale*'
# subscription-manager attach --pool=<PoolID>
# subscription-manager repos --enable=rhel-7-server-3scale-amp-2.4-rpms
2. 获取模版
# yum install 3scale-amp-template
3. 列出所有模版
# rpm -q -l 3scale-amp-template
/opt/amp/templates
/opt/amp/templates/amp-eval-tech-preview.yml
/opt/amp/templates/amp-ha-tech-preview.yml
/opt/amp/templates/amp-s3.yml
/opt/amp/templates/amp.yml

安装准备

1. 确保 OpenShift 安装并正常运行.

2. 下载

wget https://raw.githubusercontent.com/3scale/3scale-amp-openshift-templates/2.4.0.GA/amp/amp.yml

3. 创建 4 个 PV

类型 描述

RWO

redis backend, 1Gi

RWO

redis system, 1Gi

RWO

mysql, 1Gi

RWX

system, 100Mi

NFS 服务器创建 exporter:

mkdir -p /srv/nfs/3scale/pv{1..4}

for pvnum in {1..4} ; do
echo "/srv/nfs/3scale/pv${pvnum} *(rw,root_squash)" >> /etc/exports.d/openshift-3scale.exports
chown -R nfsnobody.nfsnobody  /srv/nfs/3scale/pv${pvnum}
chmod -R 777 /srv/nfs
done

systemctl restart nfs-server

创建 3scale-24-mysql PV 的 yaml 文件:

{
  "apiVersion": "v1",
  "kind": "PersistentVolume",
  "metadata": {
    "name": "pv1"
  },
  "spec": {
    "capacity": {
        "storage": "1Gi"
    },
    "accessModes": [ "ReadWriteOnce" ],
    "nfs": {
        "path": "/srv/nfs/3scale/pv1",
        "server": "nfs.example.com"
    },
    "persistentVolumeReclaimPolicy": "Recycle"
  }
}

创建 3scale-24-redis-backend PV 的 yaml 文件:

{
  "apiVersion": "v1",
  "kind": "PersistentVolume",
  "metadata": {
    "name": "pv2"
  },
  "spec": {
    "capacity": {
        "storage": "1Gi"
    },
    "accessModes": [ "ReadWriteOnce" ],
    "nfs": {
        "path": "/srv/nfs/3scale/pv2",
        "server": "nfs.example.com"
    },
    "persistentVolumeReclaimPolicy": "Recycle"
  }
}

创建 3scale-24-redis-system PV 的 yaml 文件:

{
  "apiVersion": "v1",
  "kind": "PersistentVolume",
  "metadata": {
    "name": "pv3"
  },
  "spec": {
    "capacity": {
        "storage": "1Gi"
    },
    "accessModes": [ "ReadWriteOnce" ],
    "nfs": {
        "path": "/srv/nfs/3scale/pv3",
        "server": "nfs.example.com"
    },
    "persistentVolumeReclaimPolicy": "Recycle"
  }
}

创建 3scale-24-system PV 的 yaml 文件:

{
  "apiVersion": "v1",
  "kind": "PersistentVolume",
  "metadata": {
    "name": "pv4"
  },
  "spec": {
    "capacity": {
        "storage": "100Mi"
    },
    "accessModes": [ "ReadWriteMany" ],
    "nfs": {
        "path": "/srv/nfs/3scale/pv4",
        "server": "nfs.example.com"
    },
    "persistentVolumeReclaimPolicy": "Retain"
  }
}

查克创建的相关 PV

# oc get pv | grep pv-3scale-24
pv-3scale-24-mysql           1Gi        RWO            Recycle          Available                   15s
pv-3scale-24-redis-backend   1Gi        RWO            Recycle          Available                   15s
pv-3scale-24-redis-system    1Gi        RWO            Recycle          Available                   15s
pv-3scale-24-system          100Mi      RWX            Retain           Available                   15s
4. 下载 3Scale 2.4 所需的容器镜像
registry.access.redhat.com/3scale-amp24/backend
registry.access.redhat.com/3scale-amp24/zync
registry.access.redhat.com/3scale-amp24/apicast-gateway
registry.access.redhat.com/3scale-amp22/wildcard-router
registry.access.redhat.com/3scale-amp24/system
registry.access.redhat.com/rhscl/postgresql-95-rhel7:9.5
registry.access.redhat.com/rhscl/mysql-57-rhel7:5.7
registry.access.redhat.com/3scale-amp20/memcached
registry.access.redhat.com/rhscl/redis-32-rhel7:3.2

安装

1 - 创建一个工程
oc new-project 3scale-amp --display-name="3scale APM 2.4" --description="3scale AMP 2.4"
2 - 根据模版创建容器部署对象
# oc new-app -f amp.yml --param ADMIN_PASSWORD=redhat --param MASTER_PASSWORD=redhat --param WILDCARD_DOMAIN=apps.example.com --param WILDCARD_POLICY=Subdomain
--> Deploying template "3scale-amp/3scale-api-management" for "amp.yml" to project 3scale-amp

     3scale API Management
     ---------
     3scale API Management main system

     Login on https://3scale-admin.apps.example.com as admin/redhat

     * With parameters:
        * AMP_RELEASE=2.4.0
        * APP_LABEL=3scale-api-management
        * TENANT_NAME=3scale
        * RWX_STORAGE_CLASS=null
        * AMP_BACKEND_IMAGE=registry.example.com/3scale-amp24/backend
        * AMP_ZYNC_IMAGE=registry.example.com/3scale-amp24/zync
        * AMP_APICAST_IMAGE=registry.example.com/3scale-amp24/apicast-gateway
        * AMP_ROUTER_IMAGE=registry.example.com/3scale-amp22/wildcard-router
        * AMP_SYSTEM_IMAGE=registry.example.com/3scale-amp24/system
        * POSTGRESQL_IMAGE=registry.example.com/rhscl/postgresql-95-rhel7:9.5
        * MYSQL_IMAGE=registry.example.com/rhscl/mysql-57-rhel7:5.7
        * MEMCACHED_IMAGE=registry.example.com/3scale-amp20/memcached
        * IMAGESTREAM_TAG_IMPORT_INSECURE=false
        * REDIS_IMAGE=registry.example.com/rhscl/redis-32-rhel7:3.2
        * MySQL User=mysql
        * MySQL Password=ld6lc7js # generated
        * MySQL Database Name=system
        * MySQL Root password.=qv0wq2pg # generated
        * SYSTEM_BACKEND_USERNAME=3scale_api_user
        * SYSTEM_BACKEND_PASSWORD=kxrcwfhd # generated
        * SYSTEM_BACKEND_SHARED_SECRET=sgn2xnkb # generated
        * SYSTEM_APP_SECRET_KEY_BASE=3a41d8786540debe258d4585ec861215c02d181cbb31424864032ae2a1a57867a7381c820eabac878c86a385082136013626edd0276c7c248136653405744c04 # generated
        * ADMIN_PASSWORD=redhat
        * ADMIN_USERNAME=admin
        * ADMIN_ACCESS_TOKEN=7ggqj3ipnl1v4srr # generated
        * MASTER_NAME=master
        * MASTER_USER=master
        * MASTER_PASSWORD=redhat
        * MASTER_ACCESS_TOKEN=1s2gnhr0 # generated
        * RECAPTCHA_PUBLIC_KEY=
        * RECAPTCHA_PRIVATE_KEY=
        * PostgreSQL Connection Password=r3xGXkO24MghV6kf # generated
        * ZYNC_SECRET_KEY_BASE=44bOFigQAFG1RXkK # generated
        * ZYNC_AUTHENTICATION_TOKEN=vp1HtV133TJ3fcjl # generated
        * APICAST_ACCESS_TOKEN=d83s08n5 # generated
        * APICAST_MANAGEMENT_API=status
        * APICAST_OPENSSL_VERIFY=false
        * APICAST_RESPONSE_CODES=true
        * APICAST_REGISTRY_URL=http://apicast-staging:8090/policies
        * WILDCARD_DOMAIN=apps.example.com
        * WILDCARD_POLICY=Subdomain

--> Creating resources ...
    imagestream.image.openshift.io "amp-backend" created
    imagestream.image.openshift.io "amp-zync" created
    imagestream.image.openshift.io "amp-apicast" created
    imagestream.image.openshift.io "amp-wildcard-router" created
    imagestream.image.openshift.io "amp-system" created
    imagestream.image.openshift.io "postgresql" created
    deploymentconfig.apps.openshift.io "backend-redis" created
    service "backend-redis" created
    configmap "redis-config" created
    persistentvolumeclaim "backend-redis-storage" created
    deploymentconfig.apps.openshift.io "system-redis" created
    persistentvolumeclaim "system-redis-storage" created
    deploymentconfig.apps.openshift.io "backend-cron" created
    deploymentconfig.apps.openshift.io "backend-listener" created
    service "backend-listener" created
    route.route.openshift.io "backend" created
    deploymentconfig.apps.openshift.io "backend-worker" created
    configmap "backend-environment" created
    secret "backend-internal-api" created
    secret "backend-redis" created
    secret "backend-listener" created
    deploymentconfig.apps.openshift.io "system-mysql" created
    configmap "mysql-main-conf" created
    configmap "mysql-extra-conf" created
    persistentvolumeclaim "mysql-storage" created
    deploymentconfig.apps.openshift.io "system-memcache" created
    persistentvolumeclaim "system-storage" created
    service "system-provider" created
    service "system-master" created
    service "system-developer" created
    route.route.openshift.io "system-provider-admin" created
    route.route.openshift.io "system-master" created
    route.route.openshift.io "system-developer" created
    service "system-mysql" created
    service "system-redis" created
    service "system-sphinx" created
    service "system-memcache" created
    configmap "system" created
    configmap "smtp" created
    configmap "system-environment" created
    deploymentconfig.apps.openshift.io "system-app" created
    deploymentconfig.apps.openshift.io "system-sidekiq" created
    deploymentconfig.apps.openshift.io "system-sphinx" created
    secret "system-events-hook" created
    secret "system-redis" created
    secret "system-master-apicast" created
    secret "system-database" created
    secret "system-seed" created
    secret "system-recaptcha" created
    secret "system-app" created
    secret "system-memcache" created
    deploymentconfig.apps.openshift.io "zync" created
    deploymentconfig.apps.openshift.io "zync-database" created
    service "zync" created
    service "zync-database" created
    secret "zync" created
    deploymentconfig.apps.openshift.io "apicast-staging" created
    deploymentconfig.apps.openshift.io "apicast-production" created
    service "apicast-staging" created
    service "apicast-production" created
    route.route.openshift.io "api-apicast-staging" created
    route.route.openshift.io "api-apicast-production" created
    configmap "apicast-environment" created
    secret "apicast-redis" created
    deploymentconfig.apps.openshift.io "apicast-wildcard-router" created
    service "apicast-wildcard-router" created
    route.route.openshift.io "apicast-wildcard-router" created
--> Success
    Access your application via route 'backend-3scale.apps.example.com'
    Access your application via route '3scale-admin.apps.example.com'
    Access your application via route 'master.apps.example.com'
    Access your application via route '3scale.apps.example.com'
    Access your application via route 'api-3scale-apicast-staging.apps.example.com'
    Access your application via route 'api-3scale-apicast-production.apps.example.com'
    Access your application via route 'apicast-wildcard.apps.example.com'
    Run 'oc status' to view your app.

安装验证

1. 查看运行的容器
# oc get pods
NAME                              READY     STATUS    RESTARTS   AGE
apicast-production-1-g2lfd        1/1       Running   0          32m
apicast-staging-1-qs9wc           1/1       Running   0          32m
apicast-wildcard-router-1-4q8jl   1/1       Running   0          32m
backend-cron-1-wdqp9              1/1       Running   0          32m
backend-listener-1-j85fg          1/1       Running   0          32m
backend-redis-1-bq7j8             1/1       Running   0          32m
backend-worker-1-l99nc            1/1       Running   0          32m
system-app-1-5vj47                3/3       Running   0          23m
system-memcache-1-kxllm           1/1       Running   0          32m
system-mysql-1-zqlzs              1/1       Running   0          32m
system-redis-1-7crfx              1/1       Running   0          32m
system-sidekiq-1-bwkjf            1/1       Running   0          32m
system-sphinx-1-fxs8k             1/1       Running   0          32m
zync-1-6cqt2                      1/1       Running   0          32m
zync-database-1-sbgcq             1/1       Running   0          32m
2. 查看容器的镜像

使用 https://registry-console-default.apps.example.com/registry 可以查看内部镜像仓库。

3scale 24 registries.png

3 - 查看创建的 PVC
# oc get pvc
NAME                    STATUS    VOLUME                       CAPACITY   ACCESS MODES   STORAGECLASS   AGE
backend-redis-storage   Bound     pv-3scale-24-redis-system    1Gi        RWO                           44m
mysql-storage           Bound     pv-3scale-24-redis-backend   1Gi        RWO                           44m
system-redis-storage    Bound     pv-3scale-24-mysql           1Gi        RWO                           44m
system-storage          Bound     pv-3scale-24-system          100Mi      RWX                           44m
4 - 查看 Mysql 数据库
$ oc rsh $(oc get pod | grep mysql | awk '{print $1}')
$ mysql -uroot system
mysql> show tables;
5 - 登录 3Scale 管理界面,执行如下命令获取登录 URL
$ cat /tmp/3scale_amp_provision_details.txt | grep Login
     Login on https://3scale-admin.apps.example.com as admin/admin

登录 https://3scale-admin.apps.example.com 进入到 3Scale 登录界面:

3scale login.png

使用 admin/admin 即可登录 3Scale API 管理控制台。

results matching ""

    No results matching ""