마이그레이션 3scale


Red Hat 3scale API Management 2.6

3scale API Management 설치를 업그레이드합니다.

Red Hat Customer Content Services

초록

이 가이드에서는 3scale API 관리 설치를 최신 버전으로 업그레이드하는 정보를 제공합니다.

접두부

이 안내서는 3scale API Management를 업그레이드하는 데 도움이 됩니다.

I 부. 3scale API 관리 업그레이드 가이드: 2.5에서 2.6으로

이 섹션에서는 템플릿 기반 배포에서 Red Hat 3scale API Management를 버전 2.5에서 2.6으로 업그레이드하는 방법에 대해 설명합니다.

주의

이 프로세스에서는 서비스가 중단되고 업그레이드가 완료될 때까지 Zync 처리 작업을 일시적으로 중지합니다. 유지 관리 기간이 있는지 확인합니다.

1장. 시작하기 전

업그레이드를 진행하기 전에 다음 사항을 고려해야 합니다.

지원되는 구성

  • 3scale은 OpenShift 3.11에서 템플릿만 사용하여 2.5에서 2.6으로의 업그레이드 경로를 지원합니다.

이전 3scale 버전

툴링

  • 데이터베이스 백업을 수행합니다. 백업 절차는 각 데이터베이스 유형 및 설정에 따라 다릅니다.
  • OpenShift CLI 툴이 3scale이 배포된 동일한 프로젝트에 구성되어 있는지 확인합니다.
  • bash 쉘에서 아래 명령을 실행합니다.
  • 이 업그레이드의 경우 다음 단계에 따라 패치 파일을 다운로드하여 가져옵니다.

    1. templates-migration-2.5-to-2.6 을 클릭합니다.
    2. 파일을 다운로드하여 압축을 풉니다.

다운로드한 압축 파일의 내용과 관련된 문서 전체에서 일부 파일 참조가 표시됩니다. 예를 들어 $(cat db-imagestream-patches/backend-redis-json.patch).

2장. 3scale 2.5를 2.6으로 업그레이드

사전 요구 사항

  • Red Hat 3scale API Management 2.5가 프로젝트에 배포되었습니다.
  • 툴 사전 요구 사항:

    • base64
    • jq

절차

3scale API Management 2.5를 2.6으로 업그레이드하려면 3scale이 배포된 프로젝트로 이동합니다.

$ oc project <3scale-project>
Copy to Clipboard Toggle word wrap

그런 다음 다음 순서에 따라 단계를 수행합니다.

2.1. 3scale 프로젝트의 백업 디렉터리 생성

다음 절차에 따라 3scale 프로젝트에 대한 백업 디렉터리를 생성합니다. {BACKUP_DIR} 은 3scale 백업의 머신의 위치입니다.

절차

  1. 백업 디렉토리를 생성합니다.

    mkdir ${BACKUP_DIR}
    Copy to Clipboard Toggle word wrap
  2. 백업에 사용할 디렉터리 및 하위 디렉터리를 생성합니다.

    mkdir ${BACKUP_DIR}/system-database ${BACKUP_DIR}/zync-database ${BACKUP_DIR}/system-redis ${BACKUP_DIR}/backend-redis ${BACKUP_DIR}/system-app ${BACKUP_DIR}/openshift
    
    mkdir ${BACKUP_DIR}/openshift/configmaps/ ${BACKUP_DIR}/openshift/deploymentConfigs ${BACKUP_DIR}/openshift/imageStreams ${BACKUP_DIR}/openshift/other/ ${BACKUP_DIR}/openshift/routes/ ${BACKUP_DIR}/openshift/secrets/ ${BACKUP_DIR}/openshift/services/
    Copy to Clipboard Toggle word wrap

2.1.1. 백업 system-database (MySQL)

system-mysql 데이터베이스를 덤프하고 ${BACKUP_DIR}/system-database/system-mysql-backup.gz 내의 덤프를 저장합니다.

oc rsh $(oc get pods -l 'deploymentConfig=system-mysql' -o json | jq -r '.items[0].metadata.name') bash -c 'export MYSQL_PWD=${MYSQL_ROOT_PASSWORD}; mysqldump --single-transaction -hsystem-mysql -uroot system' | gzip > ${BACKUP_DIR}/system-database/system-mysql-backup.gz
Copy to Clipboard Toggle word wrap

2.1.2. 백업 zync-database

zync-database PostrgreSQL 데이터베이스를 덤프하고 ${BACKUP_DIR}/>-<nc-database-backup.gz 내의 덤프를 저장합니다.

oc rsh $(oc get pods -l 'deploymentConfig=zync-database' -o json | jq '.items[0].metadata.name' -r) bash -c 'pg_dumpall -c --if-exists' | gzip > ${BACKUP_DIR}/zync-database/zync-database-backup.gz
Copy to Clipboard Toggle word wrap

2.1.3. 백업 system-redis

${BACKUP_DIR}/ system-redis /system-redis-dump.rdb내부의 system-redis 덤프 추출

oc cp $(oc get pods -l 'deploymentConfig=system-redis' -o json | jq '.items[0].metadata.name' -r):/var/lib/redis/data/dump.rdb ${BACKUP_DIR}/system-redis/system-redis-dump.rdb
Copy to Clipboard Toggle word wrap

2.1.4. 백업 backend-redis

${BACKUP_DIR}/ backend-redis /backend-redis-dump.rdb내부의 backend-redis 덤프 추출

oc cp $(oc get pods -l 'deploymentConfig=backend-redis' -o json | jq '.items[0].metadata.name' -r):/var/lib/redis/data/dump.rdb ${BACKUP_DIR}/backend-redis/backend-redis-dump.rdb
Copy to Clipboard Toggle word wrap

2.1.5. system-app 영구 데이터 백업

${BACKUP_DIR}/ system-app / 내부의 system-app 영구 데이터를 복사합니다.

oc rsync $(oc get pods -l 'deploymentConfig=system-app' -o json | jq '.items[0].metadata.name' -r):/opt/system/public/system ${BACKUP_DIR}/system-app/
Copy to Clipboard Toggle word wrap

2.1.6. Backup DeploymentConfigs

for object in `oc get dc | awk '{print $1}' | grep -v NAME`; do oc get -o yaml --export dc ${object} > ${BACKUP_DIR}/openshift/deploymentConfigs/${object}_dc.yaml; done
Copy to Clipboard Toggle word wrap

2.1.7. Backup ImageStreams

for object in `oc get is | awk '{print $1}' | grep -v NAME`; do oc get -o yaml --export is ${object} > ${BACKUP_DIR}/openshift/imageStreams/${object}_is.yaml; done
Copy to Clipboard Toggle word wrap

2.1.8. 백업 보안

토큰 및 시크릿 기본 빌더 및 배포자를 제외한 모든 항목을 백업합니다.

for object in `oc get secret | awk '{print $1}' | grep -v NAME | grep -v default | grep -v builder | grep -v deployer`; do oc get -o yaml --export secret ${object} > ${BACKUP_DIR}/openshift/secrets/${object}_secret.yaml; done
Copy to Clipboard Toggle word wrap

2.1.9. 백업 서비스

for object in `oc get svc | awk '{print $1}' | grep -v NAME`; do oc get -o yaml --export svc ${object} > ${BACKUP_DIR}/openshift/services/${object}_svc.yaml; done
Copy to Clipboard Toggle word wrap

2.1.10. 백업 경로

for object in `oc get routes | awk '{print $1}' | grep -v NAME`; do oc get -o yaml --export route ${object} > ${BACKUP_DIR}/openshift/routes/${object}_route.yaml; done
Copy to Clipboard Toggle word wrap

2.1.11. Backup ConfigMaps

for object in `oc get cm | awk '{print $1}' | grep -v NAME`; do oc get -o yaml --export cm ${object} > ${BACKUP_DIR}/openshift/configmaps/${object}_cm.yaml; done
Copy to Clipboard Toggle word wrap

2.1.12. 기타 리소스 백업

백업되지 않은 다른 사용자 정의 리소스를 처리하기 위해 두 번째 백업을 만듭니다.

oc get -o yaml --export all > ${BACKUP_DIR}/openshift/other/threescale-project-elements.yaml

for object in rolebindings serviceaccounts secrets imagestreamtags cm rolebindingrestrictions limitranges resourcequotas pvc templates cronjobs statefulsets hpa deployments replicasets poddisruptionbudget endpoints; do
   oc get -o yaml --export $object > ${BACKUP_DIR}/openshift/other/$object.yaml; done
Copy to Clipboard Toggle word wrap

2.2. 인증된 레지스트리에 대한 지원 구성

3scale 2.6 릴리스의 일부로 컨테이너 이미지가 registry.access.redhat.com에서 registry.redhat. io에 있는 인증된 레지스트리 로 마이그레이션되었습니다. 다음 단계에 따라 인증된 새 레지스트리를 지원하도록 기존 3scale 인프라를 준비합니다.

  1. registry .redhat.io에 있는 새로운 Red Hat 인증 레지스트리에 인증 정보를 생성합니다.

    • 레지스트리 서비스 계정이라고도 하는 레지스트리 토큰을 생성합니다. 이 레지스트리 토큰은 3scale 플랫폼에서 registry.redhat.io 에 대해 인증하기 위한 것입니다.
    • 인증 정보를 생성하는 방법에 대한 자세한 내용은 Red Hat Container Registry Authentication 을 참조하십시오.
  2. 레지스트리 서비스 계정을 사용할 수 있게 되면 3scale 인프라가 배포된 OpenShift 프로젝트에서 인증 정보가 포함된 새 보안을 생성합니다.

    1. Red Hat 서비스 계정 패널로 이동하여 OpenShift 시크릿 정의를 가져옵니다.
    2. 3scale 인프라에 사용할 레지스트리 서비스 계정을 선택합니다.
    3. OpenShift Secret 탭을 선택하고 다운로드 시크릿 링크를 클릭합니다.
  3. Red Hat 서비스 계정 패널에서 OpenShift 시크릿을 다운로드한 후 YAML 파일의 metadata 섹션에 있는 name 필드를 수정하고 기존 이름을 3scale-registry-auth 이름으로 교체합니다.

    보안은 다음과 유사합니다.

    apiVersion: v1
    kind: Secret
    metadata:
      name: threescale-registry-auth
    data:
      .dockerconfigjson: a-base64-encoded-string-containing-auth-credentials
    type: kubernetes.io/dockerconfigjson
    Copy to Clipboard Toggle word wrap
  4. 변경 사항을 저장하고 3scale 2.5가 현재 배포된 OpenShift 프로젝트에 시크릿을 생성합니다.

    $ oc create -f the-secret-name.yml
    Copy to Clipboard Toggle word wrap
  5. 시크릿을 생성한 후 존재를 확인할 수 있습니다. 다음 명령은 콘텐츠가 포함된 보안을 반환합니다.

    $ oc get secret threescale-registry-auth
    Copy to Clipboard Toggle word wrap
  6. 3scale-registry-auth 시크릿을 사용할 amp 서비스 계정을 생성합니다. 이를 위해 다음 콘텐츠를 사용하여 file amp-sa.yml 을 생성합니다.

    apiVersion: v1
    kind: ServiceAccount
    imagePullSecrets:
    - name: threescale-registry-auth
    metadata:
      name: amp
    Copy to Clipboard Toggle word wrap
  7. amp 서비스 계정을 배포합니다.

    $ oc create -f amp-sa.yml
    Copy to Clipboard Toggle word wrap
  8. amp 서비스 계정이 올바르게 생성되었는지 확인합니다. 다음 명령은 콘텐츠가 포함된 생성된 서비스 계정을 반환하고 imagePullSecrets 섹션의 요소 중 하나로 threescale-registry-auth 를 사용합니다.

    $ oc get sa amp -o yaml
    Copy to Clipboard Toggle word wrap
  9. 기존 3scale 프로젝트의 default 서비스 계정에 적용된 권한이 new amp 서비스 계정에 복제되었는지 확인합니다.

    • Service Discovery를 서비스 계정 인증 모드로 구성한 경우 OAuth 서버 없이 구성에서 사용 가능한 지침에 따라 cluster-role 뷰 권한을 system:serviceaccount:<3scale-project>:default 사용자에게 부여한 다음, 이제 system:serviceaccount:<3scale-project>:amp 에 동일한 권한을 적용해야 합니다.

      $ oc adm policy add-cluster-role-to-user view system:serviceaccount:<3scale-project>:amp
      Copy to Clipboard Toggle word wrap
  10. new amp 서비스 계정을 사용하도록 기존 DeploymentConfigs를 모두 업데이트합니다.

    $ THREESCALE_DC_NAMES="apicast-production apicast-staging apicast-wildcard-router backend-cron backend-listener backend-redis backend-worker system-app system-memcache system-mysql system-redis system-sidekiq system-sphinx zync zync-database"
    for component in ${THREESCALE_DC_NAMES}; do oc patch dc $component --patch '{"spec":{"template": {"spec": {"serviceAccountName": "amp"}}}}' ; done
    Copy to Clipboard Toggle word wrap

    명령 출력에는 다음 행이 포함됩니다.

    deploymentconfig.apps.openshift.io/apicast-production patched
    deploymentconfig.apps.openshift.io/apicast-staging patched
    deploymentconfig.apps.openshift.io/apicast-wildcard-router patched
    deploymentconfig.apps.openshift.io/backend-cron patched
    deploymentconfig.apps.openshift.io/backend-listener patched
    deploymentconfig.apps.openshift.io/backend-redis patched
    deploymentconfig.apps.openshift.io/backend-worker patched
    deploymentconfig.apps.openshift.io/system-app patched
    deploymentconfig.apps.openshift.io/system-memcache patched
    deploymentconfig.apps.openshift.io/system-mysql patched
    deploymentconfig.apps.openshift.io/system-redis patched
    deploymentconfig.apps.openshift.io/system-sidekiq patched
    deploymentconfig.apps.openshift.io/system-sphinx patched
    deploymentconfig.apps.openshift.io/zync patched
    deploymentconfig.apps.openshift.io/zync-database patched
    Copy to Clipboard Toggle word wrap

    이전 명령은 재부팅을 트리거하는 모든 3scale 기존 DeploymentConfigs도 재배포합니다.

  11. DeploymentConfig가 재부팅되는 동안 상태의 변경 사항을 확인할 수 있습니다. 모든 DeploymentConfigs가 준비될 때까지 기다립니다.

    • 다음 명령을 입력하여 DeploymentConfig의 상태를 확인하고, 각 DeploymentConfig의 DesiredCurrent 열에 동일한 값이 있고 0과 다른지 확인할 수 있습니다.

      $ oc get dc
      Copy to Clipboard Toggle word wrap
  12. 또한 모든 Pod가 Running 상태에 있고 모두 Ready 상태인지 확인합니다.

    $ oc get pods
    Copy to Clipboard Toggle word wrap
  13. 모든 DeploymentConfigs에 the amp 서비스 계정이 다음 명령으로 설정되어 있는지 확인합니다.

    $ for component in ${THREESCALE_DC_NAMES}; do oc get dc $component -o yaml | grep -i serviceAccountName; done
    Copy to Clipboard Toggle word wrap
  14. 이전 명령의 결과로 다음 줄은 이전에 설정된 THREESCALE_DC_NAMES 환경 변수에 정의된 요소 수만큼 여러 번 반복됩니다.

    serviceAccountName: amp
    Copy to Clipboard Toggle word wrap
  15. 이 시점에서 DeploymentConfigurations는 Red Hat 인증된 레지스트리 이미지를 사용할 준비가 되어 있습니다.

2.3. OpenShift 리소스 생성

이 섹션에서는 이러한 새 요소를 만드는 데 필요한 단계를 제공합니다. 3scale 2.6 릴리스의 일부로 다음 OpenShift 요소가 추가되었습니다.

  • 데이터베이스의 새로운 ImageStreams:

    • backend-redis
    • system-redis
    • system-memcached
    • system-mysql
    • zync-database-postgresql
  • 다음 OpenShift 오브젝트가 포함된 New zync-que 구성 요소:

    • zync-que DeploymentConfig
    • zync-que-sa ServiceAccount
    • zync-que 역할
    • zync-que-rolebinding RoleBinding

새 OpenShift 요소를 생성하려면 다음 단계를 따르십시오.

  1. 3scale 2.5가 배포되었을 때 WildcardDomain이 설정된 다음 환경 변수를 생성합니다.

    $ THREESCALE_WILDCARD_DOMAIN=$(oc get configmap system-environment  -o json | jq .data.THREESCALE_SUPERDOMAIN -r)
    Copy to Clipboard Toggle word wrap
  2. THREESCALE_WILDCARD_DOMAIN 환경 변수가 비어 있지 않으며 3scale 2.5를 배포할 때 설정된 Wildcard Domain과 동일한 값이 있는지 확인합니다.

    $ echo ${THREESCALE_WILDCARD_DOMAIN}
    Copy to Clipboard Toggle word wrap
  3. ImageStreams에 설정된 ImportPolicy ImageStream 값이 포함된 다음 환경 변수를 생성합니다.

    $ IMPORT_POLICY_VAL=$(oc get imagestream amp-system -o json | jq -r ".spec.tags[0].importPolicy.insecure")
    if [ "$IMPORT_POLICY_VAL" == "null" ]; then
      IMPORT_POLICY_VAL="false"
    fi
    Copy to Clipboard Toggle word wrap
  4. IMPORT_POLICY_VAL 환경 변수가 true 또는 false 인지 확인합니다.

    $ echo ${IMPORT_POLICY_VAL}
    Copy to Clipboard Toggle word wrap
  5. 3scale Pod에서 app Kubernetes 레이블의 현재 값이 포함된 다음 환경 변수를 생성합니다. 예를 들어 backend-listener Pod에서 가져옵니다.

    $ DEPLOYED_APP_LABEL=$(oc get dc backend-listener -o json | jq .spec.template.metadata.labels.app -r)
    Copy to Clipboard Toggle word wrap
  6. DEPLOYED_APP_LABEL 환경 변수가 비어 있지 않거나 null 인지 확인합니다.

    $ echo ${DEPLOYED_APP_LABEL}
    Copy to Clipboard Toggle word wrap
  7. 3scale 2.6 amp.yml 표준 시나리오 템플릿을 사용하여 2.6 릴리스에 대한 새 OpenShift 오브젝트를 배포합니다.

    $ oc new-app -f amp.yml --param WILDCARD_DOMAIN=${THREESCALE_WILDCARD_DOMAIN} --param IMAGESTREAM_TAG_IMPORT_INSECURE=${IMPORT_POLICY_VAL} --param APP_LABEL=${DEPLOYED_APP_LABEL}
    Copy to Clipboard Toggle word wrap

    여러 오류가 표시됩니다. 이는 일부 요소가 3scale 2.5에 이미 존재하기 때문에 예상됩니다. 오류가 발생하지 않는 유일한 행은 다음과 같습니다.

    imagestream.image.openshift.io "zync-database-postgresql" created
    imagestream.image.openshift.io "backend-redis" created
    imagestream.image.openshift.io "system-redis" created
    imagestream.image.openshift.io "system-memcached" created
    imagestream.image.openshift.io "system-mysql" created
    role.rbac.authorization.k8s.io "zync-que-role" created
    serviceaccount "zync-que-sa" created
    rolebinding.rbac.authorization.k8s.io "zync-que-rolebinding" created
    deploymentconfig.apps.openshift.io "zync-que" created
    Copy to Clipboard Toggle word wrap
  8. 이전에 설명한 모든 새 ImageStream과 새로운 zync-que 관련 요소가 모두 있는지 확인합니다.

    $ oc get is system-redis
    $ oc get is system-mysql
    $ oc get is system-memcached
    $ oc get is zync-database-postgresql
    $ oc get is backend-redis
    $ oc get role zync-que-role
    $ oc get sa zync-que-sa
    $ oc get rolebinding zync-que-rolebinding
    $ oc get dc zync-que
    Copy to Clipboard Toggle word wrap

    이전 명령은 모두 생성된 것을 표시하는 출력을 반환합니다. 또한 다음을 입력하는 경우 다음을 수행합니다.

    $ oc get pods | grep -i zync-que
    Copy to Clipboard Toggle word wrap

    상태가 Error 또는 충돌 중임을 나타내는 다른 오류임을 확인할 수 있습니다. Zync 이미지가 현재 업데이트되어 있지 않기 때문일 수 있습니다. 이는 2.8절. “3scale 이미지 업그레이드” 섹션의 4번에서 수행됩니다.

2.4. Redis Enterprise 및 Redis Sentinel에 대한 시스템 DeploymentConfig 구성

이 섹션에서는 생성한 secret 필드를 사용하도록 기존 시스템 DeploymentConfigs를 구성하는 데 도움이 됩니다. 이러한 시크릿 필드는 system-redis 에서 환경 변수로 사용됩니다.

  1. system -redis 시크릿의 시스템 연결에 대한 Redis Enterprise 호환성과 관련된 필드를 추가합니다.

    $ oc patch secret/system-redis --patch '{"stringData": {"MESSAGE_BUS_SENTINEL_HOSTS": "", "MESSAGE_BUS_SENTINEL_ROLE": "", "SENTINEL_HOSTS": "", "SENTINEL_ROLE": "", "MESSAGE_BUS_NAMESPACE": "", "MESSAGE_BUS_URL": "", "NAMESPACE": ""}}'
    Copy to Clipboard Toggle word wrap
  2. 새 환경 변수를 system-app 컨테이너에 추가합니다.

    $ oc patch dc/system-app -p "$(cat redis-patches/system-app-podcontainers.patch)"
    Copy to Clipboard Toggle word wrap

    이 명령을 실행하면 system-app DeploymentConfig가 재부팅됩니다. DeploymentConfig Pod가 재부팅되고 상태가 다시 준비될 때까지 기다립니다.

  3. 다음 명령으로 DeploymentConfig의 모든 환경 변수를 나열합니다.

    $ oc set env dc a-deployment-config-name --list
    Copy to Clipboard Toggle word wrap
    • 이 명령을 실행하여 이 단계의 항목에 있는 각 패치 명령 전후에 환경 변수 목록을 검색합니다.
    • 다음은 명령을 사용하여 환경 변수를 나열할 수 없고 특정 명령을 요구하는 특수한 사례입니다.

      • pre-hook Pod:

        $ oc get dc system-app -o json | jq .spec.strategy.rollingParams.pre.execNewPod.env
        Copy to Clipboard Toggle word wrap
      • system-sidekiq initContainer

        $ oc get dc system-sidekiq -o json | jq .spec.template.spec.initContainers[0].env
        Copy to Clipboard Toggle word wrap
  4. 새 환경 변수를 system-app pre- hook Pod에 추가합니다.

    $ oc patch dc/system-app -p "$(cat redis-patches/system-app-prehookpod-json.patch)" --type json
    Copy to Clipboard Toggle word wrap

    이전 명령을 실행한 후에도 기존 환경 변수는 변경되지 않고 남아 있습니다. 또한 system-app의 pre-hook Pod 및 system-master, system-provisioner, system-provider의 모든 컨테이너에 시스템 -secret 시크릿을 소스로 사용하여 새 변수가 추가됩니다.

    • REDIS_NAMESPACE
    • MESSAGE_BUS_REDIS_NAMESPACE
    • MESSAGE_BUS_REDIS_URL
    • MESSAGE_BUS_REDIS_SENTINEL_HOSTS
    • MESSAGE_BUS_REDIS_SENTINEL_ROLE
    • REDIS_SENTINEL_HOSTS
    • REDIS_SENTINEL_ROLE
    • BACKEND_REDIS_SENTINEL_HOSTS
    • BACKEND_REDIS_SENTINEL_ROLE
  5. 새 환경 변수를 system-sidekiq 에 추가합니다.

    $ oc patch dc/system-sidekiq -p "$(cat redis-patches/system-sidekiq.patch)"
    Copy to Clipboard Toggle word wrap

    이 명령을 실행하면 system-sidekiq DeploymentConfig가 재부팅됩니다. DeploymentConfig Pod가 재부팅되고 상태가 다시 준비될 때까지 기다립니다.

    이전 명령을 실행한 후 기존 환경 변수를 system-sidekiq InitContainer의 system-sidekiq InitContainer에 유지하여 다음 환경 변수가 추가되었습니다.

    • REDIS_NAMESPACE
    • MESSAGE_BUS_REDIS_NAMESPACE
    • MESSAGE_BUS_REDIS_URL
    • MESSAGE_BUS_REDIS_SENTINEL_HOSTS
    • MESSAGE_BUS_REDIS_SENTINEL_ROLE
    • REDIS_SENTINEL_HOSTS
    • REDIS_SENTINEL_ROLE

      또한 다음 환경 변수가 system-sidekiq 포드에 추가되었습니다.

    • REDIS_NAMESPACE
    • MESSAGE_BUS_REDIS_NAMESPACE
    • MESSAGE_BUS_REDIS_URL
    • MESSAGE_BUS_REDIS_SENTINEL_HOSTS
    • MESSAGE_BUS_REDIS_SENTINEL_ROLE
    • REDIS_SENTINEL_HOSTS
    • REDIS_SENTINEL_ROLE
    • BACKEND_REDIS_SENTINEL_HOSTS
    • BACKEND_REDIS_SENTINEL_ROLE
  6. 새 환경 변수를 system-sphinx에 추가합니다.

    $ oc patch dc/system-sphinx -p "$(cat redis-patches/system-sphinx.patch)"
    Copy to Clipboard Toggle word wrap

    이 명령을 실행하면 system-sphinx DeploymentConfig가 재부팅됩니다. DeploymentConfig Pod가 재부팅되고 상태가 다시 준비될 때까지 기다립니다.

    이전 명령을 실행한 후 기존 환경 변수를 system-sphinx Pod 에 유지하여 다음 환경 변수가 추가되었습니다.

    • REDIS_NAMESPACE
    • MESSAGE_BUS_REDIS_NAMESPACE
    • MESSAGE_BUS_REDIS_URL
    • MESSAGE_BUS_REDIS_SENTINEL_HOSTS
    • MESSAGE_BUS_REDIS_SENTINEL_ROLE
    • REDIS_SENTINEL_HOSTS
    • REDIS_SENTINEL_ROLE
    • REDIS_URL

2.5. Redis Sentinel 환경 변수 수정

이 단계에서는 3scale 2.5의 문제를 해결하여 Redis Sentinel 연결 구성이 backend-worker 및 backend- cron Pod에서 작동하도록 하는 문제를 해결합니다.

  1. 다음 명령을 실행하여 DeploymentConfig InitContainer의 기존 환경 변수를 모두 확인합니다.

    $ oc get dc a-deployment-config-name -o json | jq .spec.template.spec.initContainers[0].env
    Copy to Clipboard Toggle word wrap

    이 명령을 사용하여 이 프로세스에서 실행된 각 패치 명령 전후에 환경 변수 목록을 검색하여 모든 항목이 예상대로 작동하는지 확인합니다.

  2. 백엔드 작업자에서 Redis Sentinel 연결 수정 사항을 적용합니다.

    $ oc patch dc/backend-worker -p "$(cat redis-patches/backend-worker.patch)"
    Copy to Clipboard Toggle word wrap

    이 명령을 실행하면 backend-worker DeploymentConfig의 backend-worker InitContainer에 다음 환경 변수가 추가되었습니다.

    • CONFIG_REDIS_PROXY
    • CONFIG_REDIS_SENTINEL_HOSTS
    • CONFIG_REDIS_SENTINEL_ROLE
    • CONFIG_QUEUES_SENTINEL_HOSTS
    • CONFIG_QUEUES_SENTINEL_ROLE
    • RACK_ENV
  3. backend-cron 에서 Redis Sentinel 연결 수정 사항을 적용합니다.

    $ oc patch dc/backend-cron -p "$(cat redis-patches/backend-cron.patch)"
    Copy to Clipboard Toggle word wrap

    이 명령을 실행하면 backend-cron DeploymentConfig의 backend-cron InitContainer에 다음 환경 변수가 추가되었습니다.

    • CONFIG_REDIS_PROXY
    • CONFIG_REDIS_SENTINEL_HOSTS
    • CONFIG_REDIS_SENTINEL_ROLE
    • CONFIG_QUEUES_SENTINEL_HOSTS
    • CONFIG_QUEUES_SENTINEL_ROLE
    • RACK_ENV

2.6. Zync 환경 변수 수정

  • 다음 명령을 실행하여 zync 환경을 업데이트합니다.

    oc patch dc zync -p '{"spec": {"template": {"spec": {"containers": [{"name": "zync", "env": [{"name": "POD_NAME", "valueFrom": {"fieldRef": {"apiVersion": "v1", "fieldPath": "metadata.name"}}}, {"name": "POD_NAMESPACE", "valueFrom": {"fieldRef": {"apiVersion": "v1", "fieldPath": "metadata.namespace"}}}]}]}}}}'
    Copy to Clipboard Toggle word wrap

2.7. DeploymentConfig 데이터베이스를 ImageStreams로 마이그레이션

2.6에서는 이미지 URL에 대한 직접 참조 대신 ImageStreams에서 컨테이너 이미지를 가져오도록 데이터베이스가 포함된 배포된 3scale DeploymentConfig가 마이그레이션되었습니다.

  1. backend-redis DeploymentConfig를 마이그레이션하여 backend-redis ImageStream을 사용합니다.

    $ oc patch dc/backend-redis -p "$(cat db-imagestream-patches/backend-redis-json.patch)" --type json
    Copy to Clipboard Toggle word wrap
    • 이렇게 하면 backend-redis DeploymentConfig의 재배포가 트리거되고 DeploymentConfig에 backend-redis ImageStream을 참조하는 ImageChange 트리거가 있습니다.
    • backend-worker,backend-cron 또는 backend-listenerbackend-redis 포드를 재배포할 때까지 일시적으로 실패할 수 있습니다.

      DeploymentConfig Pod가 재부팅되고 상태가 다시 준비될 때까지 기다립니다.

  2. system-redis ImageStream을 사용하도록 system-redis DeploymentConfig 마이그레이션:

    $ oc patch dc/system-redis -p "$(cat db-imagestream-patches/system-redis-json.patch)" --type json
    Copy to Clipboard Toggle word wrap
    • 이렇게 하면 system-redis DeploymentConfig의 재배포가 트리거되고 DeploymentConfig에 backend-redis ImageStream을 참조하는 ImageChange 트리거가 있습니다.
    • DeploymentConfig Pod가 재부팅되고 상태가 다시 준비될 때까지 기다립니다.
  3. system-memcache d ImageStream을 사용하도록 system-memcache DeploymentConfig를 마이그레이션합니다.

    $ oc patch dc/system-memcache -p "$(cat db-imagestream-patches/system-memcached-json.patch)" --type json
    Copy to Clipboard Toggle word wrap
    • 이렇게 하면 system-memcache DeploymentConfig의 재배포가 트리거되고 DeploymentConfig에 system-memcached ImageStream을 참조하는 ImageChange 트리거가 있습니다.
    • DeploymentConfig Pod가 재부팅되고 상태가 다시 준비될 때까지 기다립니다.
  4. system-mysql ImageStream을 사용하도록 system-mysql DeploymentConfig 마이그레이션:

    $ oc patch dc/system-mysql -p "$(cat db-imagestream-patches/system-mysql-json.patch)" --type json
    Copy to Clipboard Toggle word wrap
    • 이렇게 하면 system-mysql DeploymentConfig의 재배포가 트리거되고 DeploymentConfig에 system-mysql ImageStream을 참조하는 ImageChange 트리거가 있습니다.
    • DeploymentConfig Pod가 재부팅되고 상태가 다시 준비될 때까지 기다립니다.
  5. Migrate zync-database DeploymentConfig to use zync-database-postgresql ImageStream:

    $ oc patch dc/zync-database -p "$(cat db-imagestream-patches/zync-database-postgresql.patch)"
    Copy to Clipboard Toggle word wrap
    • 이렇게 하면 the zync-database DeploymentConfig의 재배포가 트리거되고 DeploymentConfig에 이제 zync-database-postgresql ImageStream을 참조하는 ImageChange 트리거가 있습니다.
    • The zync DeploymentConfig 포드는 zync-database 를 다시 사용할 수 있을 때까지 일시적으로 실패할 수 있으며, 준비 상태가 다시 준비될 때까지 다소 시간이 걸릴 수 있습니다. 몇 분 후에 모든 'zync' DeploymentConfig Pod가 Ready 상태인지 확인합니다.
    • 계속하기 전에 DeploymentConfig Pod가 재부팅되고 준비 상태가 다시 준비될 때까지 기다립니다.
  6. 더 이상 사용되지 않는 postgresql ImageStream을 제거합니다.

    $ oc delete ImageStream postgresql
    Copy to Clipboard Toggle word wrap
  7. 성공을 확인하려면 다음을 확인합니다.

    • 이제 모든 데이터베이스 관련 DeploymentConfigs에서 ImageStream을 사용합니다. 해당 데이터베이스 ImageStream을 가리키는 ImageChange 트리거가 생성되었는지 확인할 수 있습니다.
    • ImageChange 트리거에는 registry.redhat.io 를 가리키는 URL이 포함된 lastTriggeredImage 필드가 있습니다.

2.8. 3scale 이미지 업그레이드

  1. amp-system 이미지 스트림을 패치합니다.

    $ oc patch imagestream/amp-system --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "AMP system 2.6"}, "from": { "kind": "DockerImage", "name": "registry.redhat.io/3scale-amp26/system"}, "name": "2.6", "referencePolicy": {"type": "Source"}}}]'
    $ oc patch imagestream/amp-system --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "AMP system (latest)"}, "from": { "kind": "ImageStreamTag", "name": "2.6"}, "name": "latest", "referencePolicy": {"type": "Source"}}}]'
    Copy to Clipboard Toggle word wrap

    이는 system-app, system- sphinxsystem- sidekiq DeploymentConfigs의 재배포를 트리거합니다. 재배포될 때까지 기다린 후 해당 새 포드가 준비되고 이전 Pod가 종료될 때까지 기다립니다.

    참고

    Oracle Database를 사용하는 경우 Oracle Database와 함께 3scale 시스템 이미지의 지침에 따라 위의 지침을 실행한 후 시스템 이미지를 다시 빌드해야 합니다. https://access.redhat.com/documentation/en-us/red_hat_3scale_api_management/2.6/html/installing_3scale/system-oracle-support

  2. amp-apicast 이미지 스트림을 패치합니다.

    $ oc patch imagestream/amp-apicast --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "AMP APIcast 2.6"}, "from": { "kind": "DockerImage", "name": "registry.redhat.io/3scale-amp26/apicast-gateway"}, "name": "2.6", "referencePolicy": {"type": "Source"}}}]'
    $ oc patch imagestream/amp-apicast --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "AMP APIcast (latest)"}, "from": { "kind": "ImageStreamTag", "name": "2.6"}, "name": "latest", "referencePolicy": {"type": "Source"}}}]'
    Copy to Clipboard Toggle word wrap

    이는 apicast-production 및 apicast- staging DeploymentConfigs의 재배포를 트리거합니다. 재배포될 때까지 기다린 후 해당 새 포드가 준비되고 이전 Pod가 종료될 때까지 기다립니다.

  3. amp-backend 이미지 스트림을 패치합니다.

    $ oc patch imagestream/amp-backend --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "AMP Backend 2.6"}, "from": { "kind": "DockerImage", "name": "registry.redhat.io/3scale-amp26/backend"}, "name": "2.6", "referencePolicy": {"type": "Source"}}}]'
    $ oc patch imagestream/amp-backend --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "AMP Backend (latest)"}, "from": { "kind": "ImageStreamTag", "name": "2.6"}, "name": "latest", "referencePolicy": {"type": "Source"}}}]'
    Copy to Clipboard Toggle word wrap

    이렇게 하면 backend-listener, backend- worker, backend- cron DeploymentConfigs의 재배포가 트리거됩니다. 재배포될 때까지 기다린 후 해당 새 포드가 준비되고 이전 Pod가 종료될 때까지 기다립니다.

  4. amp-zync 이미지 스트림을 패치합니다.

    $ oc patch imagestream/amp-zync --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "AMP Zync 2.6"}, "from": { "kind": "DockerImage", "name": "registry.redhat.io/3scale-amp26/zync"}, "name": "2.6", "referencePolicy": {"type": "Source"}}}]'
    $ oc patch imagestream/amp-zync --type=json -p '[{"op": "add", "path": "/spec/tags/-", "value": {"annotations": {"openshift.io/display-name": "AMP Zync (latest)"}, "from": { "kind": "ImageStreamTag", "name": "2.6"}, "name": "latest", "referencePolicy": {"type": "Source"}}}]'
    Copy to Clipboard Toggle word wrap
    • 이렇게 하면 zync 및 zync -que DeploymentConfigs의 재배포가 트리거됩니다. 재배포될 때까지 기다린 후 해당 새 포드가 준비되고 이전 Pod가 종료될 때까지 기다립니다.
    • 또한 이전 섹션에서 생성할 때 Error 상태이고 해당 Pod가 Ready 상태의 상태인 that zync-que 가 표시됩니다.
  5. 표시되는 릴리스 버전을 업데이트합니다.

    $ oc set env dc/system-app AMP_RELEASE=2.6
    Copy to Clipboard Toggle word wrap

    그러면 system-app DeploymentConfig의 재배포가 트리거됩니다. 작업이 수행되고 해당 Pod가 준비되고 이전 Pod가 종료될 때까지 기다립니다.

  6. 마지막으로 DeploymentConfigs의 모든 이미지 URL에 새 이미지 레지스트리 URL이 포함되어 있는지 확인할 수 있습니다(각 URL 끝에 해시가 추가됨).

    $ THREESCALE_DC_NAMES="apicast-production apicast-staging apicast-wildcard-router backend-cron backend-listener backend-redis backend-worker system-app system-memcache system-mysql system-redis system-sidekiq system-sphinx zync zync-database"
    for component in ${THREESCALE_DC_NAMES}; do echo -n "${component} image: " && oc get dc $component -o json | jq .spec.template.spec.containers[0].image ; done
    Copy to Clipboard Toggle word wrap

2.9. WildcardRouter에서 Zync Route Management로 마이그레이션

3scale 2.6에서는 WildcardRouter 구성 요소와 와일드카드 OpenShift 경로가 제거되었으며 이제 Zync 하위 시스템에서 관리하는 개별 OpenShift 경로로 생성됩니다. 이 절차에서는 WildcardRouter에서 Zync로 경로 관리 마이그레이션을 자세히 설명합니다.

이 시점에서 모든 3scale 이미지가 3scale 2.6으로 업그레이드되었습니다. 3scale 서비스 및 테넌트에 해당하는 OpenShift 경로 생성 및 삭제는 Zync 하위 시스템에서 자동으로 관리합니다. 또한 이전 섹션에서 수행한 새로운 OpenShift 요소를 추가하여 모든 새로운 Zync 인프라를 사용할 수 있습니다.

OpenShift 경로 관리를 WildcardRouter에서 Zync로 마이그레이션하려면 OpenShift 경로 및 와일드카드 경로와 관련된 이전 3scale 테넌트 및 서비스를 제거한 다음 Zync에서 기존 서비스 및 테넌트를 강제로 다시 평가해야 합니다. 그러면 Zync가 현재 보유하고 있는 것과 동일한 경로를 만들 수 있습니다.

공용 기본 URL이 수정되면 이벤트가 system-app에서 트리거되고 system- redis에 저장된 작업 대기열을 통해 system- sidekiq 에 알립니다. 그런 다음 작업이 백그라운드에서 처리되고 데이터가 이미 존재하는지 thezync -db인지 확인하는 zync 로 전송됩니다. 변경 사항을 감지하면 처리된 in zync-que 작업을 통해 새 경로를 생성합니다.

중요

어떤 작업을 수행하기 전에 SSL 인증서를 일부 경로에 수동으로 설치한 경우 경로에 할당된 인증서를 복사하고 각 인증서에 할당된 경로를 기록해야 합니다. 인증서 기능을 유지하려면 Zync에서 생성할 새로운 동등한 경로에 설치해야 합니다.

참고
  • 서비스는 기본적으로 호스팅된 옵션으로 마이그레이션됩니다.
  • Public Base URL은 자동으로 채워지며 경로는 Zync에 의해 생성됩니다.
  • 1 단계는 self_managed 옵션을 사용하여 외부 APIcast 게이트웨이를 구성하는 경우에만 필요합니다.
  • 3scale_managed 옵션을 선택하면 Zync에서 경로가 자동으로 관리됩니다.

절차

  1. Zync가 외부 게이트웨이의 경로를 관리하지 않는다는 점을 고려할 때 제안된 대안 중 하나에 따라 Zync에서 관리하지 않는 각 서비스의 배포 옵션을 수정할 수 있습니다.

    • 3scale에서:

      1. 통합 페이지로 이동하여 통합 설정 편집을 클릭합니다.
      2. 올바른 배포 옵션을 선택하고 다음과 같은 경우 변경 사항을 저장합니다.
    • API 사용:

      1. 액세스 토큰(ACCESS_TOKEN) 및 테넌트 끝점(TENANT_URL)을 사용하여 서비스ID를 사용하여 서비스를 업데이트합니다.

        $ curl -XPUT "${TENANT_URL}/admin/api/services/${ID}.json" -d deployment_option=self_managed -d access_token="${ACCESS_TOKEN}"
        Copy to Clipboard Toggle word wrap

        또는 APIcast 호스팅을 사용하는 경우 아래 명령을 사용할 수 있습니다.

        $ curl -XPUT "${TENANT_URL}/admin/api/services/${ID}.json" -d deployment_option=hosted -d access_token="${ACCESS_TOKEN}"
        Copy to Clipboard Toggle word wrap
      2. 각 테넌트의 각 서비스에 대해 3scale 또는 API를 통해 deployment_option 필드를 수정합니다.

        • 다음은 deployment_option을 self_ managed 로 설정할 수 있는 경우입니다.

          • APIcast는 OpenShift의 사용자 정의 경로에 연결됩니다.
          • APIcast는 OpenShift 외부에서 호스팅됩니다.
          • APICAST_PATH_ROUTINGtrue 로 설정되어 있습니다.
        • 다른 경우에는 deployment_optionhosted 로 설정합니다.
  2. 기존 경로 중 일부는 2.5에서 3scale에 의해 자동으로 생성되었습니다. 먼저 삭제하십시오.

    $ oc delete route system-master
    $ oc delete route system-provider-admin
    $ oc delete route system-developer
    $ oc delete route api-apicast-production
    $ oc delete route api-apicast-staging
    Copy to Clipboard Toggle word wrap
    • WILDCARD_POLICY=Subdomain 을 사용하여 3scale 2.5를 배포한 경우 다음을 사용하여 와일드카드 경로를 제거해야 합니다.

      $ oc delete route apicast-wildcard-router
      Copy to Clipboard Toggle word wrap
    • 그렇지 않으면, WILDCARD_POLICY=Subdomain 없이 3scale 2.5를 배포한 경우 Zync가 생성할 경로를 복제하지 않도록 3scale 테넌트 및 서비스에 대해 수동으로 생성한 경로를 제거해야 합니다.

이 시점에서 서비스 및 테넌트와 관련된 모든 경로가 제거되어야 합니다. 이제 Zync에서 동등한 경로를 생성합니다.

  1. Zync를 사용하여 모든 3scale 서비스 및 테넌트 OpenShift 경로를 강제로 다시 동기화합니다.

    $ SYSTEM_SIDEKIQ_POD=$(oc get pods | grep sidekiq | awk '{print $1}')
    Copy to Clipboard Toggle word wrap
  2. SYSTEM_SIDEKIQ_POD 환경 변수 결과가 비어 있지 않은지 확인합니다.

    $ echo ${SYSTEM_SIDEKIQ_POD}
    Copy to Clipboard Toggle word wrap
  3. 마지막으로 resynchronization을 수행합니다.

    $ oc exec -it ${SYSTEM_SIDEKIQ_POD} -- bash -c 'bundle exec rake zync:resync:domains'
    Copy to Clipboard Toggle word wrap

    시스템 알림에 대한 정보와 함께 이 스타일의 출력이 표시됩니다.

    No valid API key has been set, notifications will not be sent
    ActiveMerchant MODE set to 'production'
    [Core] Using http://backend-listener:3000/internal/ as URL
    OpenIdAuthentication.store is nil. Using in-memory store.
    [EventBroker] notifying subscribers of Domains::ProviderDomainsChangedEvent 59a554f6-7b3f-4246-9c36-24da988ca800
    [EventBroker] notifying subscribers of ZyncEvent caa8e941-b734-4192-acb0-0b12cbaab9ca
    Enqueued ZyncWorker#d92db46bdba7a299f3e88f14 with args: ["caa8e941-b734-4192-acb0-0b12cbaab9ca", {:type=>"Provider", :id=>1, :parent_event_id=>"59a554f6-7b3f-4246-9c36-24da988ca800", :parent_event_type=>"Domains::ProviderDomainsChangedEvent", :tenant_id=>1}]
    [EventBroker] notifying subscribers of Domains::ProviderDomainsChangedEvent 9010a199-2af1-4023-9b8d-297bd618096f
    …
    Copy to Clipboard Toggle word wrap

    Zync가 모든 기존 테넌트 및 서비스에 대해 새 경로가 생성됩니다. 경로 생성에는 서비스 및 테넌트 수에 따라 몇 분이 걸릴 수 있습니다.

    프로세스가 끝나면 다음이 생성됩니다.

    • 마스터 관리 포털 경로 1개

      3scale 테넌트마다 두 개의 경로가 생성됩니다.

    • 테넌트의 관리 포털 경로.
    • 테넌트의 개발자 포털 경로.

      3scale 서비스마다 두 개의 경로가 생성됩니다.

    • 서비스에 해당하는 APIcast 스테이징 경로입니다.
    • 서비스에 해당하는 APIcast 프로덕션 경로입니다.
  4. 위에서 설명한 모든 예상 경로가 기존 서비스 및 테넌트에 대해 생성되었는지 확인합니다. 다음을 실행하여 모든 경로를 볼 수 있습니다.

    $ oc get routes
    Copy to Clipboard Toggle word wrap

    이전 명령의 출력으로 표시된 host/port 필드는 경로의 URL이어야 합니다.

    • WILDCARD_POLICY를 Subdomain 으로 설정하여 3scale 2.5를 배포한 경우 모든 새 경로는 이전 OpenShift 와일드카드 경로와 동일한 기본 WildcardDomain을 보유해야 합니다.
    • 그렇지 않으면 WILDCARD_POLICY=Subdomain 없이 3scale 2.5를 배포한 경우 새 경로는 2.5 릴리스에서 3scale에 의해 자동으로 생성된 항목을 포함하여 제거된 경로와 동일한 호스트를 보유해야 합니다.
  5. 마지막으로 이전 와일드카드 경로에 사용자 지정 SSL 인증서를 사용하거나 수동으로 생성한 경로를 사용하는 경우 Zync에서 생성한 새 경로에 설치합니다. OpenShift 웹 패널을 통해 경로를 편집하고 인증서/s를 추가하여 수행할 수 있습니다.
  6. 새 경로를 사용하여 이 마이그레이션 전에 존재했던 서비스 및 테넌트를 계속 확인할 수 있는지 확인합니다. 다음 테스트를 수행하려면 다음을 수행합니다.

    1. 이 마이그레이션 전에 이미 존재하는 3scale 서비스에 연결된 기존 APIcast 프로덕션 URL의 경로를 해결합니다.
    2. 이 마이그레이션 전에 이미 존재하는 3scale 서비스에 연결된 기존 APIcast 스테이징 URL의 경로를 해결합니다.
    3. 이 마이그레이션 전에 이미 존재하는 기존 테넌트의 경로를 확인합니다.
  7. 새로운 Zync 기능이 작동하는지 확인할 때 새 테넌트 및 서비스를 생성할 때 새 경로가 생성되는지 확인합니다. 다음 테스트를 수행하려면 다음을 수행합니다.

    1. '마스터' 패널에서 새 테넌트를 만들고 몇 초 후에 OpenShift에 연결된 새 경로가 표시되는지 확인합니다.
    2. 기존 테넌트 중 하나에서 새 서비스를 생성하고 몇 초 후에 OpenShift에 연결된 새 경로가 표시되는지 확인합니다.
  8. apicast-wildcard-router 서비스를 제거합니다.

    $ oc delete service apicast-wildcard-router
    Copy to Clipboard Toggle word wrap
  9. 더 이상 사용되지 않는 WildcardRouter 하위 시스템을 제거합니다.

    $ oc delete ImageStream amp-wildcard-router
    $ oc delete DeploymentConfig apicast-wildcard-router
    Copy to Clipboard Toggle word wrap

    나열된 모든 단계를 수행한 후 2.5에서 2.6으로 3scale 업그레이드가 완료되었습니다.

법적 공지

Copyright © 2023 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat