Files
toallab-automation/roles/rhoai_maas/tasks/models.yml

166 lines
5.5 KiB
YAML

---
# ------------------------------------------------------------------
# ExternalProvider + ExternalModel + MaaSModelRef per model
# ------------------------------------------------------------------
- name: Allow model namespaces to attach to the Gateway
kubernetes.core.k8s:
state: patched
api_version: v1
kind: Namespace
name: "{{ item }}"
definition:
metadata:
labels:
maas.opendatahub.io/gateway-access: "true"
opendatahub.io/dashboard: "true"
loop: "{{ rhoai_maas_external_models | map(attribute='namespace') | unique }}"
- name: Mark provider API key secrets as MaaS-managed
kubernetes.core.k8s:
state: patched
api_version: v1
kind: Secret
namespace: "{{ item.namespace }}"
name: "{{ item.api_key_secret }}"
definition:
metadata:
labels:
inference.llm-d.ai/ipp-managed: "true"
loop: "{{ rhoai_maas_external_models }}"
loop_control:
label: "{{ item.namespace }}/{{ item.api_key_secret }}"
- name: Create ExternalProviders
kubernetes.core.k8s:
state: present
definition:
apiVersion: inference.opendatahub.io/v1alpha1
kind: ExternalProvider
metadata:
name: "{{ item.provider_name }}"
namespace: "{{ item.namespace }}"
spec:
provider: "{{ item.provider_type }}"
endpoint: "{{ item.endpoint }}"
auth:
type: apikey
secretRef:
name: "{{ item.api_key_secret }}"
loop: "{{ rhoai_maas_external_models }}"
loop_control:
label: "{{ item.namespace }}/{{ item.provider_name }}"
- name: Wait for ExternalProviders to be ready
kubernetes.core.k8s_info:
api_version: inference.opendatahub.io/v1alpha1
kind: ExternalProvider
namespace: "{{ item.namespace }}"
name: "{{ item.provider_name }}"
register: __rhoai_maas_provider
until: (__rhoai_maas_provider.resources[0].status.phase | default('')) == 'Ready'
retries: 30
delay: 10
loop: "{{ rhoai_maas_external_models }}"
loop_control:
label: "{{ item.namespace }}/{{ item.provider_name }}"
- name: Create ExternalModels
kubernetes.core.k8s:
state: present
definition:
apiVersion: inference.opendatahub.io/v1alpha1
kind: ExternalModel
metadata:
name: "{{ item.name }}"
namespace: "{{ item.namespace }}"
annotations:
maas.opendatahub.io/tls: "{{ item.tls | default(true) | string | lower }}"
maas.opendatahub.io/port: "{{ item.port | default(443) | string }}"
spec:
externalProviderRefs:
- ref:
name: "{{ item.provider_name }}"
targetModel: "{{ item.target_model }}"
apiFormat: "{{ item.api_format | default('openai-chat') }}"
path: "{{ item.path | default('/v1/chat/completions') }}"
weight: 100
loop: "{{ rhoai_maas_external_models }}"
loop_control:
label: "{{ item.namespace }}/{{ item.name }}"
- name: Publish models to MaaS
kubernetes.core.k8s:
state: present
definition:
apiVersion: maas.opendatahub.io/v1alpha1
kind: MaaSModelRef
metadata:
name: "{{ item.name }}"
namespace: "{{ item.namespace }}"
annotations:
openshift.io/display-name: "{{ item.display_name | default(item.name) }}"
openshift.io/description: "{{ item.description | default('') }}"
spec:
modelRef:
kind: ExternalModel
name: "{{ item.name }}"
loop: "{{ rhoai_maas_external_models }}"
loop_control:
label: "{{ item.namespace }}/{{ item.name }}"
# ------------------------------------------------------------------
# Access policies and quota (models-as-a-service namespace)
# ------------------------------------------------------------------
- name: Wait for the models-as-a-service namespace
kubernetes.core.k8s_info:
api_version: v1
kind: Namespace
name: "{{ __rhoai_maas_namespace }}"
register: __rhoai_maas_ns
until: __rhoai_maas_ns.resources | length > 0
retries: "{{ __rhoai_maas_wait_retries }}"
delay: 10
- name: Create MaaSAuthPolicies
kubernetes.core.k8s:
state: present
definition:
apiVersion: maas.opendatahub.io/v1alpha1
kind: MaaSAuthPolicy
metadata:
name: "{{ item.name }}"
namespace: "{{ __rhoai_maas_namespace }}"
annotations:
openshift.io/display-name: "{{ item.display_name | default(item.name) }}"
openshift.io/description: "{{ item.description | default('') }}"
spec:
modelRefs: "{{ item.model_refs }}"
subjects:
groups: "{{ item.groups | default([]) | map('community.general.dict_kv', 'name') | list }}"
users: "{{ item.users | default([]) }}"
loop: "{{ rhoai_maas_auth_policies }}"
loop_control:
label: "{{ item.name }}"
- name: Create MaaSSubscriptions
kubernetes.core.k8s:
state: present
definition:
apiVersion: maas.opendatahub.io/v1alpha1
kind: MaaSSubscription
metadata:
name: "{{ item.name }}"
namespace: "{{ __rhoai_maas_namespace }}"
annotations:
openshift.io/display-name: "{{ item.display_name | default(item.name) }}"
openshift.io/description: "{{ item.description | default('') }}"
spec:
owner:
groups: "{{ item.groups | default([]) | map('community.general.dict_kv', 'name') | list }}"
users: "{{ item.users | default([]) }}"
modelRefs: "{{ item.model_refs }}"
priority: "{{ item.priority | default(10) | int }}"
loop: "{{ rhoai_maas_subscriptions }}"
loop_control:
label: "{{ item.name }}"