728x90
쿠버네티스에 ODH 오퍼레이터 설치
1. minikube를 사용해 카프카 클러스터가 실행 중인지 확인한다.
minikube status
2. OLM 설치 및 확인
kubectl get pods -n olm
책에 필요한 소스를 git에서 가져온다.
git clone https://github.com/PacktPublishing/Machine-Learning-on-Kubernetes.git
3. YAML 파일을 사용해 새로운 카탈로그 소스 오퍼레이터 등록
- chatpter04 폴더에 있다.
kubectl create -f catalog-source.yaml
# catalogsource.operators.coreos.com/community-operators-redhat created
catalog-source.yaml
apiVersion: operators.coreos.com/v1alpha1
kind: CatalogSource
metadata:
name: community-operators-redhat
namespace: olm
spec:
displayName: Community Operators Red Hat
image: registry.access.redhat.com/redhat/community-operator-index:v4.9
publisher: RedHat
sourceType: grpc
updateStrategy:
registryPoll:
interval: 60m
namespace로 catalogsource
로 조회하면 community-operators-redhat
가 나온다.
kubectl get catalogsource -n olm
odh-subscription.yaml
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: opendatahub-operator
namespace: operators
spec:
channel: stable
installPlanApproval: Automatic
name: opendatahub-operator
source: community-operators-redhat
sourceNamespace: olm
startingCSV: opendatahub-operator.v1.1.1
4. ODH 구독을 생성한다.
- 구독을 생산하면 OLM은 자동으로 오퍼레이터와 모든 관련 구성 요소들은 설치한다.
kubectl create -f odh-subscription.yaml
# subscription.operators.coreos.com/opendatahub-operator created
5. ODH 파드가 실행 중인지 확인한다.
kubectl get subscription.operators.coreos.com -n operators
쿠버네티스 클러스텅에 인그레스 제어기 활성화
인그레스를 사용해 특정 서비스를 클러스터 외붸서 접근할 수 있도록 만들수 있다는 점을 상기해보자
minikube
를 사용 중이라면 기본 인그레스를 활성화하기 위해 다음 과정을 진행해보자
Nginx 기반의 인그레스 제어기를 클러스터에서 활성화하기 위해 다음 명령을 실행한다.
addons
는 쿠버네티스 클러스터의 기능을 확장
minikube addons enable ingress
- 비활성화와 addons가 가능한 목록 명령어도 첨부
minikube addons enable ingress # 비활성화
minikube addons list # addons 리스트
인그레스 파드가 클러스터에서 실해 중인지 확인한다.
kubectl get pods -n ingress-nginx
쿠버네티스에 Keycloack 설치
클러스터에 대한 외부의 접근을 허용하므로, 오픈소스 사용자 인증과 권한 인증 구성 요소를 우리 머신러닝 플랫폼에 설치할 것이다. 이를 위해 Keycloak 를 활용해보자
Keycloak 이란
- 업계 표준의 보안 체계인 OAuth2, OpenID Connect 등을 지원한다.
1. Keycloak 앱에 대한 네임 스페이스를 생성한다.
kubectl create ns keycloak
2. Keycloak 매니페스트를 생성한다.
kubectl create -f keycloak.yaml --namespace keycloak
3.파드 실행중 인지 확인
- 초반에 READY 가
0/1
로 뜨는데 Keycloak 파드가 실행 중인데 컨테이너 이미지를 가져오는데 시간이 좀 걸린다. kubectl get pods -n keycloak
- Keycloak 파드를 위한 인그레스를 정의하고 설정해, 클러스터 외부에서 접근할 수 있게 만들 것이다.
4.minikube 머신 의 IP 주소를 얻는다
minikube ip
5. keycloak-ingress.yaml 를 열고 KEYCLOAK_HOST 문자열을 치환한다.
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: keycloak
namespace: keycloak
spec:
tls:
- hosts:
- keycloak.{본인 ip}.nip.io
rules:
- host: keycloak.{본인 ip}.nip.io
http:
paths:
- backend:
service:
name: keycloak
port:
number: 8080
path: /
pathType: ImplementationSpecific
6. ingress 객체를 생성하자
kubectl create -f keycloak-ingress.yaml --namespace keycloak
7. 인그레스 객체를 확인한다.
kubectl get ingress --namespace keycloak
8. Keycloak이 실행 중이고 인그레스 객체를 통해, 외부에 노출했으므로 독자의 컴퓨터에서 브라우저를 열고 접근해보자
https://keycloak.{본인 ip}.nip.io/auth
결국 난 keycloak 링크로 접속이 불가했고 다른 방식으로 localhost 접근
이 과정에서 명령어를 여러 개를 찾아봤고 이를 추가했다. 중복된 내용도 많다.
이상하게 DNS 도 해석되고 각 리소스도 분명히 떠있는데 !!
- 특정 namespace pod를 찾기
kubectl get pods -n ingress-nginx
- 서비스의 메타 정보 확인
kubectl get svc keycloak -n keycloak
- 로그 보기
kubectl logs -f {리소스 이름} -n ingress-nginx
- 리소스 세부 정보 보기
kubectl describe pod {리소스 이름} -n keycloak
- minikube 클러스터에서 실행 중인 모든 서비스 나열
minikube service list
- 특정 서비스(
keycloak
)에 대한 접근 URL을 검색하고, 그 URL을 출력 - 난 우선 여기를 통해서 다음 과정은 진행했다
minikube service keycloak -n keycloak --url
9. 관리자 콘솔 접속 및 계정 설정
Adminstration Console로 들어가서 로그인한다.
- 초기 계정 정보는 admin / admin 이다
728x90
'Engineering > K8S' 카테고리의 다른 글
Kubernetes 자주 사용하는 명령어 (0) | 2024.11.26 |
---|---|
[쿠버네티스로 구현하는 머신러닝] JupyterHub 자체 구축 (0) | 2024.05.06 |
[쿠버네티스로 구현하는 머신러닝]4-1 머신러닝 플랫폼의 구조 (1) | 2024.03.30 |
[쿠버네티스로 구현하는 머신러닝]3.2-로컬 쿠버네티스 환경 설정하기 (0) | 2024.03.28 |
[쿠버네티스로 구현하는 머신러닝]3.1-쿠버네티스 주요 구성 요소 살펴보기 (1) | 2024.03.27 |