update kubeflow dip-catalog
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
approvers:
|
||||
- tarilabs
|
||||
- rareddy
|
||||
- Tomcli
|
||||
reviewers:
|
||||
- tarilabs
|
||||
- rareddy
|
||||
- Tomcli
|
||||
@@ -0,0 +1,56 @@
|
||||
# Install Kubeflow Model Registry
|
||||
|
||||
This folder contains [Kubeflow Model Registry](https://www.kubeflow.org/docs/components/model-registry/installation/) Kustomize manifests
|
||||
|
||||
## Installation
|
||||
|
||||
To install Kubeflow Model Registry, follow [Kubeflow Model Registry deployment documentation](https://www.kubeflow.org/docs/components/model-registry/installation/)
|
||||
|
||||
The following instructions will summarize how to deploy Model Registry as separate component in the context of a default Kubeflow >=1.8 installation.
|
||||
|
||||
```bash
|
||||
kubectl apply -k overlays/db
|
||||
```
|
||||
|
||||
As the default Kubeflow installation provides an Istio mesh, apply the necessary manifests:
|
||||
|
||||
```bash
|
||||
kubectl apply -k options/istio
|
||||
```
|
||||
|
||||
Check everything is up and running:
|
||||
|
||||
```bash
|
||||
kubectl wait --for=condition=available -n kubeflow deployment/model-registry-deployment --timeout=2m
|
||||
kubectl logs -n kubeflow deployment/model-registry-deployment
|
||||
```
|
||||
|
||||
Optionally, you can also port-forward the REST API container port of Model Registry to interact with it from your terminal:
|
||||
|
||||
```bash
|
||||
kubectl port-forward svc/model-registry-service -n kubeflow 8081:8080
|
||||
```
|
||||
|
||||
And then, from another terminal:
|
||||
|
||||
```bash
|
||||
curl -sX 'GET' \
|
||||
'http://localhost:8081/api/model_registry/v1alpha3/registered_models?pageSize=100&orderBy=ID&sortOrder=DESC' \
|
||||
-H 'accept: application/json' | jq
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
For a basic usage of the Kubeflow Model Registry, follow the [Kubeflow Model Registry getting started documentation](https://www.kubeflow.org/docs/components/model-registry/getting-started/)
|
||||
|
||||
## Uninstall
|
||||
|
||||
To uninstall the Kubeflow Model Registry run:
|
||||
|
||||
```bash
|
||||
# Delete istio options
|
||||
kubectl delete -k options/istio
|
||||
|
||||
# Delete model registry db and deployment
|
||||
kubectl delete -k overlays/db
|
||||
```
|
||||
@@ -0,0 +1,7 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- model-registry-configmap.yaml
|
||||
- model-registry-deployment.yaml
|
||||
- model-registry-service.yaml
|
||||
- model-registry-sa.yaml
|
||||
@@ -0,0 +1,11 @@
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: model-registry-configmap
|
||||
labels:
|
||||
component: model-registry-server
|
||||
data:
|
||||
MODEL_REGISTRY_REST_SERVICE_HOST: "model-registry-service"
|
||||
MODEL_REGISTRY_REST_SERVICE_PORT: "8080"
|
||||
MODEL_REGISTRY_GRPC_SERVICE_HOST: "model-registry-service"
|
||||
MODEL_REGISTRY_GRPC_SERVICE_PORT: "9090"
|
||||
@@ -0,0 +1,105 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: model-registry-deployment
|
||||
labels:
|
||||
component: model-registry-server
|
||||
spec:
|
||||
replicas: 1
|
||||
selector:
|
||||
matchLabels:
|
||||
component: model-registry-server
|
||||
template:
|
||||
metadata:
|
||||
annotations:
|
||||
sidecar.istio.io/inject: "true"
|
||||
labels:
|
||||
component: model-registry-server
|
||||
spec:
|
||||
containers:
|
||||
- name: rest-container
|
||||
args:
|
||||
- --hostname=0.0.0.0
|
||||
- --port=8080
|
||||
- --mlmd-hostname=localhost
|
||||
- --mlmd-port=9090
|
||||
command:
|
||||
- /model-registry
|
||||
- proxy
|
||||
image: kubeflow/model-registry:latest
|
||||
# empty placeholder environment for patching
|
||||
env: []
|
||||
ports:
|
||||
- name: http-api
|
||||
containerPort: 8080
|
||||
livenessProbe:
|
||||
initialDelaySeconds: 30
|
||||
periodSeconds: 5
|
||||
tcpSocket:
|
||||
port: http-api
|
||||
timeoutSeconds: 2
|
||||
readinessProbe:
|
||||
initialDelaySeconds: 3
|
||||
periodSeconds: 5
|
||||
tcpSocket:
|
||||
port: http-api
|
||||
timeoutSeconds: 2
|
||||
- name: grpc-container
|
||||
# ! Sync to the same MLMD version:
|
||||
# * backend/metadata_writer/requirements.in and requirements.txt
|
||||
# * @kubeflow/frontend/src/mlmd/generated
|
||||
# * .cloudbuild.yaml and .release.cloudbuild.yaml
|
||||
# * manifests/kustomize/base/metadata/base/model-registry-deployment.yaml
|
||||
# * test/tag_for_hosted.sh
|
||||
image: gcr.io/tfx-oss-public/ml_metadata_store_server:1.14.0
|
||||
env:
|
||||
- name: DBCONFIG_USER
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: mysql-secret
|
||||
key: username
|
||||
- name: DBCONFIG_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: mysql-secret
|
||||
key: password
|
||||
- name: MYSQL_DATABASE
|
||||
valueFrom:
|
||||
configMapKeyRef:
|
||||
name: pipeline-install-config
|
||||
key: mlmdDb
|
||||
- name: MYSQL_HOST
|
||||
valueFrom:
|
||||
configMapKeyRef:
|
||||
name: pipeline-install-config
|
||||
key: dbHost
|
||||
- name: MYSQL_PORT
|
||||
valueFrom:
|
||||
configMapKeyRef:
|
||||
name: pipeline-install-config
|
||||
key: dbPort
|
||||
command: ["/bin/metadata_store_server"]
|
||||
args: ["--grpc_port=9090",
|
||||
"--mysql_config_database=$(MYSQL_DATABASE)",
|
||||
"--mysql_config_host=$(MYSQL_HOST)",
|
||||
"--mysql_config_port=$(MYSQL_PORT)",
|
||||
"--mysql_config_user=$(DBCONFIG_USER)",
|
||||
"--mysql_config_password=$(DBCONFIG_PASSWORD)",
|
||||
"--enable_database_upgrade=true"
|
||||
]
|
||||
ports:
|
||||
- name: grpc-api
|
||||
containerPort: 9090
|
||||
livenessProbe:
|
||||
tcpSocket:
|
||||
port: grpc-api
|
||||
initialDelaySeconds: 3
|
||||
periodSeconds: 5
|
||||
timeoutSeconds: 2
|
||||
readinessProbe:
|
||||
tcpSocket:
|
||||
port: grpc-api
|
||||
initialDelaySeconds: 3
|
||||
periodSeconds: 5
|
||||
timeoutSeconds: 2
|
||||
serviceAccountName: model-registry-server
|
||||
@@ -0,0 +1,4 @@
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: model-registry-server
|
||||
@@ -0,0 +1,19 @@
|
||||
kind: Service
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
labels:
|
||||
app: metadata
|
||||
name: model-registry-service
|
||||
spec:
|
||||
selector:
|
||||
component: model-registry-server
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 8080
|
||||
protocol: TCP
|
||||
appProtocol: http
|
||||
name: http-api
|
||||
- port: 9090
|
||||
protocol: TCP
|
||||
appProtocol: grpc
|
||||
name: grpc-api
|
||||
@@ -0,0 +1,9 @@
|
||||
apiVersion: networking.istio.io/v1alpha3
|
||||
kind: DestinationRule
|
||||
metadata:
|
||||
name: model-registry-service
|
||||
spec:
|
||||
host: model-registry-service.kubeflow.svc.cluster.local
|
||||
trafficPolicy:
|
||||
tls:
|
||||
mode: ISTIO_MUTUAL
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
apiVersion: security.istio.io/v1beta1
|
||||
kind: AuthorizationPolicy
|
||||
metadata:
|
||||
name: model-registry-service
|
||||
spec:
|
||||
action: ALLOW
|
||||
selector:
|
||||
matchLabels:
|
||||
component: model-registry-server
|
||||
rules:
|
||||
- {}
|
||||
@@ -0,0 +1,8 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
namespace: kubeflow
|
||||
|
||||
resources:
|
||||
- istio-authorization-policy.yaml
|
||||
- destination-rule.yaml
|
||||
- virtual-service.yaml
|
||||
@@ -0,0 +1,29 @@
|
||||
apiVersion: networking.istio.io/v1alpha3
|
||||
kind: VirtualService
|
||||
metadata:
|
||||
name: model-registry
|
||||
spec:
|
||||
gateways:
|
||||
- kubeflow-gateway
|
||||
hosts:
|
||||
- '*'
|
||||
http:
|
||||
- match:
|
||||
- uri:
|
||||
prefix: /api/model_registry/
|
||||
route:
|
||||
- destination:
|
||||
host: model-registry-service.kubeflow.svc.cluster.local
|
||||
port:
|
||||
number: 8080
|
||||
- match:
|
||||
- port: 9090
|
||||
- authority:
|
||||
regex: model-registry-service(\..+)?(:9090)?
|
||||
- uri:
|
||||
prefix: /ml_metadata.MetadataStoreService/
|
||||
route:
|
||||
- destination:
|
||||
host: model-registry-service.kubeflow.svc.cluster.local
|
||||
port:
|
||||
number: 9090
|
||||
@@ -0,0 +1,45 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
namespace: kubeflow
|
||||
|
||||
resources:
|
||||
- model-registry-db-pvc.yaml
|
||||
- model-registry-db-deployment.yaml
|
||||
- model-registry-db-service.yaml
|
||||
- ../../base
|
||||
|
||||
patchesStrategicMerge:
|
||||
- patches/model-registry-deployment.yaml
|
||||
|
||||
configMapGenerator:
|
||||
- envs:
|
||||
- params.env
|
||||
name: model-registry-db-parameters
|
||||
secretGenerator:
|
||||
- envs:
|
||||
- secrets.env
|
||||
name: model-registry-db-secrets
|
||||
generatorOptions:
|
||||
disableNameSuffixHash: true
|
||||
|
||||
|
||||
images:
|
||||
- name: mysql
|
||||
newName: mysql
|
||||
newTag: 8.0.3
|
||||
|
||||
vars:
|
||||
- fieldref:
|
||||
fieldPath: metadata.name
|
||||
name: MLMD_DB_HOST
|
||||
objref:
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
name: model-registry-db
|
||||
- name: MYSQL_PORT
|
||||
objref:
|
||||
kind: ConfigMap
|
||||
name: model-registry-db-parameters
|
||||
apiVersion: v1
|
||||
fieldref:
|
||||
fieldpath: data.MYSQL_PORT
|
||||
+52
@@ -0,0 +1,52 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: model-registry-db
|
||||
labels:
|
||||
component: db
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
component: db
|
||||
replicas: 1
|
||||
strategy:
|
||||
type: Recreate
|
||||
template:
|
||||
metadata:
|
||||
name: db
|
||||
labels:
|
||||
component: db
|
||||
annotations:
|
||||
sidecar.istio.io/inject: "false"
|
||||
spec:
|
||||
containers:
|
||||
- name: db-container
|
||||
image: mysql:8.0.3
|
||||
args:
|
||||
- --datadir
|
||||
- /var/lib/mysql/datadir
|
||||
- --default-authentication-plugin=mysql_native_password
|
||||
envFrom:
|
||||
- configMapRef:
|
||||
name: model-registry-db-parameters
|
||||
- secretRef:
|
||||
name: model-registry-db-secrets
|
||||
ports:
|
||||
- name: dbapi
|
||||
containerPort: 3306
|
||||
readinessProbe:
|
||||
exec:
|
||||
command:
|
||||
- "/bin/bash"
|
||||
- "-c"
|
||||
- "mysql -D $$MYSQL_DATABASE -u$$MYSQL_USER_NAME -p$$MYSQL_ROOT_PASSWORD -e 'SELECT 1'"
|
||||
initialDelaySeconds: 5
|
||||
periodSeconds: 2
|
||||
timeoutSeconds: 1
|
||||
volumeMounts:
|
||||
- name: metadata-mysql
|
||||
mountPath: /var/lib/mysql
|
||||
volumes:
|
||||
- name: metadata-mysql
|
||||
persistentVolumeClaim:
|
||||
claimName: metadata-mysql
|
||||
@@ -0,0 +1,10 @@
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: metadata-mysql
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 10Gi
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: model-registry-db
|
||||
labels:
|
||||
component: db
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 3306
|
||||
protocol: TCP
|
||||
name: dbapi
|
||||
selector:
|
||||
component: db
|
||||
@@ -0,0 +1,3 @@
|
||||
MYSQL_DATABASE=metadb
|
||||
MYSQL_PORT=3306
|
||||
MYSQL_ALLOW_EMPTY_PASSWORD=true
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: model-registry-deployment
|
||||
spec:
|
||||
template:
|
||||
metadata:
|
||||
annotations:
|
||||
# db doesn't use istio
|
||||
traffic.sidecar.istio.io/excludeOutboundPorts: $(MYSQL_PORT)
|
||||
spec:
|
||||
containers:
|
||||
- name: rest-container
|
||||
# Remove existing environment variables
|
||||
env:
|
||||
- $patch: replace
|
||||
envFrom:
|
||||
- configMapRef:
|
||||
name: model-registry-configmap
|
||||
args:
|
||||
- --hostname=0.0.0.0
|
||||
- --port=$(MODEL_REGISTRY_REST_SERVICE_PORT)
|
||||
- --mlmd-hostname=localhost
|
||||
- --mlmd-port=$(MODEL_REGISTRY_GRPC_SERVICE_PORT)
|
||||
- name: grpc-container
|
||||
# Remove existing environment variables
|
||||
env:
|
||||
- $patch: replace
|
||||
envFrom:
|
||||
- configMapRef:
|
||||
name: model-registry-db-parameters
|
||||
- secretRef:
|
||||
name: model-registry-db-secrets
|
||||
- configMapRef:
|
||||
name: model-registry-configmap
|
||||
args: ["--grpc_port=$(MODEL_REGISTRY_GRPC_SERVICE_PORT)",
|
||||
"--mysql_config_host=$(MLMD_DB_HOST)",
|
||||
"--mysql_config_database=$(MYSQL_DATABASE)",
|
||||
"--mysql_config_port=$(MYSQL_PORT)",
|
||||
"--mysql_config_user=$(MYSQL_USER_NAME)",
|
||||
"--mysql_config_password=$(MYSQL_ROOT_PASSWORD)"]
|
||||
@@ -0,0 +1,2 @@
|
||||
MYSQL_USER_NAME=root
|
||||
MYSQL_ROOT_PASSWORD=test
|
||||
@@ -0,0 +1,45 @@
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
namespace: kubeflow
|
||||
|
||||
bases:
|
||||
- ../../base
|
||||
resources:
|
||||
- model-registry-db-pvc.yaml
|
||||
- model-registry-db-deployment.yaml
|
||||
- model-registry-db-service.yaml
|
||||
|
||||
patchesStrategicMerge:
|
||||
- patches/model-registry-deployment.yaml
|
||||
|
||||
configMapGenerator:
|
||||
- name: metadata-postgres-db-parameters
|
||||
envs:
|
||||
- params.env
|
||||
secretGenerator:
|
||||
- name: metadata-postgres-db-secrets
|
||||
envs:
|
||||
- secrets.env
|
||||
generatorOptions:
|
||||
disableNameSuffixHash: true
|
||||
|
||||
images:
|
||||
- name: postgres
|
||||
newName: postgres
|
||||
newTag: 14.7-alpine3.17
|
||||
|
||||
vars:
|
||||
- name: MLMD_DB_HOST
|
||||
objref:
|
||||
kind: Service
|
||||
name: metadata-postgres-db
|
||||
apiVersion: v1
|
||||
fieldref:
|
||||
fieldpath: metadata.name
|
||||
- name: POSTGRES_PORT
|
||||
objref:
|
||||
kind: ConfigMap
|
||||
name: model-registry-db-parameters
|
||||
apiVersion: v1
|
||||
fieldref:
|
||||
fieldpath: data.POSTGRES_PORT
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: metadata-postgres-db
|
||||
labels:
|
||||
component: db
|
||||
spec:
|
||||
selector:
|
||||
matchLabels:
|
||||
component: db
|
||||
replicas: 1
|
||||
strategy:
|
||||
type: Recreate
|
||||
template:
|
||||
metadata:
|
||||
name: db
|
||||
labels:
|
||||
component: db
|
||||
annotations:
|
||||
sidecar.istio.io/inject: "false"
|
||||
spec:
|
||||
containers:
|
||||
- name: db-container
|
||||
image: postgres
|
||||
env:
|
||||
- name: PGDATA
|
||||
value: /var/lib/postgresql/data/pgdata
|
||||
envFrom:
|
||||
- configMapRef:
|
||||
name: metadata-postgres-db-parameters
|
||||
- secretRef:
|
||||
name: metadata-postgres-db-secrets
|
||||
ports:
|
||||
- name: postgres
|
||||
containerPort: 5432
|
||||
volumeMounts:
|
||||
- name: metadata-postgres
|
||||
mountPath: /var/lib/postgresql/data
|
||||
volumes:
|
||||
- name: metadata-postgres
|
||||
persistentVolumeClaim:
|
||||
claimName: metadata-postgres
|
||||
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
apiVersion: v1
|
||||
kind: PersistentVolumeClaim
|
||||
metadata:
|
||||
name: metadata-postgres
|
||||
spec:
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
resources:
|
||||
requests:
|
||||
storage: 20Gi
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: metadata-postgres-db
|
||||
labels:
|
||||
component: db
|
||||
spec:
|
||||
type: ClusterIP
|
||||
ports:
|
||||
- port: 5432
|
||||
protocol: TCP
|
||||
name: postgres
|
||||
selector:
|
||||
component: db
|
||||
@@ -0,0 +1,2 @@
|
||||
POSTGRES_PORT=5432
|
||||
POSTGRES_DBNAME=mlmdpostgres
|
||||
+32
@@ -0,0 +1,32 @@
|
||||
apiVersion: apps/v1
|
||||
kind: Deployment
|
||||
metadata:
|
||||
name: model-registry-deployment
|
||||
spec:
|
||||
template:
|
||||
metadata:
|
||||
annotations:
|
||||
# db doesn't use istio
|
||||
traffic.sidecar.istio.io/excludeOutboundPorts: $(POSTGRES_PORT)
|
||||
spec:
|
||||
containers:
|
||||
- name: grpc-container
|
||||
# Remove existing environment variables
|
||||
env:
|
||||
- $patch: replace
|
||||
envFrom:
|
||||
- configMapRef:
|
||||
name: metadata-postgres-db-parameters
|
||||
- secretRef:
|
||||
name: metadata-postgres-db-secrets
|
||||
- configMapRef:
|
||||
name: model-registry-configmap
|
||||
args: ["--grpc_port=$(MODEL_REGISTRY_GRPC_SERVICE_PORT)",
|
||||
"--metadata_source_config_type=postgresql",
|
||||
"--postgres_config_host=$(MLMD_DB_HOST)",
|
||||
"--postgres_config_port=$(POSTGRES_PORT)",
|
||||
"--postgres_config_dbname=$(POSTGRES_DBNAME)",
|
||||
"--postgres_config_user=$(POSTGRES_USER)",
|
||||
"--postgres_config_password=$(POSTGRES_PASSWORD)",
|
||||
# "--postgres_config_skip_db_creation=true",
|
||||
"--enable_database_upgrade=true"]
|
||||
@@ -0,0 +1,2 @@
|
||||
POSTGRES_USER=root
|
||||
POSTGRES_PASSWORD=password
|
||||
Reference in New Issue
Block a user