diff --git a/config/_default/menus/menus.en.toml b/config/_default/menus/menus.en.toml index 1ebac2e3..99afeb54 100644 --- a/config/_default/menus/menus.en.toml +++ b/config/_default/menus/menus.en.toml @@ -27,11 +27,17 @@ weight = 10 [[docs]] - name = "Setup" - url = "/docs/setup/" - identifier = "setup" + name = "Setup Kubernetes" + url = "/docs/setup-kubernetes/" + identifier = "setup-kubernetes" weight = 20 +[[docs]] + name = "Setup Components" + url = "/docs/setup-conmponens/" + identifier = "setup-components" + weight = 25 + [[docs]] name = "Kubeflow" url = "/docs/kubeflow/" diff --git a/content/en/docs/setup-components/_index.md b/content/en/docs/setup-components/_index.md new file mode 100644 index 00000000..1479f272 --- /dev/null +++ b/content/en/docs/setup-components/_index.md @@ -0,0 +1,10 @@ +--- +title : "Setup Kubernetes Components" +description: "" +lead: "" +date: 2021-12-13 +lastmod: 2021-12-13 +draft: false +weight: 250 +images: [] +--- diff --git a/content/en/docs/setup-components/install-components-kf.md b/content/en/docs/setup-components/install-components-kf.md new file mode 100644 index 00000000..0f4995a7 --- /dev/null +++ b/content/en/docs/setup-components/install-components-kf.md @@ -0,0 +1,560 @@ +--- +title : "Kubeflow" +description: "구성요소 설치 - Kubeflow" +date: 2021-12-13 +lastmod: 2021-12-13 +draft: false +weight: 252 +contributors: ["Jaeyeon Kim"] +menu: + docs: + parent: "setup-components" +images: [] +--- + +## 설치 파일 준비 + +Kubeflow **v1.4.0** 버전을 설치하기 위해서, 설치에 필요한 manifests 파일들을 준비합니다. + +[kubeflow/manifests Repository](https://github.com/kubeflow/manifests) 를 **v1.4.0** 태그로 깃 클론한 뒤, 해당 폴더로 이동합니다. + +```text +git clone -b v1.4.0 git@github.com:kubeflow/manifests.git +cd manifests +``` + +## 각 구성요소별 설치 + +kubeflow/manifests Repository 에 각 구성요소별 설치 커맨드가 적혀져 있지만, 설치하며 발생할 수 있는 이슈 혹은 정상적으로 설치되었는지 확인할 수 있는 방법 등이 적혀져있지 않아 처음 설치하는 경우 어려움을 겪는 경우가 많습니다. +따라서, 각 구성요소별로 정상적으로 설치되었는지 확인하는 방법을 함께 작성합니다. + +또한, 본 문서에서는 **모두의 MLOps** 에서 다루지 않는 구성요소인 Knative, KFServing, MPI Operator 의 설치는 리소스의 효율적 사용을 위해 따로 설치하지 않습니다. + +### cert-manager + +cert-manager 를 설치합니다. + +```text +kustomize build common/cert-manager/cert-manager/base | kubectl apply -f - +``` + +cert-manager namespace 의 3 개의 pod 가 모두 Running 이 될 때까지 기다립니다. + +```text +kubectl get pod -n cert-manager +``` + +모두 Running 이 되면 다음과 비슷한 결과가 출력됩니다. + +```text +NAME READY STATUS RESTARTS AGE +cert-manager-7dd5854bb4-7nmpd 1/1 Running 0 2m10s +cert-manager-cainjector-64c949654c-2scxr 1/1 Running 0 2m10s +cert-manager-webhook-6b57b9b886-7q6g2 1/1 Running 0 2m10s +``` + +kubeflow-issuer 를 설치합니다. + +```text +kustomize build common/cert-manager/kubeflow-issuer/base | kubectl apply -f - +``` + +- cert-manager-webhook 이슈 + + cert-manager-webhook deployment 가 Running 이 아닌 경우, 다음과 비슷한 에러가 발생하며 kubeflow-issuer가 설치되지 않을 수 있음에 주의하기시 바랍니다. + 해당 에러가 발생한 경우, cert-manager 의 3 개의 pod 가 모두 Running 이 되는 것을 확인한 이후 다시 명령어를 수행하시기 바랍니다. + + ```text + Error from server: error when retrieving current configuration of: + Resource: "cert-manager.io/v1alpha2, Resource=clusterissuers", GroupVersionKind: "cert-manager.io/v1alpha2, Kind=ClusterIssuer" + Name: "kubeflow-self-signing-issuer", Namespace: "" + from server for: "STDIN": conversion webhook for cert-manager.io/v1, Kind=ClusterIssuer failed: Post "https://cert-manager-webhook.cert-manager.svc:443/convert?timeout=30s": dial tcp 10.101.177.157:443: connect: connection refused + ``` + +### Istio + +istio 관련 Custom Resource Definition(CRD) 를 설치합니다. + +```text +kustomize build common/istio-1-9/istio-crds/base | kubectl apply -f - +``` + +istio namespace 를 설치합니다. + +```text +kustomize build common/istio-1-9/istio-namespace/base | kubectl apply -f - +``` + +istio 를 설치합니다. + +```text +kustomize build common/istio-1-9/istio-install/base | kubectl apply -f - +``` + +istio-system namespace 의 2 개의 pod 가 모두 Running 이 될 때까지 기다립니다. + +```text +kubectl get po -n istio-system +``` + +모두 Running 이 되면 다음과 비슷한 결과가 출력됩니다. + +```text +NAME READY STATUS RESTARTS AGE +istio-ingressgateway-79b665c95-xm22l 1/1 Running 0 16s +istiod-86457659bb-5h58w 1/1 Running 0 16s +``` + +### Dex + +dex 를 설치합니다. + +```text +kustomize build common/dex/overlays/istio | kubectl apply -f - +``` + +auth namespace 의 1 개의 pod 가 모두 Running 이 될 때까지 기다립니다. + +```text +kubectl get po -n auth +``` + +모두 Running 이 되면 다음과 비슷한 결과가 출력됩니다. + +```text +NAME READY STATUS RESTARTS AGE +dex-5ddf47d88d-458cs 1/1 Running 1 12s +``` + +### OIDC AuthService + +OIDC AuthService 를 설치합니다. + +```text +kustomize build common/oidc-authservice/base | kubectl apply -f - +``` + +istio-system namespace 에 authservice-0 pod 가 Running 이 될 때까지 기다립니다. + +```text +kubectl get po -n istio-system -w +``` + +모두 Running 이 되면 다음과 비슷한 결과가 출력됩니다. + +```text +NAME READY STATUS RESTARTS AGE +authservice-0 1/1 Running 0 14s +istio-ingressgateway-79b665c95-xm22l 1/1 Running 0 2m37s +istiod-86457659bb-5h58w 1/1 Running 0 2m37s +``` + +### Kubeflow Namespace + +kubeflow namespace 를 생성합니다. + +```text +kustomize build common/kubeflow-namespace/base | kubectl apply -f - +``` + +kubeflow namespace 를 조회합니다. + +```text +kubectl get ns kubeflow +``` + +정상적으로 생성되면 다음과 비슷한 결과가 출력됩니다. + +```text +NAME STATUS AGE +kubeflow Active 8s +``` + +### Kubeflow Roles + +kubeflow-roles 를 설치합니다. + +```text +kustomize build common/kubeflow-roles/base | kubectl apply -f - +``` + +방금 생성한 kubeflow roles 를 조회합니다. + +```text +kubectl get clusterrole | grep kubeflow +``` + +다음과 같이 총 6 개의 clusterrole 이 출력됩니다. + +```text +kubeflow-admin 2021-12-03T08:51:36Z +kubeflow-edit 2021-12-03T08:51:36Z +kubeflow-kubernetes-admin 2021-12-03T08:51:36Z +kubeflow-kubernetes-edit 2021-12-03T08:51:36Z +kubeflow-kubernetes-view 2021-12-03T08:51:36Z +kubeflow-view 2021-12-03T08:51:36Z +``` + +### Kubeflow Istio Resources + +kubeflow-istio-resources 를 설치합니다. + +```text +kustomize build common/istio-1-9/kubeflow-istio-resources/base | kubectl apply -f - +``` + +방금 생성한 kubeflow roles 를 조회합니다. + +```text +kubectl get clusterrole | grep kubeflow-istio +``` + +다음과 같이 총 3 개의 clusterrole 이 출력됩니다. + +```text +kubeflow-istio-admin 2021-12-03T08:53:17Z +kubeflow-istio-edit 2021-12-03T08:53:17Z +kubeflow-istio-view 2021-12-03T08:53:17Z +``` + +kubeflow namespace 에 gateway 가 정상적으로 설치되었는지 확인합니다. + +```text +kubectl get gateway -n kubeflow +``` + +정상적으로 생성되면 다음과 비슷한 결과가 출력됩니다. + +```text +NAME AGE +kubeflow-gateway 31s +``` + +### Kubeflow Pipelines + +kubeflow pipelines 를 설치합니다. + +```text +kustomize build apps/pipeline/upstream/env/platform-agnostic-multi-user | kubectl apply -f - +``` + +위 명령어는 여러 resources 를 한 번에 설치하고 있지만, 설치 순서의 의존성이 있는 리소스가 존재합니다. +따라서 경우에 따라 다음과 비슷한 에러가 발생할 수 있습니다. + +```text +"error: unable to recognize "STDIN": no matches for kind "CompositeController" in version "metacontroller.k8s.io/v1alpha1"" +``` + +위와 비슷한 에러가 발생한다면, 10 초 정도 기다린 뒤 다시 위의 명령을 수행합니다. + +```text +kustomize build apps/pipeline/upstream/env/platform-agnostic-multi-user | kubectl apply -f - +``` + +정상적으로 설치되었는지 확인합니다. + +```text +kubectl get po -n kubeflow +``` + +다음과 같이 총 16 개의 pod 가 모두 Running 이 될 때까지 기다립니다. + +```text +NAME READY STATUS RESTARTS AGE +cache-deployer-deployment-79fdf9c5c9-bjnbg 2/2 Running 1 5m3s +cache-server-5bdf4f4457-48gbp 2/2 Running 0 5m3s +kubeflow-pipelines-profile-controller-7b947f4748-8d26b 1/1 Running 0 5m3s +metacontroller-0 1/1 Running 0 5m3s +metadata-envoy-deployment-5b4856dd5-xtlkd 1/1 Running 0 5m3s +metadata-grpc-deployment-6b5685488-kwvv7 2/2 Running 3 5m3s +metadata-writer-548bd879bb-zjkcn 2/2 Running 1 5m3s +minio-5b65df66c9-k5gzg 2/2 Running 0 5m3s +ml-pipeline-8c4b99589-85jw6 2/2 Running 1 5m3s +ml-pipeline-persistenceagent-d6bdc77bd-ssxrv 2/2 Running 0 5m3s +ml-pipeline-scheduledworkflow-5db54d75c5-zk2cw 2/2 Running 0 5m2s +ml-pipeline-ui-5bd8d6dc84-j7wqr 2/2 Running 0 5m2s +ml-pipeline-viewer-crd-68fb5f4d58-mbcbg 2/2 Running 1 5m2s +ml-pipeline-visualizationserver-8476b5c645-wljfm 2/2 Running 0 5m2s +mysql-f7b9b7dd4-xfnw4 2/2 Running 0 5m2s +workflow-controller-5cbbb49bd8-5zrwx 2/2 Running 1 5m2s +``` + +추가적으로 ml-pipeline UI 가 정상적으로 접속되는지 확인합니다. + +```text +kubectl port-forward svc/ml-pipeline-ui -n kubeflow 8888:80 +``` + +웹 브라우저를 열어 [http://localhost:8888/pipelines/](http://localhost:8888/pipelines/) 경로에 접속합니다. + +다음과 같은 화면이 출력되는 것을 확인합니다. + +

+ +

+ +### Katib + +Katib 를 설치합니다. + +```text +kustomize build apps/katib/upstream/installs/katib-with-kubeflow | kubectl apply -f - +``` + +정상적으로 설치되었는지 확인합니다. + +```text +kubectl get po -n kubeflow | grep katib +``` + +다음과 같이 총 4 개의 pod 가 Running 이 될 때까지 기다립니다. + +```text +katib-controller-68c47fbf8b-b985z 1/1 Running 0 82s +katib-db-manager-6c948b6b76-2d9gr 1/1 Running 0 82s +katib-mysql-7894994f88-scs62 1/1 Running 0 82s +katib-ui-64bb96d5bf-d89kp 1/1 Running 0 82s +``` + +추가적으로 katib UI 가 정상적으로 접속되는지 확인합니다. + +```text +kubectl port-forward svc/katib-ui -n kubeflow 8081:80 +``` + +웹 브라우저를 열어 [http://localhost:8081/katib/](http://localhost:8081/katib/) 경로에 접속합니다. + +다음과 같은 화면이 출력되는 것을 확인합니다. + +

+ +

+ +### Central Dashboard + +Dashboard 를 설치합니다. + +```text +kustomize build apps/centraldashboard/upstream/overlays/istio | kubectl apply -f - +``` + +정상적으로 설치되었는지 확인합니다. + +```text +kubectl get po -n kubeflow | grep centraldashboard +``` + +kubeflow namespace 에 centraldashboard 관련 1 개의 pod 가 Running 이 될 때까지 기다립니다. + +```text +centraldashboard-8fc7d8cc-xl7ts 1/1 Running 0 52s +``` + +추가적으로 Central Dashboard UI 가 정상적으로 접속되는지 확인합니다. + +```text +kubectl port-forward svc/centraldashboard -n kubeflow 8082:80 +``` + +웹 브라우저를 열어 [http://localhost:8082/](http://localhost:8082/) 경로에 접속합니다. + +다음과 같은 화면이 출력되는 것을 확인합니다. + +

+ +

+ +### Admission Webhook + +```text +kustomize build apps/admission-webhook/upstream/overlays/cert-manager | kubectl apply -f - +``` + +정상적으로 설치되었는지 확인합니다. + +```text +kubectl get po -n kubeflow | grep admission-webhook +``` + +1 개의 pod 가 Running 이 될 때까지 기다립니다. + +```text +admission-webhook-deployment-667bd68d94-2hhrx 1/1 Running 0 11s +``` + +### Notebooks & Jupyter Web App + +Notebook controller 를 설치합니다. + +```text +kustomize build apps/jupyter/notebook-controller/upstream/overlays/kubeflow | kubectl apply -f - +``` + +정상적으로 설치되었는지 확인합니다. + +```text +kubectl get po -n kubeflow | grep notebook-controller +``` + +1 개의 pod 가 Running 이 될 때까지 기다립니다. + +```text +notebook-controller-deployment-75b4f7b578-w4d4l 1/1 Running 0 105s +``` + +Jupyter Web App 을 설치합니다. + +```text +kustomize build apps/jupyter/jupyter-web-app/upstream/overlays/istio | kubectl apply -f - +``` + +정상적으로 설치되었는지 확인합니다. + +```text +kubectl get po -n kubeflow | grep jupyter-web-app +``` + +1 개의 pod 가 Running 이 될 때까지 기다립니다. + +```text +jupyter-web-app-deployment-6f744fbc54-p27ts 1/1 Running 0 2m +``` + +### Profiles + KFAM + +Profile Controller 를 설치합니다. + +```text +kustomize build apps/profiles/upstream/overlays/kubeflow | kubectl apply -f - +``` + +정상적으로 설치되었는지 확인합니다. + +```text +kubectl get po -n kubeflow | grep profiles-deployment +``` + +1 개의 pod 가 Running 이 될 때까지 기다립니다. + +```text +profiles-deployment-89f7d88b-qsnrd 2/2 Running 0 42s +``` + +### Volumes Web App + +Volumes Web App 을 설치합니다. + +```text +kustomize build apps/volumes-web-app/upstream/overlays/istio | kubectl apply -f - +``` + +정상적으로 설치되었는지 확인합니다. + +```text +kubectl get po -n kubeflow | grep volumes-web-app +``` + +1 개의 pod 가 Running 이 될 때까지 기다립니다. + +```text +volumes-web-app-deployment-8589d664cc-62svl 1/1 Running 0 27s +``` + +### Tensorboard & Tensorboard Web App + +Tensorboard Web App 를 설치합니다. + +```text +kustomize build apps/tensorboard/tensorboards-web-app/upstream/overlays/istio | kubectl apply -f - +``` + +정상적으로 설치되었는지 확인합니다. + +```text +kubectl get po -n kubeflow | grep tensorboards-web-app +``` + +1 개의 pod 가 Running 이 될 때까지 기다립니다. + +```text +tensorboards-web-app-deployment-6ff79b7f44-qbzmw 1/1 Running 0 22s +``` + +Tensorboard Controller 를 설치합니다. + +```text +kustomize build apps/tensorboard/tensorboard-controller/upstream/overlays/kubeflow | kubectl apply -f - +``` + +정상적으로 설치되었는지 확인합니다. + +```text +kubectl get po -n kubeflow | grep tensorboard-controller +``` + +1 개의 pod 가 Running 이 될 때까지 기다립니다. + +```text +tensorboard-controller-controller-manager-954b7c544-vjpzj 3/3 Running 1 73s +``` + +### Training Operator + +Training Operator 를 설치합니다. + +```text +kustomize build apps/training-operator/upstream/overlays/kubeflow | kubectl apply -f - +``` + +정상적으로 설치되었는지 확인합니다. + +```text +kubectl get po -n kubeflow | grep training-operator +``` + +1 개의 pod 가 Running 이 될 때까지 기다립니다. + +```text +training-operator-7d98f9dd88-6887f 1/1 Running 0 28s +``` + +### User Namespace + +Kubeflow 사용을 위해, 사용할 User 의 Kubeflow Profile 을 생성합니다. + +```text +kustomize build common/user-namespace/base | kubectl apply -f - +``` + +kubeflow-user-example-com profile 이 생성된 것을 확인합니다. + +```text +kubectl get profile +``` + +```text +kubeflow-user-example-com 37s +``` + +## 정상 설치 확인 + +kubeflow central dashboard 에 web browser 로 접속하기 위해 port-forward 합니다. + +```text +kubectl port-forward svc/istio-ingressgateway -n istio-system 8080:80 +``` + +Web Browser 를 열어 [http://localhost:8080](http://localhost:8080) 으로 접속하여, 다음과 같은 화면이 출력되는 것을 확인합니다. + +

+ +

+ +다음 접속 정보를 입력하여 접속합니다. + +- Email Address: `user@example.com` +- Password: `12341234` + +

+ +

diff --git a/content/en/docs/setup-components/install-components-mlflow.md b/content/en/docs/setup-components/install-components-mlflow.md new file mode 100644 index 00000000..3a08bbfe --- /dev/null +++ b/content/en/docs/setup-components/install-components-mlflow.md @@ -0,0 +1,17 @@ +--- +title : "MLFlow" +description: "구성요소 설치 - MLFlow" +date: 2021-12-13 +lastmod: 2021-12-13 +draft: false +weight: 253 +contributors: ["Jaeyeon Kim"] +menu: + docs: + parent: "setup-components" +images: [] +--- + +## Install MLFlow + +--- diff --git a/content/en/docs/setup-components/install-components-pg.md b/content/en/docs/setup-components/install-components-pg.md new file mode 100644 index 00000000..2f51c571 --- /dev/null +++ b/content/en/docs/setup-components/install-components-pg.md @@ -0,0 +1,99 @@ +--- +title : "Prometheus & Grafana" +description: "구성요소 설치 - Prometheus & Grafana" +date: 2021-12-13 +lastmod: 2021-12-13 +draft: false +weight: 254 +contributors: ["Jaeyeon Kim"] +menu: + docs: + parent: "setup-components" +images: [] +--- + +## Prometheus & Grafana + +프로메테우스(Prometheus) 와 그라파나(Grafana) 는 모니터링을 위한 도구입니다. +안정적인 서비스 운영을 위해서는 서비스와 서비스가 운영되고 있는 인프라의 상태를 지속적으로 관찰하고, 관찰한 메트릭을 바탕으로 문제가 생길 경우 빠르게 대응해야 합니다. +이러한 모니터링을 효율적으로 수행하기 위한 많은 도구 중 *모두의 MLOps*에서는 오픈소스인 프로메테우스와 그라파나를 사용할 예정입니다. + +보다 자세한 내용은 [Prometheus 공식 문서](https://prometheus.io/docs/introduction/overview/), [Grafana 공식 문서](https://grafana.com/docs/)를 확인해주시기 바랍니다. + +프로메테우스는 다양한 대상으로부터 Metric 을 수집하는 도구이며, 그라파나는 모인 데이터를 시각화하는 것을 도와주는 도구입니다. 서로 간의 종속성은 없지만 상호 보완적으로 사용할 수 있어 함께 사용되는 경우가 많습니다. + +본 글에서는 kube-prometheus-stack Helm Chart 21.0.0 버전을 활용해 쿠버네티스 크러스터에 프로메테우스와 그라파나를 함께 설치하겠습니다. + +### Helm Repository 추가 + +```text +helm repo add prometheus-community https://prometheus-community.github.io/helm-charts +``` + +다음과 같은 메시지가 출력되면 정상적으로 추가된 것을 의미합니다. + +```text +"prometheus-community" has been added to your repositories +``` + +### Helm Repository 업데이트 + +```text +helm repo update +``` + +다음과 같은 메시지가 출력되면 정상적으로 업데이트된 것을 의미합니다. + +```text +Hang tight while we grab the latest from your chart repositories... +...Successfully got an update from the "prometheus-community" chart repository +...Successfully got an update from the "datawire" chart repository +Update Complete. ⎈Happy Helming!⎈ +``` + +### Helm Install + +kube-prometheus-stack Chart 21.0.0 버전을 설치합니다. + +```text +helm install prom-stack prometheus-community/kube-prometheus-stack \ + --namespace monitoring-system \ + --create-namespace + --version 21.0.0 +``` + +다음과 같은 메시지가 출력되어야 합니다. + +```text +생략... +W1206 17:17:04.153330 30670 warnings.go:70] policy/v1beta1 PodSecurityPolicy is deprecated in v1.21+, unavailable in v1.25+ +NAME: prom-stack +LAST DEPLOYED: Mon Dec 6 17:16:45 2021 +NAMESPACE: monitoring-system +STATUS: deployed +REVISION: 1 +NOTES: +kube-prometheus-stack has been installed. Check its status by running: + kubectl --namespace monitoring-system get pods -l "release=prom-stack" + +Visit https://github.com/prometheus-operator/kube-prometheus for instructions on how to create & configure Alertmanager and Prometheus instances using the Operator. +``` + +정상적으로 설치되었는지 확인합니다. + +```text +kubectl get pod -n monitoring-system | grep prom-stack +``` + +monitoring-system namespace 에 6 개의 prom-stack 관련 pod 가 Running 이 될 때까지 기다립니다. + +```text +alertmanager-prom-stack-kube-prometheus-alertmanager-0 2/2 Running 0 62s +prom-stack-grafana-c8bb58f98-hfrz2 2/2 Running 0 84s +prom-stack-kube-prometheus-operator-68f7d9cd9f-gkbb7 1/1 Running 0 84s +prom-stack-kube-state-metrics-596d7cdf8c-pndsk 1/1 Running 0 84s +prom-stack-prometheus-node-exporter-zkwq9 1/1 Running 0 84s +prometheus-prom-stack-kube-prometheus-prometheus-0 2/2 Running 0 61s +``` + +#### TODO(jaeyeon.kim) 정상 설치 확인 UI 스크린샷 추가 diff --git a/content/en/docs/setup-components/install-components-seldon.md b/content/en/docs/setup-components/install-components-seldon.md new file mode 100644 index 00000000..ad5273e4 --- /dev/null +++ b/content/en/docs/setup-components/install-components-seldon.md @@ -0,0 +1,147 @@ +--- +title : "Seldon-Core" +description: "구성요소 설치 - Seldon-Core" +date: 2021-12-13 +lastmod: 2021-12-13 +draft: false +weight: 255 +contributors: ["Jaeyeon Kim"] +menu: + docs: + parent: "setup-components" +images: [] +--- + +## Seldon-Core + +Seldon-Core는 쿠버네티스 환경에 수많은 머신러닝 모델을 배포하고 관리할 수 있는 오픈소스 프레임워크 중 하나입니다. +보다 자세한 내용은 Seldon-Core 의 공식 [제품 설명 페이지](https://www.seldon.io/tech/products/core/) 와 [깃헙](https://github.com/SeldonIO/seldon-core) 그리고 API Deployment 파트를 참고해주시기 바랍니다. + +## Selon-Core 설치 + +Seldon-Core를 사용하기 위해서는 쿠버네티스의 인그레스(Ingress)를 담당하는 Ambassador 와 Istio 와 같은 [모듈이 필요합니다](https://docs.seldon.io/projects/seldon-core/en/latest/workflow/install.html). +Seldon-Core 에서는 Ambassador 와 Istio 만을 공식적으로 지원하며, *모두의 MLOps*에서는 Ambassador를 사용해 Seldon-core를 사용하므로 Ambassador를 설치하겠습니다. + +### Ambassador - Helm Repository 추가 + +```text +helm repo add datawire https://www.getambassador.io +``` + +다음과 같은 메시지가 출력되면 정상적으로 추가된 것을 의미합니다. + +```text +"datawire" has been added to your repositories +``` + +### Ambassador - Helm Repository 업데이트 + +```text +helm repo update +``` + +다음과 같은 메시지가 출력되면 정상적으로 업데이트된 것을 의미합니다. + +```text +Hang tight while we grab the latest from your chart repositories... +...Successfully got an update from the "datawire" chart repository +Update Complete. ⎈Happy Helming!⎈ +``` + +### Ambassador - Helm Install + +ambassador Chart 6.9.3 버전을 설치합니다. + +```text +helm install ambassador datawire/ambassador \ + --namespace seldon-system \ + --create-namespace \ + --set image.repository=quay.io/datawire/ambassador \ + --set enableAES=false \ + --set crds.keep=false \ + --version 6.9.3 +``` + +다음과 같은 메시지가 출력되어야 합니다. + +```text +생략... + +W1206 17:01:36.026326 26635 warnings.go:70] rbac.authorization.k8s.io/v1beta1 Role is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 Role +W1206 17:01:36.029764 26635 warnings.go:70] rbac.authorization.k8s.io/v1beta1 RoleBinding is deprecated in v1.17+, unavailable in v1.22+; use rbac.authorization.k8s.io/v1 RoleBinding +NAME: ambassador +LAST DEPLOYED: Mon Dec 6 17:01:34 2021 +NAMESPACE: seldon-system +STATUS: deployed +REVISION: 1 +NOTES: +------------------------------------------------------------------------------- + Congratulations! You've successfully installed Ambassador! + +------------------------------------------------------------------------------- +To get the IP address of Ambassador, run the following commands: +NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch the status of by running 'kubectl get svc -w --namespace seldon-system ambassador' + + On GKE/Azure: + export SERVICE_IP=$(kubectl get svc --namespace seldon-system ambassador -o jsonpath='{.status.loadBalancer.ingress[0].ip}') + + On AWS: + export SERVICE_IP=$(kubectl get svc --namespace seldon-system ambassador -o jsonpath='{.status.loadBalancer.ingress[0].hostname}') + + echo http://$SERVICE_IP: + +For help, visit our Slack at http://a8r.io/Slack or view the documentation online at https://www.getambassador.io. +``` + +seldon-system 에 4 개의 pod 가 Running 이 될 때까지 기다립니다. + +```text +kubectl get pod -n seldon-system +``` + +```text +ambassador-7f596c8b57-4s9xh 1/1 Running 0 7m15s +ambassador-7f596c8b57-dt6lr 1/1 Running 0 7m15s +ambassador-7f596c8b57-h5l6f 1/1 Running 0 7m15s +ambassador-agent-77bccdfcd5-d5jxj 1/1 Running 0 7m15s +``` + +### Seldon-Core - Helm Install + +seldon-core-operator Chart 1.11.2 버전을 설치합니다. + +```text +helm install seldon-core seldon-core-operator \ + --repo https://storage.googleapis.com/seldon-charts \ + --namespace seldon-system \ + --set usageMetrics.enabled=true \ + --set ambassador.enabled=true \ + --version 1.11.2 +``` + +다음과 같은 메시지가 출력되어야 합니다. + +```text +생략... + +W1206 17:05:38.336391 28181 warnings.go:70] admissionregistration.k8s.io/v1beta1 ValidatingWebhookConfiguration is deprecated in v1.16+, unavailable in v1.22+; use admissionregistration.k8s.io/v1 ValidatingWebhookConfiguration +NAME: seldon-core +LAST DEPLOYED: Mon Dec 6 17:05:34 2021 +NAMESPACE: seldon-system +STATUS: deployed +REVISION: 1 +TEST SUITE: None +``` + +seldon-system namespace 에 1 개의 seldon-controller-manager pod 가 Running 이 될 때까지 기다립니다. + +```text +kubectl get pod -n seldon-system | grep seldon-controller +``` + +```text +seldon-controller-manager-8457b8b5c7-r2frm 1/1 Running 0 2m22s +``` + +#### TODO (jaeyeon.kim) Seldon Deployment 생성 후, prometheus, grafana 연동 스크린샷 diff --git a/content/en/docs/setup/_index.md b/content/en/docs/setup-kubernetes/_index.md similarity index 82% rename from content/en/docs/setup/_index.md rename to content/en/docs/setup-kubernetes/_index.md index 119f43aa..f166952b 100644 --- a/content/en/docs/setup/_index.md +++ b/content/en/docs/setup-kubernetes/_index.md @@ -1,5 +1,5 @@ --- -title : "Setup" +title : "Setup Kubernetes" description: "Setup kubernetes." lead: "" date: 2021-12-13 diff --git a/content/en/docs/setup/intro.md b/content/en/docs/setup-kubernetes/intro.md similarity index 99% rename from content/en/docs/setup/intro.md rename to content/en/docs/setup-kubernetes/intro.md index db5bc723..afd23587 100644 --- a/content/en/docs/setup/intro.md +++ b/content/en/docs/setup-kubernetes/intro.md @@ -9,7 +9,7 @@ weight: 201 contributors: ["Jaeyeon Kim"] menu: docs: - parent: "setup" + parent: "setup-kubernetes" images: [] --- diff --git a/content/en/docs/setup/kubernetes-with-k3s.md b/content/en/docs/setup-kubernetes/kubernetes-with-k3s.md similarity index 91% rename from content/en/docs/setup/kubernetes-with-k3s.md rename to content/en/docs/setup-kubernetes/kubernetes-with-k3s.md index 94cfcc23..7f7cd0bc 100644 --- a/content/en/docs/setup/kubernetes-with-k3s.md +++ b/content/en/docs/setup-kubernetes/kubernetes-with-k3s.md @@ -8,7 +8,7 @@ weight: 223 contributors: ["Jongseob Jeon"] menu: docs: - parent: "setup" + parent: "setup-kubernetes" images: [] --- @@ -48,7 +48,7 @@ sudo chown mrx:mrx .kube/config ## 4. 쿠버네티스 기본 모듈 설치 -[Setup Kubernetes Modules]({{< relref "docs/setup/setup-kubernetes-module.md" >}})을 참고하여 다음 컴포넌트들을 설치해 주시기 바랍니다. +[Setup Kubernetes Modules]({{< relref "docs/setup-kubernetes/setup-kubernetes-module.md" >}})을 참고하여 다음 컴포넌트들을 설치해 주시기 바랍니다. - helm - kustomize diff --git a/content/en/docs/setup/kubernetes-with-kubeadm.md b/content/en/docs/setup-kubernetes/kubernetes-with-kubeadm.md similarity index 93% rename from content/en/docs/setup/kubernetes-with-kubeadm.md rename to content/en/docs/setup-kubernetes/kubernetes-with-kubeadm.md index 85ab399c..575cdf55 100644 --- a/content/en/docs/setup/kubernetes-with-kubeadm.md +++ b/content/en/docs/setup-kubernetes/kubernetes-with-kubeadm.md @@ -8,7 +8,7 @@ weight: 221 contributors: ["Youngcheol Jang"] menu: docs: - parent: "setup" + parent: "setup-kubernetes" images: [] --- @@ -16,7 +16,7 @@ images: [] 쿠버네티스 클러스터를 구축하기에 앞서, 필요한 구성요소들을 **클러스터에** 설치합니다. -[Setup Prerequisite]({{< relref "docs/setup/setup-pre-requisite.md" >}})을 참고하여 Kubernetes를 설치하기 전에 필요한 요소들을 **클러스터에** 설치해 주시기 바랍니다. +[Setup Prerequisite]({{< relref "docs/setup-kubernetes/setup-pre-requisite.md" >}})을 참고하여 Kubernetes를 설치하기 전에 필요한 요소들을 **클러스터에** 설치해 주시기 바랍니다. 쿠버네티스를 위한 네트워크의 설정을 변경합니다. @@ -137,7 +137,7 @@ scp -p {CLUSTER_USER_ID}@{CLUSTER_IP}:~/.kube/config ~/.kube/config ## 4. 쿠버네티스 기본 모듈 설치 -[Setup Kubernetes Modules]({{< relref "docs/setup/setup-kubernetes-module.md" >}})을 참고하여 다음 컴포넌트들을 설치해 주시기 바랍니다. +[Setup Kubernetes Modules]({{< relref "docs/setup-kubernetes/setup-kubernetes-module.md" >}})을 참고하여 다음 컴포넌트들을 설치해 주시기 바랍니다. - helm - kustomize diff --git a/content/en/docs/setup/kubernetes-with-minikube.md b/content/en/docs/setup-kubernetes/kubernetes-with-minikube.md similarity index 94% rename from content/en/docs/setup/kubernetes-with-minikube.md rename to content/en/docs/setup-kubernetes/kubernetes-with-minikube.md index 5b4cacab..8e6e36d9 100644 --- a/content/en/docs/setup/kubernetes-with-minikube.md +++ b/content/en/docs/setup-kubernetes/kubernetes-with-minikube.md @@ -8,7 +8,7 @@ weight: 222 contributors: ["Jaeyeon Kim"] menu: docs: - parent: "setup" + parent: "setup-kubernetes" images: [] --- @@ -16,7 +16,7 @@ images: [] 쿠버네티스 클러스터를 구축하기에 앞서, 필요한 구성요소들을 **클러스터에** 설치합니다. -[Setup Prerequisite]({{< relref "docs/setup/setup-pre-requisite.md" >}})을 참고하여 Kubernetes를 설치하기 전에 필요한 요소들을 **클러스터에** 설치해 주시기 바랍니다. +[Setup Prerequisite]({{< relref "docs/setup-kubernetes/setup-pre-requisite.md" >}})을 참고하여 Kubernetes를 설치하기 전에 필요한 요소들을 **클러스터에** 설치해 주시기 바랍니다. ### Minikube binary @@ -181,7 +181,7 @@ root@ubuntu:/home/mlops# minikube addons list ## 4. 쿠버네티스 기본 모듈 설치 -[Setup Kubernetes Modules]({{< relref "docs/setup/setup-kubernetes-module.md" >}})을 참고하여 다음 컴포넌트들을 설치해 주시기 바랍니다. +[Setup Kubernetes Modules]({{< relref "docs/setup-kubernetes/setup-kubernetes-module.md" >}})을 참고하여 다음 컴포넌트들을 설치해 주시기 바랍니다. - helm - kustomize diff --git a/content/en/docs/setup/kubernetes.md b/content/en/docs/setup-kubernetes/kubernetes.md similarity index 98% rename from content/en/docs/setup/kubernetes.md rename to content/en/docs/setup-kubernetes/kubernetes.md index 3bca0e8b..ffa5aabe 100644 --- a/content/en/docs/setup/kubernetes.md +++ b/content/en/docs/setup-kubernetes/kubernetes.md @@ -8,7 +8,7 @@ weight: 202 contributors: ["Jaeyeon Kim"] menu: docs: - parent: "setup" + parent: "setup-kubernetes" images: [] --- diff --git a/content/en/docs/setup/setup-kubernetes-module.md b/content/en/docs/setup-kubernetes/setup-kubernetes-module.md similarity index 99% rename from content/en/docs/setup/setup-kubernetes-module.md rename to content/en/docs/setup-kubernetes/setup-kubernetes-module.md index 4992d9e5..7289dddc 100644 --- a/content/en/docs/setup/setup-kubernetes-module.md +++ b/content/en/docs/setup-kubernetes/setup-kubernetes-module.md @@ -8,7 +8,7 @@ weight: 230 contributors: ["Jaeyeon Kim"] menu: docs: - parent: "setup" + parent: "setup-kubernetes" images: [] --- diff --git a/content/en/docs/setup/setup-nvidia-gpu.md b/content/en/docs/setup-kubernetes/setup-nvidia-gpu.md similarity index 99% rename from content/en/docs/setup/setup-nvidia-gpu.md rename to content/en/docs/setup-kubernetes/setup-nvidia-gpu.md index b945e55e..614f2108 100644 --- a/content/en/docs/setup/setup-nvidia-gpu.md +++ b/content/en/docs/setup-kubernetes/setup-nvidia-gpu.md @@ -8,7 +8,7 @@ weight: 231 contributors: ["Jaeyeon Kim"] menu: docs: - parent: "setup" + parent: "setup-kubernetes" images: [] --- diff --git a/content/en/docs/setup/setup-pre-requisite.md b/content/en/docs/setup-kubernetes/setup-pre-requisite.md similarity index 99% rename from content/en/docs/setup/setup-pre-requisite.md rename to content/en/docs/setup-kubernetes/setup-pre-requisite.md index 0751947d..fd32f7ba 100644 --- a/content/en/docs/setup/setup-pre-requisite.md +++ b/content/en/docs/setup-kubernetes/setup-pre-requisite.md @@ -8,7 +8,7 @@ weight: 210 contributors: ["Jaeyeon Kim"] menu: docs: - parent: "setup" + parent: "setup-kubernetes" images: [] --- diff --git a/static/images/docs/setup/after-login.png b/static/images/docs/setup/after-login.png new file mode 100644 index 00000000..4613525e Binary files /dev/null and b/static/images/docs/setup/after-login.png differ