Computer Vision-container gebruiken met Kubernetes en helmUse Computer Vision container with Kubernetes and Helm

Een optie voor het on-premises beheren van uw Computer Vision-containers is het gebruik van Kubernetes en helm.One option to manage your Computer Vision containers on-premises is to use Kubernetes and Helm. Door Kubernetes en helm te gebruiken om een Computer Vision container installatie kopie te definiëren, maken we een Kubernetes-pakket.Using Kubernetes and Helm to define a Computer Vision container image, we'll create a Kubernetes package. Dit pakket wordt on-premises geïmplementeerd op een Kubernetes-cluster.This package will be deployed to a Kubernetes cluster on-premises. Ten slotte verkennen we hoe u de geïmplementeerde Services kunt testen.Finally, we'll explore how to test the deployed services. Zie Computer Vision containers installeren en uitvoerenvoor meer informatie over het uitvoeren van docker-containers zonder Kubernetes-indeling.For more information about running Docker containers without Kubernetes orchestration, see install and run Computer Vision containers.

VereistenPrerequisites

De volgende vereisten voordat u Computer Vision containers on-premises gebruikt:The following prerequisites before using Computer Vision containers on-premises:

VereistRequired DoelPurpose
Azure-accountAzure Account Als u nog geen abonnement op Azure hebt, maak dan een gratis account aan voordat u begint.If you don't have an Azure subscription, create a free account before you begin.
Kubernetes CLIKubernetes CLI De KUBERNETES cli is vereist voor het beheren van de gedeelde referenties in het container register.The Kubernetes CLI is required for managing the shared credentials from the container registry. Kubernetes is ook vereist voordat helm, de Kubernetes Package Manager.Kubernetes is also needed before Helm, which is the Kubernetes package manager.
Helm CLIHelm CLI Installeer de helm cli, die wordt gebruikt om een helm-grafiek (container Package Definition) te installeren.Install the Helm CLI, which is used to to install a helm chart (container package definition).
Computer Vision resourceComputer Vision resource Als u de container wilt gebruiken, hebt u het volgende nodig:In order to use the container, you must have:

Een Azure Computer Vision -resource en de bijbehorende API-sleutel de EINDPUNT-URI.An Azure Computer Vision resource and the associated API key the endpoint URI. Beide waarden zijn beschikbaar op de pagina overzicht en sleutels voor de resource en zijn vereist om de container te starten.Both values are available on the Overview and Keys pages for the resource and are required to start the container.

{API_KEY}: een van de twee beschik bare bron sleutels op de pagina sleutels{API_KEY}: One of the two available resource keys on the Keys page

{ENDPOINT_URI}: het eind punt op de pagina overzicht{ENDPOINT_URI}: The endpoint as provided on the Overview page

Vereiste para meters verzamelenGathering required parameters

Er zijn drie primaire para meters voor alle vereiste containers van Cognitive Services.There are three primary parameters for all Cognitive Services' containers that are required. De gebruiksrecht overeenkomst (EULA) moet aanwezig zijn met een waarde van accept.The end-user license agreement (EULA) must be present with a value of accept. Daarnaast zijn zowel een eind punt-URL als een API-sleutel nodig.Additionally, both an Endpoint URL and API Key are needed.

Eind punt-URI{ENDPOINT_URI}Endpoint URI {ENDPOINT_URI}

De URI-waarde van het eind punt is beschikbaar op de pagina overzicht van Azure portal van de bijbehorende cognitieve service resource.The Endpoint URI value is available on the Azure portal Overview page of the corresponding Cognitive Service resource. Ga naar de overzichts pagina, beweeg de muis aanwijzer over het Copy to clipboard eind punt en er wordt een pictogram weer gegeven.Navigate to the Overview page, hover over the Endpoint, and a Copy to clipboard icon will appear. Kopieer en gebruik waar nodig.Copy and use where needed.

De URI van het eind punt verzamelen voor later gebruik

Subknooppuntsleutels{API_KEY}Keys {API_KEY}

Deze sleutel wordt gebruikt om de container te starten en is beschikbaar op de pagina sleutels van de Azure Portal van de bijbehorende cognitieve service resource.This key is used to start the container, and is available on the Azure portal's Keys page of the corresponding Cognitive Service resource. Ga naar de pagina sleutels en klik op het Copy to clipboard pictogram.Navigate to the Keys page, and click on the Copy to clipboard icon.

Een van de twee sleutels ophalen voor later gebruik

Belangrijk

Deze abonnements sleutels worden gebruikt om toegang te krijgen tot uw API voor de cognitieve service.These subscription keys are used to access your Cognitive Service API. Deel uw sleutels niet.Do not share your keys. Sla ze veilig op, bijvoorbeeld met behulp van Azure Key Vault.Store them securely, for example, using Azure Key Vault. We raden u ook aan deze sleutels regel matig opnieuw te genereren.We also recommend regenerating these keys regularly. Er is slechts één sleutel nodig om een API-aanroep te maken.Only one key is necessary to make an API call. Wanneer u de eerste sleutel opnieuw genereert, kunt u de tweede sleutel gebruiken voor verdere toegang tot de service.When regenerating the first key, you can use the second key for continued access to the service.

De hostcomputerThe host computer

De host is een op x64 gebaseerde computer waarop de docker-container wordt uitgevoerd.The host is a x64-based computer that runs the Docker container. Dit kan een computer in uw locatie zijn of een docker-hosting service in azure, zoals:It can be a computer on your premises or a Docker hosting service in Azure, such as:

Container vereisten en aanbevelingenContainer requirements and recommendations

Notitie

De vereisten en aanbevelingen zijn gebaseerd op benchmarks met één aanvraag per seconde, met behulp van een afbeelding van 8 MB van een gescande zakelijke brief met 29 regels en een totaal van 803 tekens.The requirements and recommendations are based on benchmarks with a single request per second, using an 8-MB image of a scanned business letter that contains 29 lines and a total of 803 characters.

In de volgende tabel wordt de minimale en aanbevolen toewijzing van resources voor elke Lees container beschreven.The following table describes the minimum and recommended allocation of resources for each Read container.

ContainerContainer MinimumMinimum AanbevolenRecommended TPSTPS
(Mini maal, Maxi maal)(Minimum, Maximum)
LezenRead 1 kernen, 8 GB geheugen, 0,24 TPS1 cores, 8-GB memory, 0.24 TPS 8 kernen, 16 GB geheugen, 1,17 TPS8 cores, 16-GB memory, 1.17 TPS 0,24, 1,170.24, 1.17
  • Elke kern moet ten minste 2,6 gigahertz (GHz) of sneller zijn.Each core must be at least 2.6 gigahertz (GHz) or faster.
  • TPS-trans acties per seconde.TPS - transactions per second.

Core en geheugen komen overeen met --cpus de --memory instellingen en, die worden gebruikt als onderdeel van docker run de opdracht.Core and memory correspond to the --cpus and --memory settings, which are used as part of the docker run command.

Verbinding maken met het Kubernetes-clusterConnect to the Kubernetes cluster

Er wordt naar verwachting een beschik bare Kubernetes-cluster op de hostcomputer.The host computer is expected to have an available Kubernetes cluster. Raadpleeg deze zelf studie over het implementeren van een Kubernetes-cluster voor een conceptuele uitleg over het implementeren van een Kubernetes-cluster op een hostcomputer.See this tutorial on deploying a Kubernetes cluster for a conceptual understanding of how to deploy a Kubernetes cluster to a host computer.

Docker-referenties delen met het Kubernetes-clusterSharing Docker credentials with the Kubernetes cluster

Als u het Kubernetes-cluster docker pull naar de geconfigureerde installatie kopieën in het containerpreview.azurecr.io container register wilt toestaan, moet u de docker-referenties naar het cluster overdragen.To allow the Kubernetes cluster to docker pull the configured image(s) from the containerpreview.azurecr.io container registry, you need to transfer the docker credentials into the cluster. Voer de kubectl create onderstaande opdracht uit om een docker-REGI ster te maken op basis van de referenties die zijn verschaft uit de toegangs vereisten voor container register.Execute the kubectl create command below to create a docker-registry secret based on the credentials provided from the container registry access prerequisite.

Voer de volgende opdracht uit vanaf de opdracht regel interface van Choice.From your command-line interface of choice, run the following command. Zorg ervoor dat u de <username>, <password>en <email-address> vervangt door de container register referenties.Be sure to replace the <username>, <password>, and <email-address> with the container registry credentials.

kubectl create secret docker-registry containerpreview \
    --docker-server=containerpreview.azurecr.io \
    --docker-username=<username> \
    --docker-password=<password> \
    --docker-email=<email-address>

Notitie

Als u al toegang hebt tot het containerpreview.azurecr.io container register, kunt u in plaats daarvan een Kubernetes-geheim maken met behulp van de generieke vlag.If you already have access to the containerpreview.azurecr.io container registry, you could create a Kubernetes secret using the generic flag instead. Bekijk de volgende opdracht die wordt uitgevoerd op basis van de JSON van de docker-configuratie.Consider the following command that executes against your Docker configuration JSON.

 kubectl create secret generic containerpreview \
     --from-file=.dockerconfigjson=~/.docker/config.json \
     --type=kubernetes.io/dockerconfigjson

De volgende uitvoer wordt naar de console afgedrukt wanneer het geheim is gemaakt.The following output is printed to the console when the secret has been successfully created.

secret "containerpreview" created

Als u wilt controleren of het geheim is gemaakt, voert kubectl get u uit secrets met de vlag.To verify that the secret has been created, execute the kubectl get with the secrets flag.

kubectl get secrets

Bij het kubectl get secrets uitvoeren van worden alle geconfigureerde geheimen afgedrukt.Executing the kubectl get secrets prints all the configured secrets.

NAME                  TYPE                                  DATA      AGE
containerpreview      kubernetes.io/dockerconfigjson        1         30s

Helm-grafiek waarden voor implementatie configurerenConfigure Helm chart values for deployment

Maak eerst een map met de naam Readen plak de volgende YAML-inhoud in een nieuw bestand met de naam Chart. yml.Start by creating a folder named read, then paste the following YAML content into a new file named Chart.yml.

apiVersion: v1
name: read
version: 1.0.0
description: A Helm chart to deploy the microsoft/cognitive-services-read to a Kubernetes cluster

Als u de standaard waarden van de helm-grafiek wilt configureren, kopieert en plakt u de values.yamlvolgende yaml in een bestand met de naam.To configure the Helm chart default values, copy and paste the following YAML into a file named values.yaml. Vervang de # {ENDPOINT_URI} opmerkingen # {API_KEY} en door uw eigen waarden.Replace the # {ENDPOINT_URI} and # {API_KEY} comments with your own values.

# These settings are deployment specific and users can provide customizations

read:
  enabled: true
  image:
    name: cognitive-services-read
    registry: containerpreview.azurecr.io/
    repository: microsoft/cognitive-services-read
    tag: latest
    pullSecret: containerpreview # Or an existing secret
    args:
      eula: accept
      billing: # {ENDPOINT_URI}
      apikey: # {API_KEY}

Belangrijk

Als de billing waarden apikey en niet worden weer gegeven, verlopen de Services na 15 minuten.If the billing and apikey values are not provided, the services will expire after 15 min. De verificatie mislukt ook omdat de services niet beschikbaar zijn.Likewise, verification will fail as the services will not be available.

Maak een map sjablonen onder de map lezen .Create a templates folder under the read directory. Kopieer en plak de volgende YAML in een bestand met deployment.yamlde naam.Copy and paste the following YAML into a file named deployment.yaml. Het deployment.yaml bestand moet worden gebruikt als een helm-sjabloon.The deployment.yaml file will serve as a Helm template.

Sjablonen genereren manifest bestanden. Dit zijn YAML bron beschrijvingen die Kubernetes kunnen begrijpen.Templates generate manifest files, which are YAML-formatted resource descriptions that Kubernetes can understand. -Hand leiding voor helm-grafiek sjablonen- Helm Chart Template Guide

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: read
spec:
  template:
    metadata:
      labels:
        app: read-app
    spec:
      containers:
      - name: {{.Values.read.image.name}}
        image: {{.Values.read.image.registry}}{{.Values.read.image.repository}}
        ports:
        - containerPort: 5000
        env:
        - name: EULA
          value: {{.Values.read.image.args.eula}}
        - name: billing
          value: {{.Values.read.image.args.billing}}
        - name: apikey
          value: {{.Values.read.image.args.apikey}}
      imagePullSecrets:
      - name: {{.Values.read.image.pullSecret}}

--- 
apiVersion: v1
kind: Service
metadata:
  name: read
spec:
  type: LoadBalancer
  ports:
  - port: 5000
  selector:
    app: read-app

De sjabloon specificeert een load balancer service en de implementatie van de container/installatie kopie voor lezen.The template specifies a load balancer service and the deployment of your container/image for Read.

Het Kubernetes-pakket (helm-grafiek)The Kubernetes package (Helm chart)

Het helm-diagram bevat de configuratie van de docker-installatie kopie (n) die containerpreview.azurecr.io moet worden opgehaald uit het container register.The Helm chart contains the configuration of which docker image(s) to pull from the containerpreview.azurecr.io container registry.

Een helm-grafiek is een verzameling bestanden waarin een gerelateerde set Kubernetes-resources wordt beschreven.A Helm chart is a collection of files that describe a related set of Kubernetes resources. Eén grafiek kan worden gebruikt om een eenvoudig te implementeren, zoals een memcached Pod, of iets complex, zoals een volledige web-app-stack met HTTP-servers, data bases, caches, enzovoort.A single chart might be used to deploy something simple, like a memcached pod, or something complex, like a full web app stack with HTTP servers, databases, caches, and so on.

De meegeleverde helm-grafieken halen de docker-installatie kopieën van de computer vision-service en de bijbehorende containerpreview.azurecr.io service uit het container register.The provided Helm charts pull the docker images of the Computer Vision Service, and the corresponding service from the containerpreview.azurecr.io container registry.

De helm-grafiek op het Kubernetes-cluster installerenInstall the Helm chart on the Kubernetes cluster

Als u de helm-grafiekwilt installeren, moet u de helm install opdracht uitvoeren.To install the helm chart, we'll need to execute the helm install command. Zorg ervoor dat u de installatie opdracht uitvoert vanuit de map read die zich boven de map bevindt.Ensure to execute the install command from the directory above the read folder.

helm install read ./read

Hier volgt een voorbeeld uitvoer die u kunt verwachten van een geslaagde installatie-uitvoering:Here is an example output you might expect to see from a successful install execution:

NAME: read
LAST DEPLOYED: Thu Sep 04 13:24:06 2019
NAMESPACE: default
STATUS: DEPLOYED

RESOURCES:
==> v1/Pod(related)
NAME                    READY  STATUS             RESTARTS  AGE
read-57cb76bcf7-45sdh   0/1    ContainerCreating  0         0s

==> v1/Service
NAME     TYPE          CLUSTER-IP    EXTERNAL-IP  PORT(S)         AGE
read     LoadBalancer  10.110.44.86  localhost    5000:31301/TCP  0s

==> v1beta1/Deployment
NAME    READY  UP-TO-DATE  AVAILABLE  AGE
read    0/1    1           0          0s

Het volt ooien van de implementatie van Kubernetes kan enkele minuten duren.The Kubernetes deployment can take over several minutes to complete. Voer de volgende opdracht uit om te controleren of zowel de peulen als de services goed zijn geïmplementeerd en beschikbaar zijn:To confirm that both pods and services are properly deployed and available, execute the following command:

kubectl get all

U ziet dat er iets lijkt op de volgende uitvoer:You should expect to see something similar to the following output:

kubectl get all
NAME                        READY   STATUS    RESTARTS   AGE
pod/read-57cb76bcf7-45sdh   1/1     Running   0          17s

NAME                   TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
service/kubernetes     ClusterIP      10.96.0.1      <none>        443/TCP          45h
service/read           LoadBalancer   10.110.44.86   localhost     5000:31301/TCP   17s

NAME                   READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/read   1/1     1            1           17s

NAME                              DESIRED   CURRENT   READY   AGE
replicaset.apps/read-57cb76bcf7   1         1         1       17s

Controleren of een container wordt uitgevoerdValidate that a container is running

Er zijn verschillende manieren om te controleren of de container wordt uitgevoerd.There are several ways to validate that the container is running. Zoek het externe IP- adres en de weer gegeven poort van de betreffende container en open uw favoriete webbrowser.Locate the External IP address and exposed port of the container in question, and open your favorite web browser. Gebruik de onderstaande aanvraag-Url's om te controleren of de container wordt uitgevoerd.Use the various request URLs below to validate the container is running. De onderstaande voorbeeld aanvraag-Url's zijn http://localhost:5000, maar uw specifieke container kan variëren.The example request URLs listed below are http://localhost:5000, but your specific container may vary. Houd er rekening mee dat u afhankelijk bent van het externe IP- adres van uw container en de weer gegeven poort.Keep in mind that you're to rely on your container's External IP address and exposed port.

Aanvraag-URLRequest URL DoelPurpose
http://localhost:5000/ De container bevat een start pagina.The container provides a home page.
http://localhost:5000/status Er wordt met een HTTP GET-aanvraag gecontroleerd of de container wordt uitgevoerd zonder dat dit een eindpunt query veroorzaakt.Requested with an HTTP GET, to validate that the container is running without causing an endpoint query. Deze aanvraag kan worden gebruikt voor Kubernetes- en gereedheids tests.This request can be used for Kubernetes liveness and readiness probes.
http://localhost:5000/swagger De container bevat een volledige documentatie voor de eind punten en een try- out -functie.The container provides a full set of documentation for the endpoints and a Try it out feature. Met deze functie kunt u uw instellingen invoeren in een HTML-formulier op het web en de query maken zonder dat u code hoeft te schrijven.With this feature, you can enter your settings into a web-based HTML form and make the query without having to write any code. Nadat de query is geretourneerd, wordt een voor beeld van een krul opdracht weer gegeven om te demonstreren welke HTTP-headers en hoofdtekst indeling vereist zijn.After the query returns, an example CURL command is provided to demonstrate the HTTP headers and body format that's required.

Start pagina van container

Volgende stappenNext steps

Meer informatie over het installeren van toepassingen met helm in azure Kubernetes service (AKS) vindt u hier.For more details on installing applications with Helm in Azure Kubernetes Service (AKS), visit here.