Ubuntu 20.04에서 OpenShift Origin PaaS 서버를 설치하고 구성하는 방법
이 튜토리얼은 다음 OS 버전에 대해 존재합니다.
- Ubuntu 20.04(Focal Fossa)
- Ubuntu 18.04(Bionic Beaver)
이 페이지에서
- 전제 조건
- Docker CE 설치
- OpenShift 오리진 다운로드
- OpenSif 오리진 클러스터 시작
- OpenShift에서 프로젝트 생성\n
- OpenShift 웹 콘솔에 액세스
- OpenShift Origin에 애플리케이션 배포\n
- 외부 액세스 확인\n
- 결론
OpenShift는 개발자가 클라우드 인프라에서 애플리케이션을 개발하고 배포할 수 있도록 하는 Red Hat에서 개발한 무료 오픈 소스 클라우드 개발 PaaS(Platform as a Service)입니다. Kubernetes의 커뮤니티 배포이며 애플리케이션의 개발 및 릴리스 주기를 단축할 수 있습니다. 컨테이너 리소스, 컨테이너 상태, 컨테이너가 상주하는 노드, 노드의 IP 주소 등을 모니터링할 수 있는 간단하고 사용하기 쉬운 웹 인터페이스가 함께 제공됩니다.
이 튜토리얼에서는 Ubuntu 20.04 서버에 OpenShift Origin을 설치하는 방법을 설명합니다.
전제 조건
- Ubuntu 20.04를 실행하는 서버.\n
- 서버에 루트 암호가 구성되어 있습니다.\n
도커 CE 설치
먼저 Docker 컨테이너에서 모든 OKD 서비스를 실행하려면 시스템에 Docker CE를 설치해야 합니다. 기본적으로 Docker CE의 최신 버전은 Ubuntu 20.04 기본 리포지토리에서 사용할 수 있습니다. 다음 명령을 실행하여 설치할 수 있습니다.
apt-get install docker.io -y
Docker가 설치되면 Docker 서비스를 시작하고 다음 명령을 사용하여 부팅 시 시작되도록 활성화합니다.
systemctl start docker
systemctl enable docker
다음 명령을 사용하여 Docker 서비스의 상태를 확인할 수도 있습니다.
systemctl status docker
다음 출력이 표시되어야 합니다.
? docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; disabled; vendor preset: enabled) Active: active (running) since Fri 2020-05-29 12:25:47 UTC; 2s ago TriggeredBy: ? docker.socket Docs: https://docs.docker.com Main PID: 48433 (dockerd) Tasks: 10 Memory: 36.5M CGroup: /system.slice/docker.service ??48433 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock May 29 12:25:47 ubunt4 dockerd[48433]: time="2020-05-29T12:25:47.215078550Z" level=warning msg="Your kernel does not support swap memory l> May 29 12:25:47 ubunt4 dockerd[48433]: time="2020-05-29T12:25:47.215139097Z" level=warning msg="Your kernel does not support cgroup blkio > May 29 12:25:47 ubunt4 dockerd[48433]: time="2020-05-29T12:25:47.215169580Z" level=warning msg="Your kernel does not support cgroup blkio > May 29 12:25:47 ubunt4 dockerd[48433]: time="2020-05-29T12:25:47.215721944Z" level=info msg="Loading containers: start." May 29 12:25:47 ubunt4 dockerd[48433]: time="2020-05-29T12:25:47.418058547Z" level=info msg="Default bridge (docker0) is assigned with an > May 29 12:25:47 ubunt4 dockerd[48433]: time="2020-05-29T12:25:47.515158041Z" level=info msg="Loading containers: done." May 29 12:25:47 ubunt4 dockerd[48433]: time="2020-05-29T12:25:47.545778830Z" level=info msg="Docker daemon" commit=afacb8b7f0 graphdriver(> May 29 12:25:47 ubunt4 dockerd[48433]: time="2020-05-29T12:25:47.546068892Z" level=info msg="Daemon has completed initialization" May 29 12:25:47 ubunt4 dockerd[48433]: time="2020-05-29T12:25:47.599029431Z" level=info msg="API listen on /run/docker.sock" May 29 12:25:47 ubunt4 systemd[1]: Started Docker Application Container Engine.
이 시점에서 Docker가 설치되어 실행 중입니다. 이제 다음 단계를 진행할 수 있습니다.
OpenShift 오리진 다운로드
이 튜토리얼을 작성할 당시 OpenShift Origin의 최신 버전은 v3.11.0입니다. 다음 명령을 사용하여 Git Hub 리포지토리에서 다운로드할 수 있습니다.
wget https://github.com/openshift/origin/releases/download/v3.11.0/openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz
다운로드가 완료되면 다음 명령을 사용하여 다운로드한 파일의 압축을 풉니다.
tar -xvzf openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit.tar.gz
다음으로 디렉터리를 추출된 디렉터리로 변경하고 kubectl 및 oc 바이너리를 /usr/local/bin 디렉터리에 복사합니다.
cd openshift-origin-client-tools-v3.11.0-0cbc58b-linux-64bit
cp oc kubectl /usr/local/bin/
그런 다음 다음 명령을 사용하여 OpenShift 클라이언트 유틸리티의 설치를 확인합니다.
oc version
다음 출력이 표시되어야 합니다.
oc v3.11.0+0cbc58b kubernetes v1.11.0+d4cacc0 features: Basic-Auth GSSAPI Kerberos SPNEGO
다음으로 새 daemon.json 파일을 만들고 Insecure Docker 레지스트리 사용을 허용해야 합니다.
nano /etc/docker/daemon.json
다음 줄을 추가합니다.
{ "insecure-registries" : [ "172.30.0.0/16" ] }
파일을 저장하고 닫은 다음 Docker 서비스를 다시 시작하여 변경 사항을 구현합니다.
systemctl restart docker
OpenShif 오리진 클러스터 시작
이제 시스템 IP를 지정하여 OpenShift Origin 클러스터를 시작합니다.
oc cluster up --public-hostname=your-server-ip
서버가 성공적으로 시작되면 다음 출력이 표시되어야 합니다.
Login to server ... Creating initial project "myproject" ... Server Information ... OpenShift server started. The server is accessible via web console at: https://your-server-ip:8443 You are logged in as: User: developer Password:To login as administrator: oc login -u system:admin
이제 다음 명령을 사용하여 관리자로 클러스터에 로그인합니다.
oc login -u system:admin
로그인하면 다음과 같은 결과가 표시됩니다.
Logged into "https://your-server-ip:8443" as "system:admin" using existing credentials. You have access to the following projects and can switch between them with 'oc project': default kube-dns kube-proxy kube-public kube-system * myproject openshift openshift-apiserver openshift-controller-manager openshift-core-operators openshift-infra openshift-node openshift-service-cert-signer openshift-web-console Using project "myproject".
그런 다음 다음 명령을 사용하여 기본 프로젝트로 변경합니다.
oc project default
산출:
Now using project "default" on server "https://your-server-ip:8443".
이제 다음 명령을 사용하여 프로젝트의 현재 상태를 확인합니다.
oc status
다음 출력이 표시되어야 합니다.
In project default on server https://your-server-ip:8443 svc/docker-registry - 172.30.1.1:5000 dc/docker-registry deploys docker.io/openshift/origin-docker-registry:v3.11 deployment #1 deployed 2 minutes ago - 1 pod svc/kubernetes - 172.30.0.1:443 -> 8443 svc/router - 172.30.94.157 ports 80, 443, 1936 dc/router deploys docker.io/openshift/origin-haproxy-router:v3.11 deployment #1 deployed 2 minutes ago - 1 pod View details with 'oc describe/ ' or list everything with 'oc get all'.
OpenShift에서 프로젝트 생성
이제 다음 명령을 사용하여 개발자 사용자로 OpenShift에 로그인합니다.
oc login
아래와 같이 사용자 이름과 비밀번호를 입력하라는 메시지가 표시됩니다.
Authentication required for https://your-server-ip:8443 (openshift) Username: developer Password:
개발자로 사용자 이름을 입력하고 개발자로 비밀번호를 입력하고 Enter 키를 누릅니다. 다음 출력이 표시되어야 합니다.
Login successful. You have one project on this server: "myproject" Using project "myproject".
새 프로젝트를 만들려면 다음 명령을 실행합니다.
oc new-project dev --display-name="Project - Dev" --description="My Project"
다음 출력이 표시되어야 합니다.
Now using project "dev" on server "https://your-server-ip:8443". You can add applications to this project with the 'new-app' command. For example, try: oc new-app centos/ruby-25-centos7~https://github.com/sclorg/ruby-ex.git to build a new example application in Ruby.
OpenShift 웹 콘솔에 액세스
이제 웹 브라우저를 열고 URL https://your-server-ip:8443/console을 입력하십시오. OpenShift 로그인 페이지가 표시되어야 합니다.
개발자 사용자 이름과 암호를 제공하고 로그인 버튼을 클릭합니다. 다음 페이지가 표시됩니다.
프로젝트 만들기 버튼을 클릭합니다. 다음 페이지가 표시됩니다.
필요한 모든 정보를 제공하고 만들기 버튼을 클릭하여 새 프로젝트를 만듭니다.
OpenShift 오리진에 애플리케이션 배포
먼저 다음 명령을 실행하여 개발자 사용자로 OpenShift에 로그인합니다.
oc login
아래와 같이 개발자 사용자로 로그인합니다.
Authentication required for https://your-server-ip:8443 (openshift) Username: developer Password: Login successful. You have access to the following projects and can switch between them with 'oc project': * dev my-project myproject Using project "dev".
로그인하면 프로젝트를 OpenShift 웹 콘솔을 통해 생성한 my-project로 전환합니다.
oc project my-project
산출:
Now using project "my-project" on server "https://your-server-ip:8443".
다음으로 다음 명령을 사용하여 현재 프로젝트의 상태를 확인합니다.
oc status
산출:
In project My Project (my-project) on server https://your-server-ip:8443 You have no services, deployment configs, or build configs. Run 'oc new-app' to create an application.
그런 다음 다음 명령을 사용하여 Docker Hub 레지스트리의 애플리케이션 이미지에 태그를 지정합니다.
oc tag --source=docker openshift/deployment-example:v2 deployment-example:latest
산출:
Tag deployment-example:latest set to openshift/deployment-example:v2.
그런 다음 다음 명령을 사용하여 애플리케이션을 OpenShift에 배포합니다.
oc new-app deployment-example
다음 출력이 표시되어야 합니다.
--> Found image da61bb2 (4 years old) in image stream "my-project/deployment-example" under tag "latest" for "deployment-example" * This image will be deployed in deployment config "deployment-example" * Port 8080/tcp will be load balanced by service "deployment-example" * Other containers can access this service through the hostname "deployment-example" * WARNING: Image "my-project/deployment-example:latest" runs as the 'root' user which may not be permitted by your cluster administrator --> Creating resources ... deploymentconfig.apps.openshift.io "deployment-example" created service "deployment-example" created --> Success Application is not exposed. You can expose services to the outside world by executing one or more of the commands below: 'oc expose svc/deployment-example' Run 'oc status' to view your app.
이제 다음 명령을 사용하여 애플리케이션 배포 상태를 확인합니다.
oc status
다음 출력이 표시되어야 합니다.
In project My Project (my-project) on server https://your-server-ip:8443 svc/deployment-example - 172.30.87.146:8080 dc/deployment-example deploys istag/deployment-example:latest deployment #1 deployed 36 seconds ago - 1 pod 2 infos identified, use 'oc status --suggest' to see details.
서비스에 대한 정보를 얻으려면 다음 명령을 실행하십시오.
oc get svc
산출:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE deployment-example ClusterIP 172.30.87.1468080/TCP 1m
자세한 정보를 얻으려면 다음 명령을 실행하십시오.
oc describe svc deployment-example
산출:
Name: deployment-example Namespace: my-project Labels: app=deployment-example Annotations: openshift.io/generated-by=OpenShiftNewApp Selector: app=deployment-example,deploymentconfig=deployment-example Type: ClusterIP IP: 172.30.87.146 Port: 8080-tcp 8080/TCP TargetPort: 8080/TCP Endpoints: 172.17.0.10:8080 Session Affinity: None Events:
다음 명령을 사용하여 포드 상태를 확인할 수도 있습니다.
oc get pods
산출:
NAME READY STATUS RESTARTS AGE deployment-example-1-b9prf 1/1 Running 0 2m
이제 다음 명령을 사용하여 외부 액세스를 위해 애플리케이션을 노출합니다.
oc expose service/deployment-example
산출:
route.route.openshift.io/deployment-example exposed
경로 정보를 표시하려면 다음 명령을 실행합니다.
oc get routes
다음 출력이 표시되어야 합니다.
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD deployment-example deployment-example-my-project.your-server-ip.nip.io deployment-example 8080-tcp None
외부 액세스 확인
이제 애플리케이션이 외부 액세스를 위해 준비되었습니다. 웹 브라우저를 열고 위 URL http://deployment-example-my-project.your-server-ip.nip.io를 입력합니다. 다음 페이지에 애플리케이션이 표시되어야 합니다.
애플리케이션을 삭제하려면 다음 명령을 실행합니다.
oc delete all -l app=deployment-example
다음 출력이 표시되어야 합니다.
pod "deployment-example-1-b9prf" deleted replicationcontroller "deployment-example-1" deleted service "deployment-example" deleted deploymentconfig.apps.openshift.io "deployment-example" deleted route.route.openshift.io "deployment-example" deleted
결론
이 기사에서는 Ubuntu 20.04에 단일 노드 OpenShift Origin을 성공적으로 설치하고 구성했습니다. 이제 OpenShift 환경에서 첫 번째 애플리케이션 개발을 시작할 수 있습니다. 질문이 있으시면 언제든지 저에게 물어보세요.