지난 포스팅에서 Kubernetes Cluster안에 Jupyter Hub를 설치하고 GitHub Login을 사용하는 것까지 해 보았다.
그런데 이렇게 했을 때 문제가 GitHub에 올려 놓은 private git들을 Jupyter Hub에서 가져가려면 ssh 이용 설정을 해야한다는 것인데, 좀 귀찮은 작업이 된다. GitHub와 유사한 GitLab은 Local로 설치할 수도 있고, K8S 클러스터 연동을 UI로 제공하고 있으며, Private Git까지 Jupyter Hub에서 쉽게 사용할 수 있도록 해 준다.
1) Kubernetes Cluster 연동
<프로젝트 선택> -> Operations -> Kubernetes 를 선택한 후 Add Cluster를 설치하여 만들어 놓은 EKS나 GKE를 선택한다. cluster-name은 만들어 놓은 클러스터 이름을 입력한다.
추가로 API URL, CA Certificate, Service Token이 필요한데 아래의 절차를 따르면 된다.
// API URL 가져오기
$ kubectl cluster-info | grep 'Kubernetes master' | awk '/http/ {print $NF}'
https://34.64.126.180
// Secret List 가져오기
$ kubectl get secrets
NAME TYPE DATA AGE
default-token-tlwl4 kubernetes.io/service-account-token 3 2d1h
// 위에 default-token으로 시작하는 Name을 아래 명령어에 넣어주어 CA Cert를 가져옴
$ kubectl get secret <Token Name> -o jsonpath="{['data']['ca\.crt']}" | base64 --decode
-----BEGIN CERTIFICATE-----
MIIDDDCCAfSgAwIBAgIRANl4sh2kvOwFGJYRZ5G3IzUwDQYJKoZIhvcNAQELBQAw
LzEtMCsGA1UEAxMkMjM1OGMxMTEtY2M5OC00ZmU3LWE0NjAtM2IwMTU5MWVhMWYz
MB4XDTIwMDcyNzA1NDc0M1oXDTI1MDcyNjA2NDc0M1owLzEtMCsGA1UEAxMkMjM1
OGMxMTEtY2M5OC00ZmU3LWE0NjAtM2IwMTU5MWVhMWYzMIIBIjANBgkqhkiG9w0B
AQEFAAOCAQ8AMIIBCgKCAQEAr0rznunqurZ1GkeelCSie+ZLa0ZBJsLK1qEWZR5M
x8AgqcVzBHAcEbwgOLmKytmPxwZoWHuiwttLLqdUakiPPatJdKsgn+MWxsYIcAgp
WRIbrwgB4lW3RW60JTMNnGZ7NZeQLb62dnBLZ/98oENCLGZ76USARanDIwlAvcbM
m9V3sPq0fF6s2Vv8I+nXvcTEOU/l5MVHbuIv9RZj27Rs+4lqTO00/Tp6eurXAoGE
IBh0JAzV9vrrmjjgifEpkw+T4coa5rjP86e90sUd6c31jRhY4VJrNKEPiHpRxLG+
tPV7/gmKowFrzLbd+k8q3Bkci9IRvsEbr7kv9z+TQVOl1QIDAQABoyMwITAOBgNV
HQ8BAf8EBAMCAgQwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEA
m0DJkje+ka3YZlhFWxAc39EzENUb8VEDhSm0HOd52XvxHDvSeM5Gxjksbl7pE1rz
N3yiBY/55N7YcM84hLjqwjuqCJdmylQMcMBWXqAHYcGBbA6+BKunBxJQT6H9DnEy
PdyeaJT8kKFcT6VWWCxMlhi+zPOERGD+b+4j/ASS5WDwFpniglFPCalvCpKkKrEI
2y5PE3LCshcDUIH6azzzc20VrKn+R2ed36msMQzNFKjkRVplzlUINc2xRsR0r0Hh
MDyjEF041ZuQ8k5lKUzHH4klGo5pxgBQ8X1cBUImmo1jLxOd/14aOwZkE+kMSEao
YnmE5lP4mmZh/qyoryuhEw==
-----END CERTIFICATE-----
// 아래의 내용으로 gitlab-admin-service-account.yaml 파일을 만든다.
apiVersion: v1
kind: ServiceAccount
metadata:
name: gitlab-admin
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: gitlab-admin
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: gitlab-admin
namespace: kube-system
// kubectl로 admin 설정을 반영
$kubectl apply -f gitlab-admin-service-account.yaml
// 아래의 명령으로 token을 리턴 받음
$ kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep gitlab-admin | awk '{print $1}')
Name: gitlab-admin-token-jqb6m
Namespace: kube-system
Labels: <none>
Annotations: kubernetes.io/service-account.name: gitlab-admin
kubernetes.io/service-account.uid: c4f3d3c5-d0a8-11ea-9f51-42010ab2002a
Type: kubernetes.io/service-account-token
Data
====
ca.crt: 1119 bytes
namespace: 11 bytes
token: eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJnaXRsYWItYWRtaW4tdG9rZW4tanFiNm0iLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZ2l0bGFiLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiYzRmM2QzYzUtZDBhOC0xMWVhLTlmNTEtNDIwMTBhYjIwMDJhIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmdpdGxhYi1hZG1pbiJ9.WlP7Q5AK_pLyPNcdGZkXWbsJEs83CnxrhA34ELZnl1tNnc0kNcYBEl3Ca5Xk4ALV9BrkyAKbWO89uCC_IRs3yV8zHxgr8TxEoA1al50KDlc7m86_em5_AbAA1KUqScOPSjCVmrl8ux-GFld1OUDow70OFrLUxffJpJ59ZdlGWkQInraiKLNmSrbliUz5RPL8egsOJFc2xrpHRgitqBNxuTYlZkuhBMeuMWmy-9FiNwyCtn9uYS2GrUfZIKhVkvu1J5kCGSuLHBYMNuuqO0KRDWhTaRIFN3JXDaDfGvsMeOpsb4zo_irtY9A6aVn_SFExotT319pnGwQ0nB9AzL5z6w
위에서 받은 API URL, CA Certification, Token을 차례대로 입력하여 주면 GKE 등록이 끝난다.
2) Ingress / Jupyter Hub 설치
그 다음부터는 간단하다 등록된 GKE를 선택하고 Ingress와 Jupyter Hub를 차례대로 Install 해 준다. (Ingress를 설치해야 Jupyter Hub Install이 활성화 된다.)
3) Jupyter Hub 실행
설치가 완료되면 위 스크린 샷에 나타난 Jupyter Hub의 주소를 통해 실행이 가능하다. GitLab으로 Jupyter를 Authorize하겠느냐는 질문이 나오는데, 당연히 그러겠다고 하면 된다. 더 괜찮은 점은 default로 Jupyter의 Git Extension이 설치되는데 GitLab의 내 Private Repo도 바로 접근 가능하다는 것이다. Jupyter Hub에서 작성한 내용은 Commit을 통해 Gitlab에 반영할 수 있다.
'AI 빅데이터 > Google Cloud Platform' 카테고리의 다른 글
[GCP] AI Platform에서 Pipeline 배포가 되지 않을 때 (수동배포) (0) | 2021.07.09 |
---|---|
[GCP] Vertex AI 커스텀 모델 따라하기 (0) | 2021.06.11 |
[GCP] GKE에 Jupyter Notebook 운영하고 GitHub로 사용자 관리 (2) | 2020.07.29 |
[GCP] Cloud Run과 Cloud Run on Anthos (0) | 2020.06.15 |
[GCP] GKE로 쿠버네티스 운영하기 완전 기본 (0) | 2020.06.09 |
댓글