유용한 쿠버네티스 커맨드 모음(Kubernetes commands)

Kubernetes|2021. 5. 7. 18:51

YAML 파일을 사용해 리소스 생성

kubectl apply -f prometheus-configmap.yaml

 

YAML 파일을 사용해 기존 리소스 업데이트(패치)

kubectl create -f prometheus-configmap-update.yaml -o yaml  --dry-run | kubectl apply -f -

 

디플로이먼트의 롤아웃 상태 확인 및 대기

kubectl rollout status deployment/prometheus-deployment -n monitoring

 

레이블을 사용해 파드 로그 확인(마지막 20줄)

kubectl logs --tail=20 -n monitoring -l app=hey

 

전체 네임스페이스(namespace)에서 리소스(디플로이먼트) 조회

kubectl get deploy --all-namespaces

 

전체 파드의 환경 변수 조회(시크릿, 컨피그맵 기반의 환경 변수는 관련 리소스 이름과 키만 알려준다)

kubectl set env pods --all --list -n monitoring

 

전체 파드의 환경 변수 조회(시크릿, 컨피그맵 기반의 환경 변수를 디코딩해 보여준다)

kubectl set env pods --all --list --resolve=true -n monitoring

 

도움이 됐다면 공감(♡) 버튼을 클릭해 주세요. 감사합니다.

댓글()

쿠버네티스(kubernetes)의 imagePullPolicy

Kubernetes|2019. 12. 22. 12:11

쿠버네티스의 기본 이미지 가져오기 정책(image pull policy)은 IfNotPresent다. 따라서 이미지가 이미 있으면 레지스트리에서 이미지를 가져오지 않고 로컬 이미지를 사용한다.

항상 레지스트리에서 이미지를 가져오게 하고 싶으면 다음과 같이 한다.

  • 컨테이너 구성(spec)의 imagePullPolicyAlways로 설정한다.
  • 컨테이너 구성에서 imagePullPolicy 항목을 없애고 태그가 :latest인 이미지를 사용한다. Always 정책이 적용된다.
  • 컨테이너 구성에서 imagePullPolicy 항목을 없애고 태그를 생략한 이미지를 사용한다. Always 정책이 적용된다.
  • AlwaysPullImages 어드미션 컨트롤러(Admission Controller)를 활성화한다.

lastest 태그는 상용 환경(production)에선 사용하지 않는 게 좋다. 어떤 이미지를 사용 중인지 알 수 없고 롤백 또한 어렵다.

이미지에 대한 더 다양한 내용은 다음 링크를 참고한다.

 

도움이 됐다면 공감 버튼을 클릭해 주세요. 감사합니다.

댓글()

minikube -The system cannot find the path specified..

Kubernetes|2019. 1. 7. 08:13

윈도우(Windows)에서 minikube start 명령을 실행했을 때 다음과 같은 오류가 발생하는 경우가 있다.

D:\tmp>minikube start --bootstrapper kubeadm --memory 4096
Starting local Kubernetes v1.12.4 cluster...
Starting VM...
Downloading Minikube ISO
 178.88 MB / 178.88 MB [============================================] 100.00% 0s
E0104 10:20:54.727967   15524 start.go:187] Error starting host: Error creating host: Error executing step: Creating VM.
: open /Users/daniel/.minikube/cache/iso/minikube-v0.32.0.iso: The system cannot find the path specified..

 Retrying.
E0104 10:20:54.732965   15524 start.go:193] Error starting host:  Error creating host: Error executing step: Creating VM.
: open /Users/daniel/.minikube/cache/iso/minikube-v0.32.0.iso: The system cannot find the path specified.
================================================================================
An error has occurred. Would you like to opt in to sending anonymized crash
information to minikube to help prevent future errors?
To opt out of these messages, run the command:
        minikube config set WantReportErrorPrompt false
================================================================================
Please enter your response [Y/n]:

이럴 때는 MINIKUBE_HOME 환경 변수를 설정하면 된다.

minikube를 Chocolatey로 설치했다면 다음과 같이 설정한 후 다시 minikube start 명령을 실행한다.

D:\tmp>set MINIKUBE_HOME=C:\ProgramData\chocolatey\lib\Minikube\tools
D:\tmp>minikube start --bootstrapper kubeadm --memory 4096

EOF

태그 : kubernetes

댓글()

윈도(Windows)에서 도커 IP 주소 조회

Kubernetes|2018. 6. 20. 18:05

Docker Quickstart Terminal을 실행하고, 다음과 같이 명령을 실행한다.

$ docker-machine url
tcp://192.168.99.100:2376

예를 들면, Postgres를 실행하면서 다음과 같이 5432 포트를 호스트의 5432 포트와 매핑한 경우.

$ docker run -d -p 5432:5432 --name postgres postgres:alpine

192.168.99.100:5432로 DB에 접속할 수 있다.


EOF


태그 : docker

댓글()

쿠버네티스 네임스페이스(namespace)의 이름 제약

Kubernetes|2018. 6. 11. 18:13
  • 최대 63자(characters)
  • 알파벳 소문자와 숫자, 하이픈(-)만 허용
  • 하이픈(-)은 맨 앞이나 뒤에 올 수 없음
  • 이름이 틀렸을 경우 다음과 같은 오류 메시지가 나옴(유효성 체크를 위한 regex가 포함됨!)
The Namespace "p.k.t" is invalid: metadata.name: Invalid value: "p.k.t": a DNS-1123 label must consist of lower case alphanumeric characters or '-', and must start and end with an alphanumeric character (e.g. 'my-name',  or '123-abc', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?')


EOF

태그 : kubernetes

댓글()

도커(docker) 이미지의 내용이 궁금할 때

Kubernetes|2018. 5. 5. 14:12

도커(docker) 이미지가 어떻게 만들어졌는지 궁금한데 소스가 없는 경우에는 어떻게 할까? 이럴 때는 docker inspect 명령을 사용한다.

면저 분석하려는 이미지를 pull한다.

$ docker pull tensorflow/tensorflow:latest-gpu
latest-gpu: Pulling from tensorflow/tensorflow
d3938036b19c: Pull complete
a9b30c108bda: Pull complete
67de21feec18: Pull complete
817da545be2b: Pull complete
d967c497ce23: Pull complete
5ddeb439bad8: Pull complete
c6496427ad3b: Pull complete
360fde1360ca: Pull complete
1c3227e49e63: Pull complete
ec2edd14d4b6: Pull complete
96c7a24a6f0c: Pull complete
dee49a23eeb6: Pull complete
3c5ca73fbac5: Pull complete
50f4e1802dc1: Pull complete
316fabb600d5: Pull complete
62c1e601d7a6: Pull complete
Digest: sha256:d31c50ce2d31a21cb5396be59fcab4f8dba405dda2fcaf0f747a407ca277c9f0
Status: Downloaded newer image for tensorflow/tensorflow:latest-gpu

inspect 명령으로 상세한 내용을 살펴본다.

$ docker inspect tensorflow/tensorflow:latest-gpu
[
    {
        "Id": "sha256:e93ab8001bbf2743d82ed90e3735e44615aafd23e794f5561cb510379c8ad869",
        "RepoTags": [
            "tensorflow/tensorflow:latest-gpu"
        ],
        "RepoDigests": [
            "tensorflow/tensorflow@sha256:d31c50ce2d31a21cb5396be59fcab4f8dba405dda2fcaf0f747a407ca277c9f0"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2018-04-28T00:40:03.186381907Z",
        "Container": "e26d7da89405f94fa446e4f03d45a43cbf09e7c26ba544ade272f5570aeab553",
        "Config": {
            "Env": [
                "PATH=/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "CUDA_VERSION=9.0.176",
                "CUDA_PKG_VERSION=9-0=9.0.176-1",
                "LD_LIBRARY_PATH=/usr/local/cuda/extras/CUPTI/lib64:/usr/local/nvidia/lib:/usr/local/nvidia/lib64",
                "NVIDIA_VISIBLE_DEVICES=all",
                "NVIDIA_DRIVER_CAPABILITIES=compute,utility",
                "NVIDIA_REQUIRE_CUDA=cuda>=9.0"
            ],
            "Cmd": [
                "/run_jupyter.sh",
                "--allow-root"
            ],
            "ArgsEscaped": true,
            "Image": "sha256:3dda217166b30645da5f5a71aad7d1e895b86a2235b62856f54494e9b23f2de4",
            "Volumes": null,
            "WorkingDir": "/notebooks",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "com.nvidia.build.id": "63756748",
                "com.nvidia.build.ref": "2b1c8edf8d79830ad811baff9630adb3bcb5db46",
                "com.nvidia.cuda.version": "9.0.176",
                "com.nvidia.volumes.needed": "nvidia_driver",
                "maintainer": "Craig Citro <craigcitro@google.com>"
            }
        },
        "Metadata": {
            "LastTagTime": "0001-01-01T00:00:00Z"
        }
    }
]

비록 소스 파일(Dockerfile)을 얻을 수 있는 건 아니지만 출력된 내용을 잘 보면 충분히 유추가 가능한다.


EOF

태그 : docker

댓글()

Minikube의 docker-env 명령 취소

Kubernetes|2018. 5. 4. 19:30

minikube docker-env 명령을 실행하면, minikube VM의 도커(docker) 데몬과 호스트의 도커 클라이언트를 연결하는 명령을 알려준다.

이를 이용한 후에 되돌리려면 아래 명령 실행 후에 출력되는 내용을 참고하면 된다.

docker-machine env

다음은 Windows에서의 실행 결과다.

C:\\Users\\daniel>docker-machine env
SET DOCKER\_TLS\_VERIFY=1
SET DOCKER\_HOST=tcp://192.168.99.101:2376
SET DOCKER\_CERT\_PATH=C:\\Users\\daniel\\.docker\\machine\\machines\\default
SET DOCKER\_MACHINE\_NAME=default
SET COMPOSE\_CONVERT\_WINDOWS\_PATHS=true
REM Run this command to configure your shell:
REM     @FOR /f "tokens=\*" %i IN ('docker-machine env') DO @%i

마지막 줄의 @FOR /f "tokens=\*" %i IN ('docker-machine env -u') DO @%i을 실행하면, 다시 Docker Toolbox의 도커 데몬을 사용하게 된다.

EOF

태그 : docker, kubernetes

댓글()

도커(Docker)의 쿠버네티스(Kubernetes) 지원

Kubernetes|2018. 3. 23. 19:36

아직(2018년 3월 현재) 베타 버전이지만 도커의 쿠버네티스 지원이 시작됐다.  

도커 홈페이지에 커다란 베너로 이를 알리고 있으며, 베타 프로그램에 참여하면 새 소식을 알려주는 것 같다.


Docker for Mac에 Kubernetes Tab이 추가된 것 말고는 뒤져봐도 아직은 별다른 내용은 없다.


최근 쿠버네티스를 "the Linux of the cloud"라고 부르는 것을 종종 듣게되는데, 도커가 Docker Swarm과 Kubernetes를 같은 수준으로 지원하려는 것을 보면 가능성이 점점 커지는 것 같다.


EOF

태그 : docker, kubernetes

댓글()

외부에서 Kubernetes API(apiserver) 접근

Kubernetes|2017. 9. 4. 20:58

앞선 글(Vagrant에 Kubernetes 클러스터 구성하기)에서는 Vagrant 환경에 k8s 클러스터를 구성해 봤는데, 이 클러스터를 사용해서 뭔가(?) 하려고 하니 한 가지 문제가 생겼다.
Minikube 처럼 kubectl을 다운로드 받기만 해서는 API를 사용할 수 없다는 것이다. 즉 호스트인 내 랩탑에서 kubectl을 통해서 명령을 내릴 수가 없다.

물론 master에는 친절하게 kubectl 이 이미 설치되어 있기 때문에 ssh로 master에 접속하여 명령을 내리면 되긴한다.
하지만 내가 하려는 것은 자바로 짠, 랩탑에서 동작하는 프로그램을 통해서 k8s API를 사용하려는 것이다. 따라서 외부에서 k8s 클러스트에 접속하는 방법을 알아내야 했다.

본인이 무엇을 필요로 하는지 아는 성격 급한 분은 첨부 파일을 받아 보거나 글 말미를 보시길.

웹 애플리케이션을 만들고 있기 때문에 먼저 OAuth 토큰을 이용하는 방식을 시도해 봤는데, 자바 키스토어(java keystore)에 인증 정보를 심어줘야 하는 귀찮은 문제가 있었다. 너무 샛길로 빠지는 내용이고, 내 수준으로는 보안에 대해서 자세히 설명하기도 힘들어서 일단 OAuth는 생략한다.

다음으로 시도한 방법은 k8s에서 사용하는 인증서를 랩탑으로 가져와서 사용하는 것이다.
사실 앞서 vagrant 기반으로 클러스터를 구축했다면 이미 클론한 kubernetes-vagrant-coreos-cluster 프로젝트 디렉토리 하위의 artifacts/tls 디렉토리에 필요한 파일이 이미 있기 때문에 이를 사용하면 된다.
다른 클러스터에 접근하려는 것이라면 해당 클러스터의 master에서 certificate-authorityclient-certificateclient-key 에 해당하는 파일을 다운로드 받으면 된다.

아래 명령을 실행하면 위에 언급한 것들이 무엇인지 자세한 설명이 나온다.

    $ kubectl options --help
    The following options can be passed to any command:

          --certificate-authority='': Path to a cert file for the certificate authority
          --client-certificate='': Path to a client certificate file for TLS
          --client-key='': Path to a client key file for TLS

즉 인증기관에서 발급한 인증서와 TLS의 클라이언트 인증서, TLS의 클라이언트 키가 필요한 것이다. 파일명은 환경에 따라 다를 수 있는데 앞서 구축한 vagrant 클러스터에서는 순서대로 ca.pem, admin.pem, admin-key.pem 파일을 사용하면 된다.

설명은 길었지만 답은 간단하다. 아래의 내용을 복사한 후, %USERPROFILE%\.kube 디렉토리에 config 라는 이름의 파일을 만들고 그 내용으로 넣으면 된다.
주의할 점은 각 파일(파일 3개)의 경로와 server 항목의 IP 주소는 본인의 환경에 맞게 수정해야 한다.
좀 더 부연하자면 윈도(windows) 사용자 계정이 kim 이라면 C:\Users\kim\.kube\config 파일에 아래 내용을 넣는 것이다.

    apiVersion: v1
    clusters:
    - cluster:
        certificate-authority: C:\workspace\kubernetes-vagrant-coreos-cluster\artifacts\tls\ca.pem
        server: https://172.17.8.101:443
      name: default
    contexts:
    - context:
        cluster: default
        user: default
      name: default
    current-context: default
    kind: Config
    preferences: {}
    users:
    - name: default
      user:
        client-certificate: C:\workspace\kubernetes-vagrant-coreos-cluster\artifacts\tls\admin.pem
        client-key: C:\workspace\kubernetes-vagrant-coreos-cluster\artifacts\tls\admin-key.pem

혹 필요할지도 몰라서 config 파일은 따로 첨부한다.

config



EOF



댓글()

Vagrant에 Kubernetes 클러스터(cluster) 구성하기

Kubernetes|2017. 8. 15. 08:49

Minikube로도 랩탑에서 많은 작업을 할 수 있지만 아무래도 멀티 노드로 구성해서 직접 검증을 해야 할 일이 생긴다.

Vagrant에 직접 CentOS나 Ubuntu 박스를 이용해서 구성을 시도했지만 시간만 낭비했고, 구글링 끝에 kubernetes-vagrant-coreos-cluster 프로젝트를 찾았다.

https://github.com/pires/kubernetes-vagrant-coreos-cluster/

프로젝트 메인의 README 를 보면서 설치를 진행해 봤는데, 아래는 윈도(windows)에서 설치한 경험을 정리한 것이다. 몇 가지 시행착오가 있었기 때문에 도움이 될 것이다.

그리고 시간이 없더라도 README 는 꼭 읽을 것을 권장한다.

Installation

NFS 공유 기능을 활성화 하기 위해서 Vagrant 플러그인 설치

    $ vagrant plugin install vagrant-winnfsd

Vagrant WinNFSd 플러그인의 깃 저장소
https://github.com/winnfsd/vagrant-winnfsd

저장소를 clone 하기 전에 Git 옵션을 변경

    $ git config --global core.autocrlf false
    $ git config --global core.eol lf

Deploy Kubernetes

vagrant를 시작하고 프로비저닝을 실행한다.

    $ vagrant up

kubernetes-vagrant-coreos-cluster 프로젝트는 CoreOS의 alpha 버전을 사용하도록 기본 구성되어 있는데, 만약 현재 버전이 1492.3.0이라면 아래와 같이 403에러가 발생할 수도 있다.

    ==> master: Box 'coreos-alpha' could not be found. Attempting to find and install...
        master: Box Provider: virtualbox
        master: Box Version: = 1492.3.0
    ==> master: Loading metadata for box 'http://alpha.release.core-os.net/amd64-usr/current/core
    os_production_vagrant.json'
        master: URL: http://alpha.release.core-os.net/amd64-usr/current/coreos_production_vagrant
    .json
    ==> master: Adding box 'coreos-alpha' (v1492.3.0) for provider: virtualbox
        master: Downloading: http://builds.release.core-os.net/alpha/amd64-usr/1492.3.0/coreos_pr
    oduction_vagrant.box
        master: Progress: 0% (Rate: 0/s, Estimated time remaining: --:--:--)
    An error occurred while downloading the remote file. The error
    message, if any, is reproduced below. Please fix this error and try
    again.
    
    The requested URL returned error: 403 Forbidden

아마도 박스 다운로드 주소를 잘못 설정한 것이 아닐까 의심된다.

어쨌든 다음과 같이 바로 전 버전인 1492.1.0 을 사용하도록 설정하고 실행하면 해결된다.

    $ COREOS_VERSION=1492.1.0 vagrant up

이제 master 노드에 ssh로 접속하여 kubectl 을 사용해서 이런저런 작업을 해 볼 수가 있게 됐다.

    $ vagrant ssh master
    $ kubectl cluster-info

만약 vagrant ssh master 명령으로 접속했을 때 인증이 안되면, 아래 링크를 참고한다.

Vagrant - CoreOS에 vagrant ssh 접속 시 인증 실패

Environment variables

  • CHANNEL: CoreOS의 채널을 지정한다. alpha, beta, stable을 중 하나를 넣는다.

    기본 값(default)은 alpha.

  • COREOS_VERSION: CoreOS의 버전을 지정한다. 위에서 언급했다.

  • USE_KUBE_UI: Kubernetes UI 를 deploy 할 것인지의 여부를 지정.

    기본 값은 false http://#{MASTER_IP}:8080/ui 에 접속하면 화면을 볼 수 있다.

이외에도 변수가 많은데 굳이 여기에 옮길 필요는 없을 것 같다. 앞으로 필요한 부분이 있으면 다른 글에서 덧붙이기로 하자.



EOF

댓글()

Minishift로 간편하게 Openshift 사용해 보기

Kubernetes|2017. 7. 29. 13:45

Openshift를 설치해서 공부하려니 리눅스 머신에 직접 설치하는건 너무 번거롭고 힘든 일이더군요. Vagrant 버전을 찾아보니, 이는 Minishift라는 것으로 대체된 것을 알게 됐습니다. 설치 중 약간의 문제(아래에 나옵니다)가 있었지만, 사용해 보니 편하게 Openshift를 시작할 수 있는 방법입니다. 윈도 환경에서 설치/사용하는 방법을 소개합니다.

설치

아래가 홈페이지입니다.

https://www.openshift.org/minishift/

다운로드를 하려면 release 페이지로 가서 받으면 됩니다. 현재 v1.3.1이 최신이군요.

https://github.com/minishift/minishift/releases

윈도 64비트 버전(minishift-1.3.1-windows-amd64.zip)을 받습니다.

윈도 버전에는 문제가 조금 있어서 사용자의 홈 디렉토리가 있는 드라이브에 설치를 해야합니다.

C:\minishift 폴더를 만들고 이곳에 위에서 받은 압축 파일의 내용물을 넣습니다.

이제 명령 프롬프트를 실행한 후 위 폴더로 이동한 후 아래 명령으로 Minishift를 실행합니다.

minishift.exe start --vm-driver virtualbox

윈도 버전의 경우 Hyper-V를 하이퍼바이저로 사용하는게 기본인데, 저는 VirtualBox를 사용했습니다. 물론 VirtualBox를 먼저 설치해야겠지요. 최신 버전(v5.1.12 이상)을 사용해 주세요.

아래는 설치 로그인데 중간에 다운로드를 강제 종료하는 부분이 있습니다. 저만 그런지는 모르겠는데 이렇게 하지 않으면 ISO 파일을 받다가 The process cannot access the file because it is being used by another process.. Retrying. 라는 오류를 내면서 더 이상 진행이 안되더군요.

C:\WINDOWS\system32> cd C:\minishift

C:\minishift>
C:\minishift>
C:\minishift> minishift.exe start --vm-driver virtualbox
-- Installing default add-ons ... OK
Starting local OpenShift cluster using 'virtualbox' hypervisor...
Downloading ISO 'https://github.com/minishift/minishift-b2d-iso/releases/download/v1.0.2/minishift-b2d.iso'
 84.57 KiB / 40.00 MiB [>---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------]   0.21% 14m32s

# 여기에서 다운로드를 강제 종료
# 시작 명령어 다시 실행

C:\minishift> minishift start --vm-driver virtualbox
Starting local OpenShift cluster using 'virtualbox' hypervisor...
Downloading OpenShift binary 'oc' version 'v1.5.1'
 19.05 MiB / 19.05 MiB [========================================================================================================================================================================================================] 100.00% 0s
-- Checking OpenShift client ... OK
-- Checking Docker client ... OK
-- Checking Docker version ... OK
-- Checking for existing OpenShift container ... OK
-- Checking for openshift/origin:v1.5.1 image ...
   Pulling image openshift/origin:v1.5.1
   Pulled 0/3 layers, 3% complete
   Pulled 0/3 layers, 74% complete
   Pulled 1/3 layers, 88% complete
   Pulled 2/3 layers, 90% complete
   Pulled 3/3 layers, 100% complete
   Extracting
   Image pull complete
-- Checking Docker daemon configuration ... OK
-- Checking for available ports ... OK
-- Checking type of volume mount ...
   Using Docker shared volumes for OpenShift volumes
-- Creating host directories ... OK
-- Finding server IP ...
   Using 192.168.99.100 as the server IP
-- Starting OpenShift container ...
   Creating initial OpenShift configuration
   Starting OpenShift using container 'origin'
   Waiting for API server to start listening
   OpenShift server started
-- Adding default OAuthClient redirect URIs ... OK
-- Installing registry ... OK
-- Installing router ... OK
-- Importing image streams ... OK
-- Importing templates ... OK
-- Login to server ... OK
-- Creating initial project "myproject" ... OK
-- Removing temporary directory ... OK
-- Checking container networking ... OK
-- Server Information ...
   OpenShift server started.
   The server is accessible via web console at:
       https://192.168.99.100:8443

   You are logged in as:
       User:     developer
       Password: developer

   To login as administrator:
       oc login -u system:admin

다운로드를 CTRL+C로 강제 종료한 후 https://github.com/minishift/minishift-b2d-iso/releases/download/v1.0.2/minishift-b2d.iso 파일을 받아서 C:\Users\사용자명\.minishift\cache\iso\ 폴더에 직접 넣어줍니다. 그리고 cache 디렉토리를 제외한 C:\Users\daniel\.minishift\ 디렉토리의 하위 디렉토리를 모두 지웁니다. 이렇게 한 후에 다시 시작 명령을 실행합니다.

minishift.exe start --vm-driver virtualbox

IP나 로그인 정보 등이 나오면서 실행이 완료되면 아래와 같이 몇몇 명령어를 실행해 봅니다.

C:\minishift>minishift ip
192.168.99.100

C:\minishift>minishift status
Running


OC(OpenShift Client Binary) 사용

minishift oc-env 명령을 실행하면, oc를 사용하기 위한 설정 명령어를 출력합니다. 윈도의 경우 출력의 마지막 줄에서 REM을 제거한 텍스트를 실행하면 됩니다.

@FOR /f "tokens=*" %i IN ('minishift oc-env') DO @call %i

아래는 위의 명령을 실행해서 oc를 사용 가능하게 만든 후, oc status를 사용하는 예입니다.

C:\minishift>minishift oc-env
SET PATH=C:\Users\daniel\.minishift\cache\oc\v1.5.1;%PATH%
REM Run this command to configure your shell:
REM     @FOR /f "tokens=*" %i IN ('minishift oc-env') DO @call %i

C:\minishift>oc status
'oc'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는
배치 파일이 아닙니다.

C:\minishift>@FOR /f "tokens=*" %i IN ('minishift oc-env') DO @call %i

C:\minishift>oc status
In project My Project (myproject) on server https://192.168.99.100:8443

You have no services, deployment configs, or build configs.
Run 'oc new-app' to create an application.


샘플 애플리케이션 배포

oc new-app 명령을 이용해서 새로운 애플리케이션을 만들고 배포할 수 있습니다. 아래는 GitHub에서 소스를 가져와서 배포하는 명령과 그 실행의 예입니다. -l 옵션은 labels를 의미합니다. name 레이블을 붙이고 값으로 myapp을 사용했습니다.

oc new-app https://github.com/openshift/nodejs-ex -l name=myapp

C:\minishift>oc new-app https://github.com/openshift/nodejs-ex -l name=myapp
--> Found image ccdf360 (2 days old) in image stream "openshift/nodejs" under tag "4" for "nodejs"

    Node.js 4
    ---------
    Node.js 4 available as docker container is a base platform for building and running various Node.js 4 applications and frameworks. Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.

    Tags: builder, nodejs, nodejs4

    * The source repository appears to match: nodejs
    * A source build using source code from https://github.com/openshift/nodejs-ex will be created
      * The resulting image will be pushed to image stream "nodejs-ex:latest"
      * Use 'start-build' to trigger a new build
      * WARNING: this source repository may require credentials.
                 Create a secret with your git credentials and use 'set build-secret' to assign it to the build config.
    * This image will be deployed in deployment config "nodejs-ex"
    * Port 8080/tcp will be load balanced by service "nodejs-ex"
      * Other containers can access this service through the hostname "nodejs-ex"

--> Creating resources with label name=myapp ...
    imagestream "nodejs-ex" created
    buildconfig "nodejs-ex" created
    deploymentconfig "nodejs-ex" created
    service "nodejs-ex" created
--> Success
    Build scheduled, use 'oc logs -f bc/nodejs-ex' to track its progress.
    Run 'oc status' to view your app.

C:\minishift>oc status
In project My Project (myproject) on server https://192.168.99.100:8443

svc/nodejs-ex - 172.30.43.241:8080
  dc/nodejs-ex deploys istag/nodejs-ex:latest <-
    bc/nodejs-ex source builds https://github.com/openshift/nodejs-ex on openshift/nodejs:4
    deployment #1 deployed 8 minutes ago - 1 pod

View details with 'oc describe <resource>/<name>' or list everything with 'oc get all'.

설치 단계의 로그에서 알려주듯이 developer 계정으로 이미 로그인이 된 상태이기 때문에, developer 계정에 애플리케이션이 생성되었습니다. 콘솔에 로그인하여 UI로 확인할 수 있습니다.

https://192.168.99.100:8443에 브라우저로 접속한 후, developer 계정으로 로그인합니다. 암호는 동일합니다.

My Project를 클릭하여 이동합니다. My Project는 OpenShift가 자동으로 만드는 기본 프로젝트입니다.

#1 링크를 클릭하면 name 레이블이 myapp인 것을 확인할 수 있습니다.


Route 생성

Applications > Pods 메뉴로 이동하여 애플리케이션 Status가 Running으로 변경된 것을 확인한 후, Router를 만들면 브라우저에서 직접 화면을 볼 수 있습니다. Applications > Services 메뉴로 이동한 후 nodejs-ex 서비스를 클릭합니다. Actions > Create Route 메뉴나 Create route 링크를 클릭하여 Route 생성 화면으로 이동합니다.

현재 서비스가 하나 밖에 없고 Hostname은 입력하지 않으면 자동 생성되기 때문에 바로 Create 버튼을 클릭해서 Route를 생성합니다.

Traffic 영역의 표에서 Hostname을 클릭합니다.

드디어 배포한 애플리케이션의 화면을 볼 수 있습니다.

oc로는 아래와 같이 하면, 위와 같게 Route를 생성할 수 있습니다.

C:\minishift>oc expose svc/nodejs-ex
route "nodejs-ex" exposed


Minishift의 종료

아래와 같이 minishift stop 명령으로 종료합니다.

C:\minishift>minishift stop



EOF

댓글()
  1. idpokute 2018.10.22 23:26 댓글주소  수정/삭제  댓글쓰기

    좋은 글 감사합니다.