(ELAVULT) Alkalmazás létrehozása és üzembe helyezése a Kubernetesben a Draft és az Azure Container Service és a Azure Container Registry használatával

Tipp

A Azure Kubernetes Service használó cikk frissített verziójáról a Piszkozat használata Azure Kubernetes Service (AKS) című témakörben olvashat.

Figyelmeztetés

Az Azure Container Service (ACS) elavult. Az ACS-hez nem adnak hozzá új szolgáltatásokat vagy funkciókat. Az összes API, portálélmény, CLI-parancs és dokumentáció elavultként van megjelölve.

2017-ben bevezettük az Azure Kubernetes Service (AKS) a Kubernetes felügyeletének, üzembe helyezésének és műveleteinek egyszerűsítésére. Ha a Kubernetes vezénylőt használja, 2020. január 31-ig migráljon az AKS-be. Elsőként tekintse meg a Azure Kubernetes Service migrálását ismertető témakört.

További információkért tekintse meg az Azure Container Service elavulással kapcsolatos bejelentését a Azure.com.

A Draft egy új nyílt forráskódú eszköz, amely megkönnyíti a tárolóval működő alkalmazások fejlesztését és azok üzembe helyezését Kubernetes-fürtökben anélkül, hogy részletesen ismerné a Dockert és a Kubernetest – vagy akár csak telepítenie kellene őket. A Draft és a hasonló eszközök révén Ön és csapata a Kubernetesben való alkalmazáskészítésre összpontosíthat, anélkül, hogy sok figyelmet kellene fordítania az infrastruktúrára.

A Draft bármely Docker-rendszerképjegyzékkel és Kubernetes-fürttel használható, beleértve a helyi használatot. Ez az oktatóanyag bemutatja, hogyan használhatja az ACS-t a Kubernetes és az ACR használatával egy élő, de biztonságos fejlesztői folyamat létrehozására a Kubernetesben a Draft használatával, és hogyan teheti elérhetővé a fejlesztői folyamatot az Azure DNS használatával mások számára egy tartományban.

Azure Container Registry létrehozása

Egyszerűen hozzon létre egy új Azure Container Registryt a következő lépésekkel:

  1. Hozzon létre egy Azure-erőforráscsoportot az ACR regisztrációs adatbázis és a Kubernetes-fürt ACS-ben való kezeléséhez.

    az group create --name draft --location eastus
    
  2. Hozzon létre egy ACR-rendszerkép-beállításjegyzéket az az acr create használatával, és győződjön meg arról, hogy a --admin-enabled beállítás értéke true.

    az acr create --resource-group draft --name draftacs --sku Basic
    

Azure Container Service létrehozása a Kubernetes-szel

Most már készen áll az az acs create használatára, hogy ACS-fürtöt hozzon létre a Kubernetes-szel az --orchestrator-type értékeként.

az acs create --resource-group draft --name draft-kube-acs --dns-prefix draft-cluster --orchestrator-type kubernetes --generate-ssh-keys

Megjegyzés

A Kubernetes nem az alapértelmezett vezénylőtípus, így mindenképpen használnia kell a --orchestrator-type kubernetes kapcsolót.

A kimenet sikeres működés esetén az alábbihoz hasonló.

waiting for AAD role to propagate.done
{
  "id": "/subscriptions/<guid>/resourceGroups/draft/providers/Microsoft.Resources/deployments/azurecli14904.93snip09",
  "name": "azurecli1496227204.9323909",
  "properties": {
    "correlationId": "<guid>",
    "debugSetting": null,
    "dependencies": [],
    "mode": "Incremental",
    "outputs": null,
    "parameters": {
      "clientSecret": {
        "type": "SecureString"
      }
    },
    "parametersLink": null,
    "providers": [
      {
        "id": null,
        "namespace": "Microsoft.ContainerService",
        "registrationState": null,
        "resourceTypes": [
          {
            "aliases": null,
            "apiVersions": null,
            "locations": [
              "westus"
            ],
            "properties": null,
            "resourceType": "containerServices"
          }
        ]
      }
    ],
    "provisioningState": "Succeeded",
    "template": null,
    "templateLink": null,
    "timestamp": "2017-05-31T10:46:29.434095+00:00"
  },
  "resourceGroup": "draft"
}

Most, hogy kész a fürt, importálhatja a hitelesítő adatokat az az acs kubernetes get-credentials paranccsal. Ekkor már rendelkezik helyi konfigurációs fájllal a fürthöz, ami a Helm és a Draft számára szükséges.

A draft telepítése és konfigurálása

  1. Töltse le a környezet piszkozatát, https://github.com/Azure/draft/releases és telepítse a PATH-ba, hogy a parancs használható legyen.

  2. Töltse le a helmet a környezethez, https://github.com/kubernetes/helm/releases és telepítse a PATH-ba, hogy a parancs használható legyen.

  3. Konfigurálja a Draftot a beállításjegyzék használatára, és hozzon létre altartományt minden általa létrehozott Helm-diagramhoz. A Draft konfigurálásához a következők szükségesek:

    • Az Azure Container Registry neve (a példában draftacsdemo)
    • A beállításkulcs vagy jelszó a következőből: az acr credential show -n <registry name> --output tsv --query "passwords[0].value".

    A hívás draft init és a konfigurációs folyamat a fenti értékek megadását kéri; vegye figyelembe, hogy a beállításjegyzék URL-címének URL-formátuma a beállításjegyzék neve (ebben a példában draftacsdemo) plusz .azurecr.io. A felhasználónév önmagában a regisztrációs adatbázis neve. A folyamat az első futtatáskor a következőhöz lesz hasonló.

     $ draft init
     Creating /home/ralph/.draft 
     Creating /home/ralph/.draft/plugins 
     Creating /home/ralph/.draft/packs 
     Creating pack go...
     Creating pack python...
     Creating pack ruby...
     Creating pack javascript...
     Creating pack gradle...
     Creating pack java...
     Creating pack php...
     Creating pack csharp...
     $DRAFT_HOME has been configured at /home/ralph/.draft.
    
     In order to configure Draft, we need a bit more information...
    
     1. Enter your Docker registry URL (e.g. docker.io/myuser, quay.io/myuser, myregistry.azurecr.io): draftacsdemo.azurecr.io
     2. Enter your username: draftacsdemo
     3. Enter your password: 
     Draft has been installed into your Kubernetes Cluster.
     Happy Sailing!
    

Most már készen áll az alkalmazás üzembe helyezésére.

Alkalmazás fejlesztése és üzembe helyezése

A Draft-tárházban hat egyszerű példaalkalmazást talál. Klónozza az adattárat, és használjuk a Java-példát. Váltson a examples/java könyvtárra, és írja be draft create az alkalmazást. Ez az alábbi példához hasonlóan nézhet ki.

$ draft create
--> Draft detected the primary language as Java with 91.228814% certainty.
--> Ready to sail

A parancs kimenete egy Dockerfile és egy Helm-diagram. A létrehozáshoz és üzembe helyezéshez egyszerűen írja be a draft up parancsot. A kimenet kiterjedt, de az alábbi példához hasonlóan kell kinéznie.

$ draft up
Draft Up Started: 'handy-labradoodle'
handy-labradoodle: Building Docker Image: SUCCESS ⚓  (35.0232s)
handy-labradoodle: Pushing Docker Image: SUCCESS ⚓  (17.0062s)
handy-labradoodle: Releasing Application: SUCCESS ⚓  (3.8903s)
handy-labradoodle: Build ID: 01BT0ZJ87NWCD7BBPK4Y3BTTPB

Az alkalmazás biztonságos megtekintése

A tároló most már az ACS-ben fut. A megtekintéséhez használja a draft connect parancsot, amely biztonságos kapcsolatot hoz létre a fürt IP-címéhez az alkalmazás egy adott portjával, hogy helyileg megtekinthesse. Ha sikeres, keresse meg az alkalmazáshoz való csatlakozásHOZ szükséges URL-címet a SUCCESS jelző utáni első sorban.

Megjegyzés

Ha egy üzenet arról tájékoztatja, hogy egyetlen pod sem állt készen, várjon egy pillanatra, és próbálkozzon újra, vagy megnézheti, hogy a podok készen állnak-e kubectl get pods -w , majd próbálkozzon újra, amikor elkészültek.

draft connect
Connecting to your app...SUCCESS...Connect to your app on localhost:46143
Starting log streaming...
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See https://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
== Spark has ignited ...
>> Listening on 0.0.0.0:4567

Az előző példában beírhatja curl -s https://localhost:46143 a választ. Hello World, I'm Java! Ha a CTRL+ vagy a CMD+C billentyűkombinációt használja (az operációs rendszer környezetétől függően), a rendszer megszakítja a biztonságos alagutat, és folytathatja az iterálást.

Az alkalmazás megosztása üzembehelyezési tartomány konfigurálásával az Azure DNS-sel

Már végrehajtotta a Piszkozat által az előző lépésekben létrehozott fejlesztői iterációs hurkot. Az alkalmazást azonban megoszthatja az interneten:

  1. Bejövő forgalom telepítése az ACS-fürtben (egy nyilvános IP-cím megadásához, amelyen meg szeretné jeleníteni az alkalmazást)
  2. Az egyéni tartomány delegálása az Azure DNS-be, és a tartomány hozzárendelése a bejövőforgalom-vezérlőhöz hozzárendelt IP-címre

A Helm használatával telepítse a bejövőforgalom-vezérlőt.

A Helm használatával megkereshet és telepíthet stable/traefikegy bejövőforgalom-vezérlőt a buildek bejövő kéréseinek engedélyezéséhez.

$ helm search traefik
NAME          	VERSION	DESCRIPTION
stable/traefik	1.3.0  	A Traefik based Kubernetes ingress controller w...

$ helm install stable/traefik --name ingress

Ezután állítson be egy figyelőpontot az ingress (bejövőforgalom-) vezérlőn a külső IP-érték rögzítéséhez, amikor üzembe van helyezve. Az IP-cím az, amelyik az üzembe helyezés tartományhoz lesz csatlakoztatva a következő szakaszban.

$ kubectl get svc -w
NAME                          CLUSTER-IP     EXTERNAL-IP     PORT(S)                      AGE
ingress-traefik               10.0.248.104   13.64.108.240   80:31046/TCP,443:32556/TCP   1h
kubernetes                    10.0.0.1       <none>          443/TCP                      7h

Ebben az esetben az üzembe helyezés tartományához használható külső IP-cím: 13.64.108.240. A tartományt most már leképezheti erre az IP-címre.

A bejövő IP-cím leképezése egyéni altartományra

A Draft kiadást hoz létre minden egyes létrehozott Helm-diagramhoz – minden egyes alkalmazáshoz, amin dolgozik. Mindegyik kap egy generált nevet, amelyet a piszkozataltartományként használ az Ön által felügyelt gyökértelepítési tartomány felett. (Ebben a példában üzembehelyezési tartományként használjuk squillace.io .) Az altartomány viselkedésének engedélyezéséhez létre kell hoznia egy A rekordot '*.draft' az üzembehelyezési tartomány DNS-bejegyzéseiben, hogy minden létrehozott altartomány a Kubernetes-fürt bejövőforgalom-vezérlőjéhez legyen irányítva.

Saját tartományszolgáltatójának saját módszere van a DNS-kiszolgálók hozzárendelésére; a tartomány névkiszolgálóinak delegálására az Azure DNS-be tegye a következőket:

  1. Hozzon létre egy erőforráscsoportot a zóna számára.

    az group create --name squillace.io --location eastus
    {
      "id": "/subscriptions/<guid>/resourceGroups/squillace.io",
      "location": "eastus",
      "managedBy": null,
      "name": "zones",
      "properties": {
        "provisioningState": "Succeeded"
      },
      "tags": null
    }
    
  2. Hozzon létre DNS-zónát a tartományához. Használja az az network dns zone create parancsot a névkiszolgálók beszerzéséhez a tartomány DNS-vezérlésének az Azure DNS-be való delegálásához.

    az network dns zone create --resource-group squillace.io --name squillace.io
    {
      "etag": "<guid>",
      "id": "/subscriptions/<guid>/resourceGroups/zones/providers/Microsoft.Network/dnszones/squillace.io",
      "location": "global",
      "maxNumberOfRecordSets": 5000,
      "name": "squillace.io",
      "nameServers": [
        "ns1-09.azure-dns.com.",
        "ns2-09.azure-dns.net.",
        "ns3-09.azure-dns.org.",
        "ns4-09.azure-dns.info."
      ],
      "numberOfRecordSets": 2,
      "resourceGroup": "squillace.io",
      "tags": {},
      "type": "Microsoft.Network/dnszones"
    }
    
  3. Adja hozzá a tartományszolgáltatónak megadott DNS-kiszolgálókat az üzembe helyezési tartományhoz, ami lehetővé teszi, hogy az Azure DNS szolgáltatással átirányíthassa tartományát, ahogy kívánja. Ennek módja tartományonként változik; delegálhatja a tartománynév-kiszolgálóit az Azure DNS-be .

  4. Miután tartományát delegálta az Azure DNS-be, hozzon létre egy A rekordhalmaz bejegyzést az üzembehelyezési tartomány IP-címhez ingress való hozzárendeléséhez az előző szakasz 2. lépéséből.

    az network dns record-set a add-record --ipv4-address 13.64.108.240 --record-set-name '*.draft' -g squillace.io -z squillace.io
    

    A kimenet a következőhöz hasonló lesz:

    {
     "arecords": [
       {
         "ipv4Address": "13.64.108.240"
       }
     ],
     "etag": "<guid>",
     "id": "/subscriptions/<guid>/resourceGroups/squillace.io/providers/Microsoft.Network/dnszones/squillace.io/A/*",
     "metadata": null,
     "name": "*.draft",
     "resourceGroup": "squillace.io",
     "ttl": 3600,
     "type": "Microsoft.Network/dnszones/A"
    }
    
  5. Vázlat újratelepítése

    1. Távolítsa el a fürtből a vázlatot a következő beírásával helm delete --purge draft: .
    2. Telepítse újra a piszkozatot ugyanazzal draft-init a paranccsal, de a --ingress-enabled következő beállítással:
      draft init --ingress-enabled
      
      A fenti elsőhöz hasonlóan válaszoljon a kérdésekre. Van azonban még egy kérdés, amelyre válaszolnia kell az Azure DNS-sel konfigurált teljes tartományútvonal használatával.
  6. Adja meg a felső szintű tartományt a bejövő forgalomhoz (például draft.example.com): draft.squillace.io

  7. draft up Amikor meghívja ezt az időt, láthatja az alkalmazást (vagy curl azt) az űrlap <appname>.draft.<domain>.<top-level-domain>URL-címén. Ebben a példában a http://handy-labradoodle.draft.squillace.io.

    curl -s http://handy-labradoodle.draft.squillace.io
    Hello World, I'm Java!
    

Következő lépések

Most, hogy már van ACS Kubernetes-fürtje, megvizsgálhatja az Azure Container Registry használatát ebben a forgatókönyvben további, különböző üzemelő példányok létrehozásához. Például létrehozhat egy draft.basedomain.toplevel tartományi DNS-rekordkészletet, amely mélyebb altartományból szabályozza a dolgokat adott ACS-környezetekhez.