Openshift에서 더 나아가기

이전 게시물에서 Openshift(now OKD)가 무엇이고 어떻게 쉽게 배포Gitea할 수 있는지에 대해 간략하게 소개했습니다. 이제 "source2image"(S2I) 전략을 사용하여 Java 애플리케이션을 구축하고 배포하는 데 중점을 둘 것입니다.

하지만 이 S2I는 무엇입니까?

S2I project site에 따르면:

Source-to-Image (S2I) is a toolkit and workflow for building reproducible Docker images from source code. S2I produces ready-to-run images by injecting source code into a Docker container and letting the container prepare that source code for execution. By creating self-assembling builder images, you can version and control your build environments exactly like you use Docker images to version your runtime environments.



실제로 일어날 일은 Openshift가 프로젝트의 소스를 가져오고 이를 빌더 도커 이미지와 결합하고 애플리케이션을 실행하는 데 사용되는 최종 런타임 이미지를 생성하는 것입니다.

개발 환경 준비



개발 환경을 실행하기 위해 minishift을 사용하여 openshift 클러스터를 생성합니다. 아래 명령을 사용하여 minishift를 다운로드하고 설치합니다(Linux를 사용하는 경우).

MINISHIFT_VERSION=1.22.0
MINISHIFT_URL=https://github.com/minishift/minishift/releases/download/v$MINISHIFT_VERSION/minishift-$MINISHIFT_VERSION-linux-amd64.tgz

curl -L -s -o /tmp/minishift.tgz $MINISHIFT_URL

tar -C /tmp --wildcards -x */minishift --strip 1 -zf /tmp/minishift.tgz
sudo install /tmp/minishift /usr/local/bin/minishift



minishift가 설치되면 다음과 같이 구성하고 시작할 수 있습니다(몇 분 정도 소요될 수 있음).

# change values according to your workstation
MINISHIFT_VM_DRIVER=virtualbox
MINISHIFT_MEMORY=8G
MINISHIFT_CPUS=4
MINISHIFT_DISK_SIZE=100G

# configure minishift
minishift config set vm-driver $MINISHIFT_VM_DRIVER
minishift config set memory $MINISHIFT_MEMORY
minishift config set cpus $MINISHIFT_CPUS
minishift config set disk-size $MINISHIFT_DISK_SIZE

minishift start


Openshift와 상호 작용하려면 oc 명령줄 도구를 다운로드해야 하지만 minishift와 함께 번들 도구를 사용할 수 있습니다. 다음을 실행하기만 하면 됩니다.

eval $(minishift oc-env)


그런 다음 openshift에 로그인합니다.

oc login 192.168.99.100:8443 -u admin
# use 'admin' as password


애플리케이션 배포



이제 minishift가 실행 중이므로 일부 애플리케이션 배포를 시작할 수 있습니다. django example application부터 시작하겠습니다.

그러나 먼저 프로젝트를 생성해 보겠습니다.

oc new-project django-example --display-name 'Django Example'


다음과 같이 인쇄됩니다

Now using project "django-example" on server "https://192.168.99.100:8443".

You can add applications to this project with the 'new-app' command. For example, try:

    oc new-app centos/ruby-22-centos7~https://github.com/openshift/ruby-ex.git

to build a new example application in Ruby.


(루비 응용 프로그램에 대한 메시지에 대해 걱정하지 마십시오. 실제로 Python 응용 프로그램을 배포하고 있습니다. ;)

프로젝트는 관련 리소스를 그룹화하고 이러한 리소스에 대한 액세스 규칙을 정의하는 장소인 네임스페이스에 대한 openshift 용어입니다. 예를 들어 "snake"사용자가 "django-example"프로젝트를 볼 수 있도록 허용하고 "rattlesnake"사용자가 보고 편집(트리거 빌드 및 배포 등)할 수 있도록 허용하고 "badger"사용자에게 액세스 권한을 부여하지 않을 수 있습니다.

프로젝트가 생성되면 애플리케이션을 생성할 수 있습니다.

oc new-app python:3.6~https://github.com/sclorg/django-ex.git


"무슨 일이야?"라고 물을 수 있습니다. 글쎄, 우리는 openshift에게 python:3.6 이미지를 가져와 https://github.com/sclorg/django-ex.git에서 사용할 수 있는 소스 코드와 결합하도록 지시하고 있습니다. 구문은 "이미지"~"소스"입니다.

하지만 조심하세요! python:3.6는 도커 허브의 공식 파이썬 이미지가 아닙니다! 대신 centos/python-36-centos7에서 가져왔고 openshift 통합 레지스트리로 가져왔습니다! 파이썬 프로젝트를 빌드하고 실행하기 위한 S2I 이미지입니다! 명령을 사용하여 다른 이미지를 볼 수 있습니다oc get imagestream -n openshift.
oc new-app의 출력에는 애플리케이션에 대한 일부 정보가 포함되며 끝에 다음이 포함됩니다.

--> Success
    Build scheduled, use 'oc logs -f bc/django-ex' to track its progress.
    Application is not exposed. You can expose services to the outside world by executing one or more of the commands below:
     'oc expose svc/django-ex' 
    Run 'oc status' to view your app.


제안된 명령oc expose svc/django-ex은 매우 중요한 작업을 수행합니다. 경로를 통해 서비스(Kubernetes 서비스)를 외부 트래픽에 노출합니다. 경로는 서비스와 매우 유사하지만 특정 호스트 이름과 일치하는 외부 요청을 처리하고 암호화(https)도 처리할 수 있습니다.

애플리케이션을 노출해 보겠습니다.

oc expose svc/django-ex


이전 명령과 달리 서비스 노출은 많은 출력을 생성하지 않으므로 방금 생성한 서비스를 얻기 위해 사용 가능한 경로를 나열해 보겠습니다.

oc get routes


다음이 출력됩니다.

NAME        HOST/PORT                                        PATH      SERVICES    PORT       TERMINATION   WILDCARD
django-ex   django-ex-django-example.192.168.99.100.nip.io             django-ex   8080-tcp                 None


보시다시피 경로는 호스트 이름django-ex-django-example.192.168.99.100.nip.io을 수신 대기합니다. 이nip.io는 호스트 이름 자체에 포함된 IP 주소(이 경우 minishift vm의 IP 주소인 192.168.99.100)로 요청을 리디렉션하는 특수 서비스 서비스입니다.

경로 주소에 액세스하면 다음 화면이 표시됩니다.



오픈시프트 웹 콘솔



Openshift에는 [ https://192.168.99.100:8443/console ]에서 액세스할 수 있는 매우 멋진 웹 콘솔도 있습니다. 이전에 사용한 것과 동일한 자격 증명(사용자 이름과 암호 모두 "admin")으로 로그인하기만 하면 됩니다.



오른쪽에 있는 프로젝트 링크를 열면 다음 페이지로 이동합니다.



프로젝트, 배포된 애플리케이션, 경로, 컨테이너 상태 등의 개요가 있는 프로젝트 대시보드입니다. 컨테이너를 확장할 수도 있습니다!

배포를 노출하여 서비스를 생성하는 것과 같은 일부 작업에는 여전히 cli를 사용해야 하지만 웹 콘솔에는 많은 기능이 있습니다.

지금은 여기까지입니다. 다음 시간에는 웹 콘솔에 들어가겠습니다.

좋은 웹페이지 즐겨찾기