OpenFx 컴파일을 완료하였다면, 이제 OpenFx를 배포해보자.
먼저, 쿠버네티스에서 개인 도커 레지스트리로부터 도커 이미지를 다운받으려면 **도커 인증(Docker credential)**이 필요하다. 먼저 이를 생성하고 배포하기 위한 yaml파일에 이를 설정한다.
쿠버네티스 클러스터는 개인 도커 레지스트리에서 도커 이미지를 pull해야한다. 이를 위해서 도커 레지스트리 타입의 Secret을 사용하여 레지스트리에 인증을 받는다.
이는 다음의 절차를 통해 진행된다.
-
Secret을 생성한다.
-
도커 인증파일을 base64로 변환한 .dockerconfigjson 내용을 확인한다.
-
keti-openfx/openfx/deploy/yaml폴더의 docker-registry-secret.yaml에 .dockerconfigjson내용을 이전에 확인한 .dockerconfigjson으로 변경한다.
$ kubectl create secret docker-registry regcred --docker-server=<REGSTRY IP>:<PORT> --docker-username=<your-name> --docker-password=<your-password>
-
<REGSTRY IP>:<PORT>
: 개인 레지스트리 주소와 포트 -
<your-name>
: 도커 로그인을 위한 아이디 -
<your-password>
: 도커 로그인을 위한 비밀번호
$ kubectl get secret regcred --output=yaml
>>
kind: Secret
metadata:
...
name: regcred
...
data:
.dockerconfigjson: eyJodHRwczovL2luZGV4L ... J0QUl6RTIifX0=
type: kubernetes.io/dockerconfigjson
.dockerconfigjson
에 나오는 정보는 위와 상이할 수 있다.
keti-openfx/openfx/deploy/yaml 폴더의 docker-registry-secret.yaml 파일의 .dockerconfigjson의 내용을 위에서 확인한 Secret regcred
의 .dockerconfigjson 내용으로 변경한다.
openfx/deploy/yaml 폴더의 gateway-dep.yml파일의 image란의 레지스트리 IP와 Port를 변경한다.
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: fxgateway
namespace: openfx
spec:
replicas: 1
template:
metadata:
labels:
app: fxgateway
spec:
serviceAccountName: fxgateway
imagePullSecrets:
- name: regcred
containers:
- name: fxgateway
image: <REGISTRY IP>:<REGISTRY PORT>/fxgateway:0.1.0
imagePullPolicy: Always
env:
- name: FUNCTION_NAMESPACE
value: openfx-fn
- name: IMAGE_PULL_POLICY
value: "Always"
ports:
- containerPort: 10000
protocol: TCP
resources:
requests:
memory: 250Mi
limits:
memory: 250Mi
아래 명령어를 이용하여 OpenFx를 배포한다.
$ cd $GOPATH/scr/github.com/keti-openfx/openfx/deploy
$ kubectl apply -f ./namespaces.yml
$ kubectl apply -f ./yaml
$ kubectl get pods --all-namespaces
>>
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-fb8b8dccf-4bq7x 1/1 Running 0 113s
kube-system coredns-fb8b8dccf-jw6j2 1/1 Running 0 113s
kube-system etcd-minikube 1/1 Running 0 4m19s
kube-system kube-addon-manager-minikube 1/1 Running 0 4m22s
kube-system kube-apiserver-minikube 1/1 Running 0 4m17s
kube-system kube-controller-manager-minikube 1/1 Running 0 4m6s
kube-system kube-proxy-h8q7p 1/1 Running 0 5m11s
kube-system kube-scheduler-minikube 1/1 Running 0 4m16s
kube-system kubernetes-dashboard-7b8ddcb5d6.. 1/1 Running 0
4m18s
kube-system metrics-server-89cd44dc7-d8jvj 1/1 Running 0
4m18s
kube-system storage-provisioner 1/1 Running 0 5m7s
openfx fxgateway-755df6464f-6zrqw 1/1 Running 0 6m28s
openfx prometheus-5c8f7f7c7d-zhpbb 1/1 Running 0 6m30s
openfx grafana-core-7d6b476bb9-dj9bl 1/1 Running 0 6m30s
openfx grafana-import-dashboards-tnskf 1/1 Running 0 6m30s
...
-
STATUS
가 Running이 아닌 경우에는 링크를 참조하여 포드의 로그를 확인한다. -
kubectl apply
를 통해 배포되는 pod 중 prometheus는 컴퓨팅 자원들의 metric 정보를 수집하는 모니터링 툴이며, grafana는 prometheus를 통해 수집된 metric 정보들을 시각화해주는 툴이다.
openfx-cli
를 이용해 echo
함수를 배포하여 openfx
의 작동을 테스트한다. openfx-cli 설치 방법 및 작동 테스트는 다음의 링크를 통해 진행할 수 있다.