Как отредактировать / исправить развертывание Kubernetes, чтобы добавить метку с помощью Python

Я новичок в kubernetes - я разработал веб-интерфейс /API, который автоматизирует развертывание модели с помощью служб машинного обучения Azure в службы Azure Kubernetes (AKS). В качестве меры защиты я привязываю к настройке управляемой идентификации для развернутых модулей в AKS с помощью этой документации. Один из шагов - отредактировать развертывание, чтобы добавить метку функции идентификации в/spec/template/metadata/labels для развертывания (см. параграф, начинающийся как Edit the deployment to add ...в этом разделе).

Я хочу автоматизировать этот шаг с помощью клиента python kubernetes (https://github.com/kubernetes-client/python). Просматривая доступный API, мне было интересно, что, возможно,patch_namespaced_deployment позволит мне отредактировать развертывание и добавить метку на /spec/template/metadata/labels. Я искал пример кода с использованием клиента python для того же - любая помощь в достижении вышеуказанного будет оценена.

1 ответ

Решение

Взгляните на этот пример:

https://github.com/kubernetes-client/python/blob/master/examples/deployment_crud.py

def update_deployment(api_instance, deployment):
    # Update container image
    deployment.spec.template.spec.containers[0].image = "nginx:1.16.0"
    # Update the deployment
    api_response = api_instance.patch_namespaced_deployment(
        name=DEPLOYMENT_NAME,
        namespace="default",
        body=deployment)
    print("Deployment updated. status='%s'" % str(api_response.status))

Ярлыки находятся на объекте развертывания из API приложения v1,

kind: Deployment
metadata:
  name: deployment-example
spec:
  replicas: 3
  revisionHistoryLimit: 10
  template:
    metadata:
      labels:
        app: nginx

это означает, что вам необходимо обновить следующее:

deployment.spec.template.metadata.labels.app = "nginx"