1.2. OpenShift 4.x에서 Fuse 콘솔 설정
OpenShift 4.x에서 Fuse 콘솔을 설정하려면 보안, 설치 및 배포가 필요합니다.
먼저 1.2.1절. “OpenShift 4.x에서 Fuse Console을 보호하기 위한 인증서 생성” 에 설명된 대로 Fuse 콘솔을 보호할 수 있도록 클라이언트 인증서를 생성해야 합니다.
클라이언트 인증서를 생성한 후 명령줄과 Fuse Console 템플릿 중 하나를 사용하여 Fuse Console을 설치 및 배포하여 OpenShift 클러스터 또는 특정 네임스페이스의 여러 네임스페이스의 Fuse 애플리케이션에 액세스할 수 있습니다.
- Fuse Console의 사용자 관리는 OpenShift에서 처리합니다.
- 배포 후 Fuse Console에 액세스하는 사용자의 경우 OpenShift에서 Fuse를 사용할 수 없습니다.
1.2.1. OpenShift 4.x에서 Fuse Console을 보호하기 위한 인증서 생성
OpenShift 4.x에서는 Fuse Console 프록시와 Jolokia 에이전트 간에 안전하게 연결을 유지하려면 Fuse Console을 배포하기 전에 클라이언트 인증서를 생성해야 합니다. 서비스 서명 인증 기관 개인 키를 사용하여 클라이언트 인증서에 서명해야 합니다.
각 OpenShift 클러스터에 대해 별도의 클라이언트 인증서를 생성하고 서명해야 합니다. 두 개 이상의 클러스터에 동일한 인증서를 사용하지 마십시오.
사전 요구 사항
-
OpenShift 클러스터에 대한
클러스터 관리자
액세스 권한이 있어야 합니다. 두 개 이상의 OpenShift 클러스터에 대한 인증서를 생성하고 이전에 현재 디렉터리에 다른 클러스터에 대한 인증서를 생성한 경우 다음 중 하나를 수행하여 현재 클러스터에 대한 다른 인증서를 생성하십시오.
-
현재 디렉터리에서 기존 인증서 파일(예:
ca.crt
,ca.key
,ca.srl
)을 삭제합니다. 다른 작업 디렉터리로 변경합니다. 예를 들어 현재 작업 디렉터리 이름이
cluster1
인 경우 새cluster2
디렉터리를 생성하고 작업 디렉터리를 해당 디렉터리로 변경합니다.mkdir ../cluster2
cd ../cluster2
-
현재 디렉터리에서 기존 인증서 파일(예:
절차
클러스터 관리자 액세스 권한이 있는 사용자로 OpenShift에 로그인합니다.
oc login -u <user_with_cluster_admin_role>
다음 명령을 실행하여 서비스 서명 인증 기관 키를 검색합니다.
인증서를 검색하려면 다음을 수행합니다.
oc get secrets/signing-key -n openshift-service-ca -o "jsonpath={.data['tls\.crt']}" | base64 --decode > ca.crt
개인 키를 검색하려면 다음을 수행합니다.
oc get secrets/signing-key -n openshift-service-ca -o "jsonpath={.data['tls\.key']}" | base64 --decode > ca.key
easyrsa
,openssl
또는cfssl
을 사용하여 Kubernetes 인증서 관리에 설명된 대로 클라이언트 인증서를 생성합니다.다음은 openssl을 사용하는 예제 명령입니다.
개인 키를 생성합니다.
openssl genrsa -out server.key 2048
CSR 구성 파일을 작성합니다.
cat <<EOT >> csr.conf [ req ] default_bits = 2048 prompt = no default_md = sha256 distinguished_name = dn [ dn ] CN = fuse-console.fuse.svc [ v3_ext ] authorityKeyIdentifier=keyid,issuer:always keyUsage=keyEncipherment,dataEncipherment,digitalSignature extendedKeyUsage=serverAuth,clientAuth EOT
CSR을 생성합니다.
openssl req -new -key server.key -out server.csr -config csr.conf
서명된 인증서를 발급합니다.
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 10000 -extensions v3_ext -extfile csr.conf
다음 단계
명령줄을 사용하여 OpenShift 4.x에 Fuse Console 설치 및 배포에 설명된 대로 Fuse Console의 시크릿을 생성하려면 이 인증서가 필요합니다.
1.2.2. 명령줄을 사용하여 OpenShift 4.x에 Fuse Console 설치 및 배포
OpenShift 4.x에서는 명령줄에서 Fuse 콘솔을 설치하고 배포할 다음 배포 옵션 중 하나를 선택할 수 있습니다.
- 클러스터 - Fuse Console은 OpenShift 클러스터의 여러 네임스페이스(프로젝트)에 배포된 Fuse 애플리케이션을 검색하고 연결할 수 있습니다. 이 템플릿을 배포하려면 OpenShift 클러스터에 대한 관리자 역할이 있어야 합니다.
- 네임스페이스 - Fuse Console은 특정 OpenShift 프로젝트(네임스페이스)에 액세스할 수 있습니다. 이 템플릿을 배포하려면 OpenShift 프로젝트에 대한 관리자 역할이 있어야 합니다.
Fuse Console 템플릿의 매개변수 목록을 보려면 다음 OpenShift 명령을 실행합니다.
oc process --parameters -f https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.fuse-750056-redhat-00006/fuse-console-namespace-os4.json
사전 요구 사항
- Fuse 콘솔을 설치하고 배포하기 전에 OpenShift 4.x에서 Fuse Console을 보호하기 위해 인증서 생성에 설명된 대로 서비스 서명 인증 기관으로 서명된 클라이언트 인증서를 생성해야 합니다.
-
OpenShift
클러스터에 대한 클러스터 관리자
역할이 있어야 합니다. - OpenShift 4.x 서버에 Fuse 이미지 스트림 설치 및 템플릿에 설명된 대로 Fuse 콘솔 이미지 스트림(다른 Fuse 이미지 스트림과 함께)이 설치됩니다.
절차
다음 명령을 사용하여 모든 템플릿 목록을 검색하여 Fuse Console 이미지 스트림이 설치되었는지 확인합니다.
oc get template -n openshift
선택적으로 이미 설치된 이미지 스트림을 새 릴리스 태그로 업데이트하려면 다음 명령을 사용하여 Fuse Console 이미지를 openshift 네임스페이스로 가져옵니다.
oc import-image fuse7/fuse7-console:1.5 --from=registry.redhat.io/fuse7/fuse-console:1.5 --confirm -n openshift
https://raw.githubusercontent.com/jboss-fuse/application-templates/application-templates-2.1.fuse-750056-redhat-00006
에서 원시 형식으로 다음 Fuse Console 템플릿 중 하나를 선택한 로컬 디렉터리(예: mytemp)로 다운로드합니다.-
클러스터 템플릿:
fuse-console-cluster-os4.json
-
네임스페이스 템플릿:
fuse-console-namespace-os4.json
-
클러스터 템플릿:
네임스페이스 템플릿의 경우 다음 단계로 건너뜁니다.
클러스터 템플릿의 경우 선택한 편집기에서
fuse-console-cluster-os4.json
파일의 로컬 사본을 편집하여"grantMethod": "auto"
속성을OAuthClient
섹션에 추가합니다.{ "kind": "OAuthClient", "apiVersion": "v1", "metadata": { "name": "${APP_NAME}-oauth-client" }, "grantMethod": "auto", "redirectURIs": [ "https://${ROUTE_HOSTNAME}" ] }
다음 명령을 실행하여 Fuse Console APP_NAME 값을 가져옵니다(여기서 mytemp 는 Fuse Console 템플릿이 포함된 로컬 디렉터리의 경로입니다).
클러스터 템플릿의 경우:
oc process --parameters -f mytemp/fuse-console-cluster-os4.json
네임스페이스 템플릿의 경우:
oc process --parameters -f mytemp/fuse-console-namespace-os4.json
OpenShift 4.x에서 Fuse Console 보안에서 생성한 인증서에서 다음 명령을 사용하여 시크릿을 생성하고 Fuse Console에 마운트합니다(여기서 APP_NAME 은 Fuse Console 애플리케이션의 이름입니다.
oc create secret tls APP_NAME-tls-proxying --cert server.crt --key server.key
다음 명령을 실행하여 Fuse Console 템플릿의 로컬 복사본을 기반으로 새 애플리케이션을 생성합니다. 여기서 myproject 는 OpenShift 프로젝트의 이름, mytemp 는 Fuse Console 템플릿이 포함된 로컬 디렉터리의 경로입니다. myhost 는 Fuse Console에 액세스할 수 있는 호스트 이름입니다.
클러스터 템플릿의 경우:
oc new-app -n myproject -f mytemp/fuse-console-cluster-os4.json -p ROUTE_HOSTNAME=myhost
네임스페이스 템플릿의 경우:
oc new-app -n myproject -f mytemp/fuse-console-namespace-os4.json
다음 명령을 실행하여 Fuse Console 배포의 상태 및 URL을 가져옵니다.
oc status
- 브라우저에서 Fuse 콘솔에 액세스하려면 6단계에서 반환된 URL(예: https://fuse-console.192.168.64.12.nip.io)을 사용합니다.
1.2.3. OpenShift 4.x에서 Fuse Console 업그레이드
Red Hat OpenShift 4.x는 Red Hat Fuse Operator를 포함하여 Operator에 대한 업데이트를 처리합니다. 자세한 내용은 Operator OpenShift 설명서 를 참조하십시오.
결과적으로 Operator 업데이트는 애플리케이션 업그레이드를 트리거할 수 있습니다. 애플리케이션 업그레이드 방법은 애플리케이션 구성 방법에 따라 다릅니다.
Fuse Console 애플리케이션의 경우 애플리케이션 사용자 정의 리소스 정의의 .spec.version
필드를 편집하여 해당 애플리케이션에 대한 업그레이드를 트리거할 시기를 지정할 수 있습니다.
사전 요구 사항
- OpenShift 클러스터 관리자 권한이 있어야 합니다.
절차
Fuse Console 애플리케이션을 업그레이드하려면 다음을 수행합니다.
터미널 창에서 다음 명령을 사용하여 애플리케이션 사용자 정의 리소스 정의의
.spec.version
필드를 변경합니다.oc patch <project-name> <custom-resource-name> --type='merge' -p '{"spec":{"version":"1.7.1"}}'
예를 들면 다음과 같습니다.
oc patch myproject example-fuseconsole --type='merge' -p '{"spec":{"version":"1.7.1"}}'
애플리케이션 상태가 업데이트되었는지 확인합니다.
oc get myproject
응답에는 버전 번호를 포함하여 애플리케이션에 대한 정보가 표시됩니다.
NAME AGE URL IMAGE example-fuseconsole 1m https://fuseconsole.192.168.64.38.nip.io docker.io/fuseconsole/online:1.7.1
.spec.version
필드의 값을 변경하면 OpenShift에서 애플리케이션을 자동으로 재배포합니다.버전 변경으로 트리거되는 재배포 상태를 확인하려면 다음을 수행합니다.
oc rollout status deployment.v1.apps/example-fuseconsole
성공적인 배포에는 다음 응답이 표시됩니다.
deployment "example-fuseconsole" successfully rolled out