Esercitazione: Preparare un'applicazione per il servizio Azure Kubernetes

Si applica a: Servizio Azure Kubernetes in Azure Stack HCI 22H2, servizio Azure Kubernetes in Windows Server

In questa esercitazione, una parte di sette, un'applicazione multi-contenitore è preparata per l'uso in un cluster Kubernetes quando si usa servizio Azure Kubernetes abilitata da Azure Arc. Gli strumenti di sviluppo esistenti, ad esempio Docker Compose, vengono usati per compilare e testare un'applicazione in locale.

Si apprenderà come:

  • Clonare l'origine di un'applicazione di esempio da GitHub
  • Creare un'immagine del contenitore dall'origine dell'applicazione di esempio
  • Testare l'applicazione multicontenitore in un ambiente Docker locale

Al termine, l'applicazione seguente viene eseguita nell'ambiente di sviluppo locale:

Screenshot che mostra l'immagine del contenitore che l'app di voto di Azure in esecuzione in locale viene aperta in un Web browser locale.

Nelle esercitazioni successive l'immagine del contenitore viene caricata in un Registro Azure Container e quindi distribuita in un cluster Kubernetes.

Prima di iniziare

Questa esercitazione presuppone una conoscenza di base dei concetti principali di Docker, ad esempio contenitori, immagini del contenitore e comandi docker. Per una panoramica sulle nozioni di base dei contenitori, vedere l'introduzione a Docker.

Per completare questa esercitazione, è necessario un ambiente di sviluppo Docker locale in cui sono in esecuzione i contenitori Linux. Docker fornisce pacchetti che configurano Docker in Windows.

Nota

Il servizio Azure Kubernetes non include i componenti Docker necessari per completare ogni passaggio di queste esercitazioni. È pertanto consigliabile usare un ambiente di sviluppo completo di Docker.

Ottenere il codice dell'applicazione

L'applicazione di esempio usata in questa esercitazione è un'app di voto di base costituita da un componente Web front-end e da un'istanza redis back-end. Viene creato un pacchetto del componente Web in un'immagine del contenitore personalizzata. L'istanza di Redis usa un'immagine non modificata dell'hub Docker.

Usare GitHub per clonare l'applicazione di esempio nell'ambiente di sviluppo:

git clone https://github.com/Azure-Samples/azure-voting-app-redis.git

Modificare la directory clonata:

cd azure-voting-app-redis

All'interno della directory sono disponibili il codice sorgente dell'applicazione, un file Docker Compose creato in precedenza e un file manifesto Kubernetes. Questi file vengono usati in tutta la serie di esercitazioni. Il contenuto e la struttura della directory sono i seguenti:

azure-voting-app-redis
│   azure-vote-all-in-one-redis.yaml
│   docker-compose.yaml
│   LICENSE
│   README.md
│
├───azure-vote
│   │   app_init.supervisord.conf
│   │   Dockerfile
│   │   Dockerfile-for-app-service
│   │   sshd_config
│   │
│   └───azure-vote
│       │   config_file.cfg
│       │   main.py
│       │
│       ├───static
│       │       default.css
│       │
│       └───templates
│               index.html
│
└───jenkins-tutorial
        config-jenkins.sh
        deploy-jenkins-vm.sh

Creare immagini del contenitore

È possibile usare Docker Compose per automatizzare la creazione di immagini dei contenitori e la distribuzione di applicazioni multi-contenitore.

Usare il file docker-compose.yaml di esempio per creare l'immagine del contenitore, scaricare l'immagine Redis e avviare l'applicazione:

docker-compose up -d

Al termine usare il comando docker images per vedere le immagini create. Tre immagini sono state scaricate o create. L'immagine azure-vote-front contiene l'applicazione front-end e usa come base l'immagine nginx-flask. L'immagine redis viene usata per avviare un'istanza di Redis.

$ docker images

REPOSITORY                                     TAG                 IMAGE ID            CREATED             SIZE
mcr.microsoft.com/azuredocs/azure-vote-front   v1                  84b41c268ad9        9 seconds ago       944MB
mcr.microsoft.com/oss/bitnami/redis            6.0.8               3a54a920bb6c        2 days ago          103MB
tiangolo/uwsgi-nginx-flask                     python3.6           a16ce562e863        6 weeks ago         944MB

Eseguire il comando docker ps per vedere i contenitori in esecuzione:

$ docker ps

CONTAINER ID        IMAGE                                             COMMAND                  CREATED             STATUS              PORTS                           NAMES
d10e5244f237        mcr.microsoft.com/azuredocs/azure-vote-front:v1   "/entrypoint.sh /sta…"   3 minutes ago       Up 3 minutes        443/tcp, 0.0.0.0:8080->80/tcp   azure-vote-front
21574cb38c1f        mcr.microsoft.com/oss/bitnami/redis:6.0.8         "/opt/bitnami/script…"   3 minutes ago       Up 3 minutes        0.0.0.0:6379->6379/tcp          azure-vote-back

Testare l'applicazione in locale

Per vedere l'applicazione in esecuzione, immettere http://localhost:8080 in un Web browser locale. L'applicazione di esempio viene caricata, come illustrato nell'esempio seguente:

Screenshot che mostra l'immagine del contenitore aperta in un Web browser locale.

Pulire le risorse

Dopo aver convalidato la funzionalità dell'applicazione, è possibile arrestare e rimuovere i contenitori in esecuzione. Non eliminare le immagini del contenitore: nell'esercitazione successiva l'immagine di azure-vote-front viene caricata in un'istanza di Registro Azure Container.

Arrestare e rimuovere le istanze di contenitore e le risorse con il comando docker-compose down:

docker-compose down

Quando si rimuove l'applicazione locale, è disponibile un'immagine Docker contenente l'applicazione Voto di Azure, azure-vote-front, da usare con l'esercitazione successiva.

Passaggi successivi

In questa esercitazione è stata testata un'applicazione e sono state create le immagini del contenitore per l'applicazione stessa. Si è appreso come:

  • Clonare l'origine di un'applicazione di esempio da GitHub
  • Creare un'immagine del contenitore dall'origine dell'applicazione di esempio
  • Testare l'applicazione multicontenitore in un ambiente Docker locale

Passare alla prossima esercitazione per apprendere come archiviare le immagini del contenitore in Registro Azure Container.