(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:
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
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éketrue
.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
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.
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.
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ábandraftacsdemo
) 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!
- Az Azure Container Registry neve (a példában
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:
- 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)
- 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/traefik
egy 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:
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 }
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" }
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 .
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" }
Vázlat újratelepítése
- Távolítsa el a fürtből a vázlatot a következő beírásával
helm delete --purge draft
: . - Telepítse újra a piszkozatot ugyanazzal
draft-init
a paranccsal, de a--ingress-enabled
következő beállítással:
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.draft init --ingress-enabled
- Távolítsa el a fürtből a vázlatot a következő beírásával
Adja meg a felső szintű tartományt a bejövő forgalomhoz (például draft.example.com): draft.squillace.io
draft up
Amikor meghívja ezt az időt, láthatja az alkalmazást (vagycurl
azt) az űrlap<appname>.draft.<domain>.<top-level-domain>
URL-címén. Ebben a példában ahttp://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.