Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/pull_request_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
- [ ] Automated tests are provided as part of the PR for major new functionalities; testing instructions have been added in the PR body (for PRs involving changes that are not immediately obvious).
- [ ] The developer has manually tested the changes and verified that the changes work.
- [ ] Code changes follow the [kubeflow contribution guidelines](https://www.kubeflow.org/docs/about/contributing/).
- [ ] **For first time contributors**: Please reach out to the [Reviewers](https://github.com/kubeflow/model-registry/blob/main/OWNERS) to ensure all tests are being run, ensuring the label `ok-to-test` has been added to the PR.
- [ ] **For first time contributors**: Please reach out to the [Reviewers](https://github.com/kubeflow/hub/blob/main/OWNERS) to ensure all tests are being run, ensuring the label `ok-to-test` has been added to the PR.

If you have UI changes

Expand Down
18 changes: 9 additions & 9 deletions .github/workflows/first-time-contributor-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: Welcome first-time contributors (Beta2)

on:
pull_request:
types:
types:
- opened
- synchronize
- reopened
Expand Down Expand Up @@ -33,16 +33,16 @@ jobs:
python3 << 'EOF'
import yaml
import os

with open('OWNERS', 'r') as f:
data = yaml.safe_load(f)

approvers = data.get('approvers', [])
result = ' '.join([f'@{approver}' for approver in approvers])

with open(os.environ['GITHUB_OUTPUT'], 'a') as f:
f.write(f'approvers={result}\n')

print(f'Extracted approvers: {result}')
EOF
- name: Log approvers
Expand All @@ -55,11 +55,11 @@ jobs:
continue-on-error: true
with:
issue_message: |
🎉 **Welcome to the Kubeflow Model Registry!** 🎉
🎉 **Welcome to the Kubeflow Hub!** 🎉
Thanks for opening your first issue! We're happy to have you as part of our community 🚀

**Here's what happens next:**
- If you'd like to contribute to this issue, check out our [Contributing Guide](https://github.com/kubeflow/model-registry/blob/main/CONTRIBUTING.md) for repo-specific guidelines and the [Kubeflow Contributor Guide](https://www.kubeflow.org/docs/about/contributing/) for general community standards
- If you'd like to contribute to this issue, check out our [Contributing Guide](https://github.com/kubeflow/hub/blob/main/CONTRIBUTING.md) for repo-specific guidelines and the [Kubeflow Contributor Guide](https://www.kubeflow.org/docs/about/contributing/) for general community standards
- Our team will review your issue soon!

**Join the community:**
Expand All @@ -69,11 +69,11 @@ jobs:
Feel free to ask questions in the comments if you need any help or clarification!
Thanks again for contributing to Kubeflow! 🙏
pr_message: |
🎉 **Welcome to the Kubeflow Model Registry!** 🎉
🎉 **Welcome to the Kubeflow Hub!** 🎉
Thanks for opening your first PR! We're happy to have you as part of our community 🚀

**Here's what happens next:**
- If you haven't already, please check out our [Contributing Guide](https://github.com/kubeflow/model-registry/blob/main/CONTRIBUTING.md) for repo-specific guidelines and the [Kubeflow Contributor Guide](https://www.kubeflow.org/docs/about/contributing/) for general community standards
- If you haven't already, please check out our [Contributing Guide](https://github.com/kubeflow/hub/blob/main/CONTRIBUTING.md) for repo-specific guidelines and the [Kubeflow Contributor Guide](https://www.kubeflow.org/docs/about/contributing/) for general community standards
- Our team will review your PR soon!

**Join the community:**
Expand Down
4 changes: 2 additions & 2 deletions ADOPTERS.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Adopters of Kubeflow Model Registry
# Adopters of Kubeflow Hub

Below are the adopters of the Model Registry project. If you are using Model Registry in your organization, please add your name to the list by submitting a pull request: this will help foster the Kubeflow community. Kindly ensure the list remains in alphabetical order.
Below are the adopters of Kubeflow Hub (formerly known as Model Registry). If you are using this project in your organization, please add your name to the list by submitting a pull request: this will help foster the Kubeflow community. Kindly ensure the list remains in alphabetical order.
If you are using other Kubeflow components, consider adding your name as well to the overall [Kubeflow Community Adopters file](https://github.com/kubeflow/community/blob/master/ADOPTERS.md).

| Organization | Contact (GitHub User Name) | Environment | Description of Use |
Expand Down
4 changes: 2 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# AGENTS.md — Model Registry
# AGENTS.md — Kubeflow Hub

## Who This Is For

Expand Down Expand Up @@ -312,7 +312,7 @@ The following directories contain auto-generated code. Modify the sources and re
- Do not push secrets, credentials, or modify git config
- Run `go mod tidy` if you changed dependencies
- Keep commit messages brief
- Follow the Conventional Commit specification (e.g. `feat(catalog): <description>`, `fix: some bug`)
- Follow the Conventional Commit specification (e.g. `feat(catalog): <description>`, `fix: some bug`)

## Core Development Principles

Expand Down
24 changes: 12 additions & 12 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Kubeflow Contributor Guide

Welcome to the Kubeflow Model Registry project! We'd love to accept your patches and
contributions to this project. Please read the
Welcome to the Kubeflow Hub project! We'd love to accept your patches and
contributions to this project. Please read the
[contributor's guide in our docs](https://www.kubeflow.org/docs/about/contributing/).

The contributor's guide:
Expand All @@ -10,27 +10,27 @@ The contributor's guide:
* like explained in [this guide](https://wiki.linuxfoundation.org/dco), or [this example](https://github.com/kubeflow/community/tree/master/dco-signoff-hook#signing-off-commits)
* references the [Code of Conduct](https://www.kubeflow.org/docs/about/contributing/#follow-the-code-of-conduct)
* helps you get started with your first contribution to Kubeflow
* like how to identify [good-first-issue](https://github.com/kubeflow/model-registry/labels/good%20first%20issue) tickets
* like how to identify [good-first-issue](https://github.com/kubeflow/hub/labels/good%20first%20issue) tickets
* and [describes](https://www.kubeflow.org/docs/about/contributing/#owners-files-and-pr-workflow) the pull request and review workflow in detail, including the
OWNERS files and automated workflow tool

The [Kubeflow Community calendar](https://www.kubeflow.org/docs/about/community/#kubeflow-community-calendar) provides an overview of the community calls and specifically the bi-weekly Kubeflow Model Registry meeting.

<hr/>

The remainder of this document focuses on technical aspects while contributing to the Model Registry project specifically.
The remainder of this document focuses on technical aspects while contributing to the Hub project specifically.

The [Model Registry documentation](https://github.com/kubeflow/model-registry?tab=readme-ov-file#documentation-links) provides details about: what is a Model Registry, how to Install, logical model Concepts, how the MR python client works, Tutorials, FAQs and most importantly the [Technical References](https://github.com/kubeflow/model-registry?tab=readme-ov-file#documentation-links:~:text=FAQs-,Development,-introduction%20to%20local)!
The [Kubeflow Hub documentation](https://github.com/kubeflow/hub?tab=readme-ov-file#documentation-links) provides details about: what is a Model Registry, how to Install, logical model Concepts, how the MR python client works, Tutorials, FAQs and most importantly the [Technical References](https://github.com/kubeflow/hub?tab=readme-ov-file#documentation-links:~:text=FAQs-,Development,-introduction%20to%20local)!

# Contributing to Model Registry using Apple-silicon/ARM-based computers
# Contributing to Hub using Apple-silicon/ARM-based computers

Some limitations apply when developing on this project, specifically using Apple-silicon and Mac OSX.
The content from this guide might also be applicable in part for general ARM-based developers/users, beyond Mac OSX.

## Consider installing coreutils

While we strived to keep the repository scripts cross-compatible with GNU and BSD utilities, you might want to consider installing the `coreutils` from Homebrew, [following these instructions](https://formulae.brew.sh/formula/coreutils).
You will need to ensure the gnubin directory is added to your shell path.
You will need to ensure the gnubin directory is added to your shell path.

## Makefile

Expand Down Expand Up @@ -72,9 +72,9 @@ to your PATH from your bashrc like:

and now you can substitute `gmake` every time the make command is mentioned in guides (or perform the path management per the caveat).

## Local kubernetes deployment of Model Registry
## Local kubernetes deployment of Hub

To test the Model Registry locally without mocking the k8s calls, the Model Registry backend can be deployed using Kind.
To test the Hub locally without mocking the k8s calls, the backend can be deployed using Kind.

### Prerequisites

Expand All @@ -94,11 +94,11 @@ Create a Kind cluster with the following command:
kind create cluster
```

and then follow the steps from the [Installation guide](https://www.kubeflow.org/docs/components/model-registry/installation/#standalone-installation) on the Kubeflow website, to set up the port-forwarding and deploy the Model Registry on the cluster.
and then follow the steps from the [Installation guide](https://www.kubeflow.org/docs/components/model-registry/installation/#standalone-installation) on the Kubeflow website, to set up the port-forwarding and deploy Hub on the cluster.

### Ingress guide

Follow the [Ingress guide](docs/mr_kind_deploy_ingress.md) to set up the Ingress controller and deploy the Model Registry on the cluster.
Follow the [Ingress guide](docs/mr_kind_deploy_ingress.md) to set up the Ingress controller and deploy Hub on the cluster.

## Docker engine

Expand Down Expand Up @@ -280,5 +280,5 @@ Solution:
- Use `export TESTCONTAINERS_RYUK_DISABLED=true` to disable Ryuk entirely; the tests are configured to close all container resources, but we do not recommend this option

For more information:
- section [Docker engine](https://github.com/kubeflow/model-registry/blob/main/CONTRIBUTING.md#docker-engine) in this document
- section [Docker engine](https://github.com/kubeflow/hub/blob/main/CONTRIBUTING.md#docker-engine) in this document
- https://pypi.org/project/testcontainers/#:~:text=the%20database%20version.-,Configuration,-Env%20Variable
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ endif
.PHONY: vet
vet:
@echo "Running go vet on all packages..."
@${GO} vet $$(${GO} list ./... | grep -vF github.com/kubeflow/model-registry/internal/db/filter) && \
@${GO} vet $$(${GO} list ./... | grep -vF github.com/kubeflow/hub/internal/db/filter) && \
echo "Checking filter package (parser.go excluded due to participle struct tags)..." && \
cd internal/db/filter && ${GO} build -o /dev/null . 2>&1 | grep -E "vet:|error:" || echo "✓ Filter package builds successfully"

Expand Down Expand Up @@ -308,7 +308,7 @@ image/build:
${DOCKER} build ${BUILD_PATH} -f ${DOCKERFILE} -t ${IMG}:$(IMG_VERSION) $(ARGS)

# build docker image using buildx
# PLATFORMS defines the target platforms for the model registry image be built to provide support to multiple
# PLATFORMS defines the target platforms for the image be built to provide support to multiple
# architectures. (i.e. make docker-buildx). To use this option you need to:
# - be able to use docker buildx. More info: https://docs.docker.com/build/buildx/
# - have enabled BuildKit. More info: https://docs.docker.com/develop/develop-images/build_enhancements/
Expand Down
36 changes: 18 additions & 18 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
# Model Registry
# Kubeflow Hub

![build checks status](https://github.com/kubeflow/model-registry/actions/workflows/build.yml/badge.svg?branch=main)
[![codecov](https://codecov.io/github/kubeflow/model-registry/graph/badge.svg?token=61URLQA3VS)](https://codecov.io/github/kubeflow/model-registry)
![build checks status](https://github.com/kubeflow/hub/actions/workflows/build.yml/badge.svg?branch=main)
[![codecov](https://codecov.io/github/kubeflow/hub/graph/badge.svg?token=61URLQA3VS)](https://codecov.io/github/kubeflow/hub)
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fkubeflow%2Fmodel-registry.svg?type=shield&issueType=license)](https://app.fossa.com/projects/git%2Bgithub.com%2Fkubeflow%2Fmodel-registry?ref=badge_shield&issueType=license)
[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/9937/badge)](https://www.bestpractices.dev/projects/9937)
[![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/kubeflow/model-registry/badge)](https://scorecard.dev/viewer/?uri=github.com/kubeflow/model-registry)
[![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/kubeflow/hub/badge)](https://scorecard.dev/viewer/?uri=github.com/kubeflow/hub)

Model registry provides a central repository for model developers to store and manage models, versions, and artifacts metadata.
Kubeflow Hub (formerly known as Model Registry) provides a central repository for model developers to store and manage models, versions, and artifacts metadata.

## Red Hat's Pledge
- Red Hat drives the project's development through Open Source principles, ensuring transparency, sustainability, and community ownership.
- Red Hat values the Kubeflow community and commits to providing a minimum of 12 months' notice before ending project maintenance after the initial release.

> **Alpha**
>
> This Kubeflow component has alpha status with limited support. See the [Kubeflow versioning policies](https://www.kubeflow.org/docs/started/support/#application-status). The Kubeflow team is interested in your [feedback](https://github.com/kubeflow/model-registry) about the usability of the feature.
> This Kubeflow component has alpha status with limited support. See the [Kubeflow versioning policies](https://www.kubeflow.org/docs/started/support/#application-status). The Kubeflow team is interested in your [feedback](https://github.com/kubeflow/hub) about the usability of the feature.

## Documentation links:

Expand All @@ -39,10 +39,10 @@ Model registry provides a central repository for model developers to store and m
- [contributing](./CONTRIBUTING.md)
- [Kubeflow community and the Model Registry working group](https://www.kubeflow.org/docs/about/community/)
- REST API
- [OpenAPI definition](https://editor.swagger.io/?url=https://raw.githubusercontent.com/kubeflow/model-registry/main/api/openapi/model-registry.yaml)
- [playground](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/kubeflow/model-registry/main/api/openapi/model-registry.yaml)
- [license scanning](https://github.com/kubeflow/model-registry/issues/323)
- [monitoring image quality](https://github.com/kubeflow/model-registry/issues/327)
- [OpenAPI definition](https://editor.swagger.io/?url=https://raw.githubusercontent.com/kubeflow/hub/main/api/openapi/model-registry.yaml)
- [playground](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/kubeflow/hub/main/api/openapi/model-registry.yaml)
- [license scanning](https://github.com/kubeflow/hub/issues/323)
- [monitoring image quality](https://github.com/kubeflow/hub/issues/327)
8. [UI](clients/ui/README.md)

## Pre-requisites:
Expand All @@ -54,7 +54,7 @@ Model registry provides a central repository for model developers to store and m

## OpenAPI Proxy Server

The model registry proxy server implementation follows a contract-first approach, where the contract is identified by [model-registry.yaml](api/openapi/model-registry.yaml) OpenAPI specification.
The Hub backend server follows a contract-first approach, where the contract is identified by [model-registry.yaml](api/openapi/model-registry.yaml) OpenAPI specification.

You can also easily display the latest OpenAPI contract for model-registry in a Swagger-like editor directly from the documentation site, [here](https://www.kubeflow.org/docs/components/model-registry/reference/rest-api/#swagger-ui).
### Starting the OpenAPI Proxy Server
Expand All @@ -63,7 +63,7 @@ Run the following command to start the OpenAPI proxy server from source:
```shell
make run/proxy
```
The proxy service implements the OpenAPI defined in [model-registry.yaml](api/openapi/model-registry.yaml) to create a Model Registry specific REST API.
The backend service implements the OpenAPI defined in [model-registry.yaml](api/openapi/model-registry.yaml) to create a Model Registry specific REST API.

### Model registry logical model

Expand Down Expand Up @@ -152,14 +152,14 @@ Where, `<uid>`, `<gid>`, and `<host-path>` are the same as in the migrate comman
And `<hostname>` and `<port>` are the local ip and port to use to expose the container's default `8080` listening port.
The server listens on `localhost` by default, hence the `-n 0.0.0.0` option allows the server port to be exposed.

#### Running model registry
#### Running Kubeflow Hub

> **NOTE:** Docker Compose or Podman Compose must be installed in your environment.

There are two `docker-compose` files that make the startup easier:

- `docker-compose.yaml` - Uses pre-built images from registry
- `docker-compose-local.yaml` - Builds model registry from source
- `docker-compose-local.yaml` - Builds Hub from source

Both files support MySQL and PostgreSQL databases using profiles.

Expand All @@ -171,7 +171,7 @@ The easiest way to run the services is using the provided Makefile targets:
# Start with MySQL (using pre-built images)
make compose/up

# Start with PostgreSQL (using pre-built images)
# Start with PostgreSQL (using pre-built images)
make compose/up/postgres

# Start with MySQL (builds from source)
Expand All @@ -195,7 +195,7 @@ Alternatively, you can run the compose files directly:
# Using pre-built images with MySQL
docker-compose --profile mysql up

# Using pre-built images with PostgreSQL
# Using pre-built images with PostgreSQL
DB_TYPE=postgres docker-compose --profile postgres up

# Building from source with PostgreSQL
Expand All @@ -206,7 +206,7 @@ The Makefile automatically detects whether to use `docker-compose`, `podman-comp

### Testing architecture

The following diagram illustrates testing strategy for the several components in Model Registry project:
The following diagram illustrates testing strategy for the several components in the Hub project:

![](/docs/Model%20Registry%20Testing%20areas.drawio.png)

Expand Down Expand Up @@ -259,7 +259,7 @@ If you cannot access the CNCF Service Desk, ask one of your fellow Approvers for
## Tips
### Pull image rate limiting

Occasionally you may encounter an 'ImagePullBackOff' error when deploying the Model Registry manifests. See example below for the `model-registry-db` container.
Occasionally you may encounter an 'ImagePullBackOff' error when deploying the Hub project's manifests. See example below for the `model-registry-db` container.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe still "model registry" or Kubeflow Hub

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe this one is fine as you put it

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are the project's manifests which include more than model registry.


```
Failed to pull image “mysql:8.3.0”: rpc error: code = Unknown desc = fetching target platform image selected from image index: reading manifest sha256:f9097d95a4ba5451fff79f4110ea6d750ac17ca08840f1190a73320b84ca4c62 in docker.io/library/mysql: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit
Expand Down
Loading
Loading