From df43ee7473d532f902cc1b7695e18cde6d589e43 Mon Sep 17 00:00:00 2001 From: Toddy Mladenov Date: Wed, 27 Jan 2021 22:28:51 -0800 Subject: [PATCH 01/51] Fixed link; removed Arc link --- .../connected-registry/quickstart-connected-registry-cli.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/preview/connected-registry/quickstart-connected-registry-cli.md b/docs/preview/connected-registry/quickstart-connected-registry-cli.md index eda2316..661f86e 100644 --- a/docs/preview/connected-registry/quickstart-connected-registry-cli.md +++ b/docs/preview/connected-registry/quickstart-connected-registry-cli.md @@ -122,8 +122,6 @@ In this quickstart, you used Azure CLI to create a connected registry resources > [Quickstart: Deploy connected registry on IoT Edge][quickstart-deploy-connected-registry-iot-edge-cli] -> [Quickstart: Deploy connected registry on Azure Arc][quickstart-deploy-connected-registry-azure-arc] - [az-acr-connected-registry-create]: https://docs.microsoft.com/cli/azure/acr/connected-registry?view=azure-cli-latest#az_acr_connected_registry_create [az-acr-connected-registry-list]: https://docs.microsoft.com/cli/azure/acr/connected-registry?view=azure-cli-latest#az_acr_connected_registry_list @@ -133,4 +131,4 @@ In this quickstart, you used Azure CLI to create a connected registry resources [container-registry-intro]: https://docs.microsoft.com/azure/container-registry/container-registry-intro [container-registry-skus]: https://docs.microsoft.com/azure/container-registry/container-registry-skus [quickstart-deploy-connected-registry-azure-arc]: quickstart-deploy-connected-registry-azure-arc.md -[quickstart-deploy-connected-registry-iot-edge-cli]: quickstart-deploy-connected-registry-iot-edge.md \ No newline at end of file +[quickstart-deploy-connected-registry-iot-edge-cli]: quickstart-deploy-connected-registry-iot-edge-cli.md \ No newline at end of file From 0a6b35be702d2734762ab999d4f0343372a6a5ce Mon Sep 17 00:00:00 2001 From: Dan Lepow Date: Fri, 12 Feb 2021 14:29:43 -0800 Subject: [PATCH 02/51] Update README.md Note key must be exportable --- docs/custom-domain/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/custom-domain/README.md b/docs/custom-domain/README.md index d39f3d3..09366c6 100644 --- a/docs/custom-domain/README.md +++ b/docs/custom-domain/README.md @@ -13,7 +13,7 @@ The following steps describe how you can achieve this. - Custom data domain to access the registry content. Again, example for `contoso.com`: `eastus-registry-data.contoso.com` - Note that the custom data domain is region specific. For geo-replicated registries, each region should have its own custom data endpoint. - For each domain, you must prepare a single PEM formatted file containing the TLS private key and public certificate: + For each domain, you must prepare a single PEM formatted file containing the TLS private key and public certificate. The key must be exportable. ``` -----BEGIN PRIVATE KEY----- From cd6d12212158a5e14c2fd4cb4b65dba81b1fd9cf Mon Sep 17 00:00:00 2001 From: Dan Lepow Date: Mon, 22 Feb 2021 10:08:25 -0800 Subject: [PATCH 03/51] update in progress --- docs/custom-domain/README.md | 146 ++++++++++++++++++++--------------- 1 file changed, 83 insertions(+), 63 deletions(-) diff --git a/docs/custom-domain/README.md b/docs/custom-domain/README.md index d39f3d3..9fbb803 100644 --- a/docs/custom-domain/README.md +++ b/docs/custom-domain/README.md @@ -1,21 +1,30 @@ -# Using Custom Domains with Azure Container Registry +# Use a custom domain with Azure Container Registry (private preview) -Every ACR is accessed using its login server. If you have a registry called `myregistry`, you access it using its default hostname, `myregistry.azurecr.io` (in Azure Public Cloud.) As a customer belonging to an organization, you may prefer to access your registry using a custom domain that is associated with your organization, for instance, `container-registry.contoso.com`. +This article describes the steps to set up the endpoints of an Azure container registry using your own custom domain name, such as **contoso.com**. -The following steps describe how you can achieve this. +By default, every Azure container registry is accessed using its login server name. If you have a registry called `myregistry`, you access it using its default hostname, `myregistry.azurecr.io` (in the Azure Cloud). As a customer belonging to an organization, you may prefer to access your registry using a custom domain name that is associated with your organization, for example, `myregistry.contoso.com`. + +**Important - Using a custom domain name in Azure Container Registry is currently a private preview feature**. It can only be enabled by preparing certificates, your registry, and an Azure key vault as described in this article, and then opening an Azure support request to complete the configuration. + +## Limitations + +* This capability is provided without a service level agreement, and isn't currently recommended for production workloads. +* Azure Container Registry custom domains can't currently be used where key vault access is restricted. ## Prerequisites -- [Azure CLI](https://docs.microsoft.com/cli/azure/?view=azure-cli-latest): version 2.4.0 or higher - - Consider using [Azure Cloud Shell](https://docs.microsoft.com/azure/cloud-shell/overview) -- A _premium_ Azure Container Registry. See [here](https://docs.microsoft.com/azure/container-registry/container-registry-get-started-azure-cli) for instructions on how to create one. +- [Azure CLI](https://docs.microsoft.com/cli/azure/): version 2.4.0 or higher, or use [Azure Cloud Shell](https://docs.microsoft.com/azure/cloud-shell/overview) +- An Azure container registry in the Premium service tier. See [this article](https://docs.microsoft.com/azure/container-registry/container-registry-get-started-azure-cli) for instructions to create one. If you have an existing registry, you can [upgrade](https://docs.microsoft.com/azure/container-registry/container-registry-skus#changing-tiers). - Your custom domain names. The following two are required: - Custom registry domain to access the registry REST API. Example for the `contoso.com` domain: `container-registry.contoso.com` - - Custom data domain to access the registry content. Again, example for `contoso.com`: `eastus-registry-data.contoso.com` - - Note that the custom data domain is region specific. For geo-replicated registries, each region should have its own custom data endpoint. + - Custom data domain to access the registry content. Example for `contoso.com`: `eastus-registry-data.contoso.com` - For each domain, you must prepare a single PEM formatted file containing the TLS private key and public certificate: + **Note** - The custom data domain is region specific. If your registry is geo-replicated, each region should have its own custom data domain. + +## Prepare certificates - ``` +For each domain, you must prepare a single PEM-formatted file containing the TLS private key and public certificate. The private key must be exportable. + + ``` -----BEGIN PRIVATE KEY----- ..... -----END PRIVATE KEY----- @@ -23,83 +32,94 @@ The following steps describe how you can achieve this. ..... -----END CERTIFICATE----- ``` + +You may use your own valid certificates signed by a certificate authority (CA) or self-signed certificates. Self-signed certificates should only be used for test and evaluation purposes. - For example, using [openssl](https://github.com/openssl/openssl): - - Create a self-signed public cert and private key - ```shell +To create self-signed certificates: +1. Use [openssl](https://github.com/openssl/openssl) to create a self-signed public certificate and private key + + ```shell openssl req -nodes -x509 -newkey rsa:4096 \ -keyout container-registry.contoso.com.key.pem \ -out container-registry.contoso.com.cert.pem -days 365 \ -subj '/CN=container-registry.contoso.com/O=Contoso./C=US' - ``` - - Create a single file containing both the public certificate and private key - ```shell + ``` + +2. Create a single file containing both the public certificate and private key. + ```shell cat container-registry.contoso.com.key.pem \ - >> container-registry-contoso-com-pem + >> container-registry-contoso-com-pem cat container-registry.contoso.com.cert.pem \ - >> container-registry-contoso-com-pem + >> container-registry-contoso-com-pem ``` - - For each data domain, follow the same steps above to prepare the PEM formatted files containing the public certificate and private key. + 3. For each data domain in your registry, repeat the preceding steps to prepare a PEM-formatted file containing the public certificate and private key. - Azure Key Vault allows you to [create](https://docs.microsoft.com/azure/key-vault/certificate-scenarios) Certificate Authority (CA) signed certificates. - - If you choose to use the Azure Portal to create the certificates, be sure to select certificate content type as PEM. +You can also use Azure Key Vault to [create](https://docs.microsoft.com/azure/key-vault/certificate-scenarios) CA-signed certificates. If you choose to use the Azure Portal to create the certificates, be sure to select the PEM content type for each certificate. ## Prepare your existing registry -We will enable two features on your registry: -- Data Endpoints:\ - This feature provides a dedicated endpoint for downloading content from your registry. If you have a registry in East US, on enabling this feature, a data endpoint is automatically created for you: `myregistry.eastus.data.azurecr.io` - -- ACR Managed Identities:\ - Managed Identities provide a mechanism to associate an Azure Active Directory identity with your registry, while relieving you of the burden of managing credentials. To learn more, see the documentation [here](https://docs.microsoft.com/azure/active-directory/managed-identities-azure-resources/overview).\ - ACR supports both user assigned and system assigned managed identities. -### Enable data endpoints and managed idenitites +You need to enable two features on your registry: +- [Dedicated data endpoints](https://docs.microsoft.com/azure/container-registry/container-registry-firewall-access-rules#enable-dedicated-data-endpoints) - If you have a registry in East US, after enabling this feature, a data endpoint is automatically created for you: `myregistry.eastus.data.azurecr.io` + +- [Managed identities](https://docs.microsoft.com/azure/active-directory/managed-identities-azure-resources/overview) - Managed identities associate an Azure Active Directory identity with your registry, relieving you of the burden of managing credentials to access certain Azure resources. + + Azure Container Registry supports both user-assigned and system-assigned managed identities. We recommend using a system-assigned managed identity to access secrets for a custom domain managed in Azure Key Vault. + +### Enable data endpoints and managed identities + +Use the Azure CLI: 1. `az login` 2. `az account set -s ` -3. `az acr update --data-endpoint-enabled true -n myregistry` -4. You can either enable a system assigned managed identity, a user assigned managed identity, or both for your registry. We recommend using system assigned managed identity to enable advanced scenarios with virtual networks that, although not supported currently, are [coming soon](#enhanced-security-with-virtual-networks). Do _one_ of the following: - - To enable only system assigned managed identity: - - `az acr identity assign -n myregistry --identities [system]` - - To enable user assigned managed identity, with or without a system identity: - - Create a user assigned managed identity following the instructions [here](https://docs.microsoft.com/azure/active-directory/managed-identities-azure-resources/how-to-manage-ua-identity-portal). - - Do _one_ of the following: - - To enable _only_ user assigned managed identity: - - `az acr identity assign -n myregistry --identities ""` - - To enable _both_ user and system assigned managed identities: - - `az acr identity assign -n myregistry --identities "" [system]` +3. To enable dedicated data endpoints: -## Prepare your Azure Key Vault -For each domain, its TLS private key and public certificate pair must be added to an Azure Key Vault that is accessible by your registry as a single PEM formatted file. We recommend creating a new key vault containing only your TLS certificates and granting the registry's identity access to `get` secret. -1. [Create](https://docs.microsoft.com/azure/key-vault/) a new Azure Key Vault. -2. [Add](https://docs.microsoft.com/azure/key-vault/certificate-scenarios) your certificates to the key vault. -3. Add an access policy to the key vault that grants your registry's identity access to `get` secret:\ - `az keyvault set-policy --name --secret-permissions get --spn ` - - The output of the command to enable managed identities on the registry will contain the principal ids of the assiged identities. - - Alternatively, you may obtain the principal ids using `az cli`: - - For system assigned managed identity: + `az acr update --data-endpoint-enabled true -n myregistry` +1. To enable a managed identity, do _one_ of the following: + - To enable only the system-assigned managed identity: + + `az acr identity assign -n myregistry --identities [system]` + - To enable a user-assigned managed identity, with or without a system-assigned identity: + - [Create](https://docs.microsoft.com/azure/active-directory/managed-identities-azure-resources/how-to-manage-ua-identity-portal) a user-assigned managed identity. + - Do _one_ of the following: + - To enable _only_ the user-assigned managed identity: + + `az acr identity assign -n myregistry --identities ""` + - To enable _both_ user- and system-assigned managed identities: + + `az acr identity assign -n myregistry --identities "" [system]` + +## Prepare your Azure key vault + +For each domain, the corresponding TLS private key and public certificate pair must be added as a PEM-formatted file to an Azure key vault that is accessible by your registry. We recommend creating a new key vault containing only your TLS certificates and granting the registry's identity access to `get` secrets. +1. [Create](https://docs.microsoft.com/azure/key-vault/) a new Azure key vault. +2. [Import](https://docs.microsoft.com/en-us/azure/key-vault/certificates/tutorial-import-certificate) your certificate files to the key vault. +3. Add an access policy to the key vault that grants your registry's identity access to `get` certificates:\ + `az keyvault set-policy --name --certificate-permissions get --spn ` + - The output of the command to enable managed identities on the registry contains the principal IDs of the assiged identity or identities. + - Alternatively, you may obtain the principal IDs using the Azure CLI: + - For system-assigned managed identity: - `az acr show -n myregistry --query identity.principalId -o tsv` - - For user assigned managed identities, you may list them as follows and use the desired principal ID: + - For user-assigned managed identities, you may list them as follows and use the desired principal ID: - `az acr show -n myregistry --query identity.userAssignedIdentities` -For greater isolation, we recommend that you put each certificate in its own key vault and set its access policy independently. The registry should always have access to the key vault secrets. +For greater isolation, we recommend that you put each certificate in its own key vault and set its access policy independently. The registry should always have access to the key vault certficates. -### Enhanced security with Virtual Networks -Azure Key Vault allows you to [restrict access](https://docs.microsoft.com/azure/key-vault/key-vault-overview-vnet-service-endpoints) to specific virtual networks only. ACR custom domains are currently _not supported_ where key vault access is restricted, but this is work in progress and will be available with system managed identities only. +### Enhanced security with virtual networks +Azure Key Vault allows you to [restrict access](https://docs.microsoft.com/azure/key-vault/key-vault-overview-vnet-service-endpoints) to specific virtual networks only. Azure Container Registry custom domains can't currently be used where key vault access is restricted. This work is in progress and will be available with system-managed identities only. ## Prepare your DNS zone 1. The custom registry domain must have a CNAME record with the target registry login server:\ `container-registry.contoso.com` --> `myregistry.azurecr.io` -2. The regional custom data domain must have a CNAME record with the target regional registry data endpoint:\ +2. Each regional custom data domain must have a CNAME record with the target regional registry data endpoint:\ `eastus-registry-data.contoso.com` --> `myregistry.eastus.data.azurecr.io` - The output of the command to enable data endpoints on the registry will contain the regional data endpoint. -## Contact us -As a final step, share the following with us by creating a support ticket ([Azure Support](https://azure.microsoft.com/support/create-ticket/)): +## Contact Azure support +As a final step, share the following with us by creating an [Azure Support](https://azure.microsoft.com/support/create-ticket/) ticket. This information is needed to complete the custom domain configuration. - Custom registry domain details - - custom registry domain (`container-registry.contoso.com`) - - key vault secret ID of the corresponding TLS data - - client ID of the user assigned registry identity that has access to this secret (not required in case of system assigned) -- Custom data domain details - - regional custom data domain (`eastus-registry-data.contoso.com`) - - key vault secret ID of the corresponding TLS data - - client ID of the user assigned registry identity that has access to this secret (not required in case of system assigned) + - custom registry domain name (`container-registry.contoso.com`) + - key vault certificate ID of the corresponding TLS data (a URI of the form `https://myvaultvault.azure.net/certificates/mycertificate/xxxxxxxxxxxxx`) + - client ID of the user-assigned registry identity that has access to this secret (not required in case of system-assigned identity) +- Custom data domain details (for each data domain) + - regional custom data domain name (`eastus-registry-data.contoso.com`) + - key vault certficate ID of the corresponding TLS data (a URI of the form `https://myvaultvault.azure.net/certificates/mycertificate/xxxxxxxxxxxxx`) + - client ID of the user-assigned registry identity that has access to this secret (not required in case of system-assigned identiity) From e370070b0840a60e3e1667e6924eff481194b1f5 Mon Sep 17 00:00:00 2001 From: Dan Lepow Date: Tue, 23 Feb 2021 12:11:24 -0800 Subject: [PATCH 04/51] update draft complete --- docs/custom-domain/README.md | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/docs/custom-domain/README.md b/docs/custom-domain/README.md index 9fbb803..fdb4a9b 100644 --- a/docs/custom-domain/README.md +++ b/docs/custom-domain/README.md @@ -2,9 +2,9 @@ This article describes the steps to set up the endpoints of an Azure container registry using your own custom domain name, such as **contoso.com**. -By default, every Azure container registry is accessed using its login server name. If you have a registry called `myregistry`, you access it using its default hostname, `myregistry.azurecr.io` (in the Azure Cloud). As a customer belonging to an organization, you may prefer to access your registry using a custom domain name that is associated with your organization, for example, `myregistry.contoso.com`. +By default, every Azure container registry is accessed externally using its login server name. If you have a registry called `myregistry`, you access it using its default hostname, `myregistry.azurecr.io` (in the Azure Cloud). As a customer belonging to an organization, you may prefer to access your registry using a custom domain name that is associated with your organization, for example, `myregistry.contoso.com`. -**Important - Using a custom domain name in Azure Container Registry is currently a private preview feature**. It can only be enabled by preparing certificates, your registry, and an Azure key vault as described in this article, and then opening an Azure support request to complete the configuration. +**Important - Using a custom domain name in Azure Container Registry is currently a private preview feature**. It can only be enabled by preparing certificates, a Premium container registry, and an Azure key vault as described in this article, and then opening an Azure support request to complete the configuration. ## Limitations @@ -22,7 +22,7 @@ By default, every Azure container registry is accessed using its login server na ## Prepare certificates -For each domain, you must prepare a single PEM-formatted file containing the TLS private key and public certificate. The private key must be exportable. +For each domain, prepare a single PEM-formatted file containing the TLS private key and public certificate. The private key must be exportable. ``` -----BEGIN PRIVATE KEY----- @@ -36,7 +36,7 @@ For each domain, you must prepare a single PEM-formatted file containing the TLS You may use your own valid certificates signed by a certificate authority (CA) or self-signed certificates. Self-signed certificates should only be used for test and evaluation purposes. To create self-signed certificates: -1. Use [openssl](https://github.com/openssl/openssl) to create a self-signed public certificate and private key +1. Use [openssl](https://github.com/openssl/openssl) to create a self-signed public certificate and private key. ```shell openssl req -nodes -x509 -newkey rsa:4096 \ @@ -48,9 +48,9 @@ To create self-signed certificates: 2. Create a single file containing both the public certificate and private key. ```shell cat container-registry.contoso.com.key.pem \ - >> container-registry-contoso-com-pem + >> container-registry-contoso-com.pem cat container-registry.contoso.com.cert.pem \ - >> container-registry-contoso-com-pem + >> container-registry-contoso-com.pem ``` 3. For each data domain in your registry, repeat the preceding steps to prepare a PEM-formatted file containing the public certificate and private key. @@ -79,6 +79,9 @@ Use the Azure CLI: `az acr identity assign -n myregistry --identities [system]` - To enable a user-assigned managed identity, with or without a system-assigned identity: - [Create](https://docs.microsoft.com/azure/active-directory/managed-identities-azure-resources/how-to-manage-ua-identity-portal) a user-assigned managed identity. + - Get the resource ID of the user-assigned identity. + - In the portal, go to the identity and select **Properties** under **Settings**. + - Alternatively, you may obtain the resource ID using the `az identity show` command in the Azure CLI. - Do _one_ of the following: - To enable _only_ the user-assigned managed identity: @@ -91,9 +94,9 @@ Use the Azure CLI: For each domain, the corresponding TLS private key and public certificate pair must be added as a PEM-formatted file to an Azure key vault that is accessible by your registry. We recommend creating a new key vault containing only your TLS certificates and granting the registry's identity access to `get` secrets. 1. [Create](https://docs.microsoft.com/azure/key-vault/) a new Azure key vault. -2. [Import](https://docs.microsoft.com/en-us/azure/key-vault/certificates/tutorial-import-certificate) your certificate files to the key vault. -3. Add an access policy to the key vault that grants your registry's identity access to `get` certificates:\ - `az keyvault set-policy --name --certificate-permissions get --spn ` +2. [Import](https://docs.microsoft.com/en-us/azure/key-vault/certificates/tutorial-import-certificate) certificate PEM files you created to the key vault. Alternatively, generate certificates in the key vault. +3. Add an access policy to the key vault that grants your registry's identity access to `get` secrets. This policy enables the registry to access the private key portion of the certificate, which is addressed as a secret.\ + `az keyvault set-policy --name --secret-permissions get --spn ` - The output of the command to enable managed identities on the registry contains the principal IDs of the assiged identity or identities. - Alternatively, you may obtain the principal IDs using the Azure CLI: - For system-assigned managed identity: @@ -114,12 +117,12 @@ Azure Key Vault allows you to [restrict access](https://docs.microsoft.com/azure - The output of the command to enable data endpoints on the registry will contain the regional data endpoint. ## Contact Azure support -As a final step, share the following with us by creating an [Azure Support](https://azure.microsoft.com/support/create-ticket/) ticket. This information is needed to complete the custom domain configuration. -- Custom registry domain details +As a final step, share the following information with us by creating an [Azure Support](https://azure.microsoft.com/support/create-ticket/) ticket. This information is needed to complete the custom domain configuration. +- **Custom registry domain details** - custom registry domain name (`container-registry.contoso.com`) - - key vault certificate ID of the corresponding TLS data (a URI of the form `https://myvaultvault.azure.net/certificates/mycertificate/xxxxxxxxxxxxx`) + - key vault secret ID of the corresponding TLS data (a URI of the form `https://myvaultvault.azure.net/secrets/myregdomain/xxxxxxxxxxxxx`) - client ID of the user-assigned registry identity that has access to this secret (not required in case of system-assigned identity) -- Custom data domain details (for each data domain) +- **Custom data domain details, for each data domain** - regional custom data domain name (`eastus-registry-data.contoso.com`) - - key vault certficate ID of the corresponding TLS data (a URI of the form `https://myvaultvault.azure.net/certificates/mycertificate/xxxxxxxxxxxxx`) + - key vault secret ID of the corresponding TLS data (a URI of the form `https://myvaultvault.azure.net/secrets/myregdomain/xxxxxxxxxxxxx`) - client ID of the user-assigned registry identity that has access to this secret (not required in case of system-assigned identiity) From 03a89f378a6cf01beb593b0de158ad88704b2fb8 Mon Sep 17 00:00:00 2001 From: dlepow Date: Thu, 25 Feb 2021 09:11:16 -0800 Subject: [PATCH 05/51] review comments --- docs/custom-domain/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/custom-domain/README.md b/docs/custom-domain/README.md index fdb4a9b..b0ff4dd 100644 --- a/docs/custom-domain/README.md +++ b/docs/custom-domain/README.md @@ -9,16 +9,16 @@ By default, every Azure container registry is accessed externally using its logi ## Limitations * This capability is provided without a service level agreement, and isn't currently recommended for production workloads. -* Azure Container Registry custom domains can't currently be used where key vault access is restricted. +* Azure Container Registry custom domains can't currently be configured using an Azure key vault deployed in a virtual network with a Key Vault firewall. ## Prerequisites - [Azure CLI](https://docs.microsoft.com/cli/azure/): version 2.4.0 or higher, or use [Azure Cloud Shell](https://docs.microsoft.com/azure/cloud-shell/overview) - An Azure container registry in the Premium service tier. See [this article](https://docs.microsoft.com/azure/container-registry/container-registry-get-started-azure-cli) for instructions to create one. If you have an existing registry, you can [upgrade](https://docs.microsoft.com/azure/container-registry/container-registry-skus#changing-tiers). - Your custom domain names. The following two are required: - - Custom registry domain to access the registry REST API. Example for the `contoso.com` domain: `container-registry.contoso.com` - - Custom data domain to access the registry content. Example for `contoso.com`: `eastus-registry-data.contoso.com` + - Custom domain to access the registry REST API endpoint. Example for the `contoso.com` domain: `registry.contoso.com` + - Custom domain to access the registry data endpoint. Example for `contoso.com`: `eastus.data.registry.contoso.com` - **Note** - The custom data domain is region specific. If your registry is geo-replicated, each region should have its own custom data domain. + **Note** - The custom data domain is region specific. If your registry is geo-replicated, each region should have its own custom data domain. For example: `eastus.data.registry.contoso.com`, `westus.data.registry.contoso.com`. ## Prepare certificates From f64b6357658e7c43e977bda4c2878aa0bfc0c391 Mon Sep 17 00:00:00 2001 From: dlepow Date: Sun, 28 Feb 2021 21:21:37 -0800 Subject: [PATCH 06/51] key vault firewall --- docs/custom-domain/README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/custom-domain/README.md b/docs/custom-domain/README.md index b0ff4dd..d6d5c41 100644 --- a/docs/custom-domain/README.md +++ b/docs/custom-domain/README.md @@ -9,7 +9,6 @@ By default, every Azure container registry is accessed externally using its logi ## Limitations * This capability is provided without a service level agreement, and isn't currently recommended for production workloads. -* Azure Container Registry custom domains can't currently be configured using an Azure key vault deployed in a virtual network with a Key Vault firewall. ## Prerequisites - [Azure CLI](https://docs.microsoft.com/cli/azure/): version 2.4.0 or higher, or use [Azure Cloud Shell](https://docs.microsoft.com/azure/cloud-shell/overview) @@ -63,7 +62,7 @@ You need to enable two features on your registry: - [Managed identities](https://docs.microsoft.com/azure/active-directory/managed-identities-azure-resources/overview) - Managed identities associate an Azure Active Directory identity with your registry, relieving you of the burden of managing credentials to access certain Azure resources. - Azure Container Registry supports both user-assigned and system-assigned managed identities. We recommend using a system-assigned managed identity to access secrets for a custom domain managed in Azure Key Vault. + Azure Container Registry supports both user-assigned and system-assigned managed identities. We recommend using a system-assigned managed identity to access secrets for a custom domain managed in Azure Key Vault. ### Enable data endpoints and managed identities @@ -107,7 +106,9 @@ For each domain, the corresponding TLS private key and public certificate pair m For greater isolation, we recommend that you put each certificate in its own key vault and set its access policy independently. The registry should always have access to the key vault certficates. ### Enhanced security with virtual networks -Azure Key Vault allows you to [restrict access](https://docs.microsoft.com/azure/key-vault/key-vault-overview-vnet-service-endpoints) to specific virtual networks only. Azure Container Registry custom domains can't currently be used where key vault access is restricted. This work is in progress and will be available with system-managed identities only. +Azure Key Vault allows you to [restrict access](https://docs.microsoft.com/azure/key-vault/key-vault-overview-vnet-service-endpoints) to specific virtual networks only. Azure Container Registry can access a key vault that has restricted network access with the following configuration: +* the key vault must [allow trusted services](https://docs.microsoft.com/azure/key-vault/general/network-security#key-vault-firewall-enabled-trusted-services-only) to bypass the Key Vault firewall +* the container registry must use a system-assigned managed identity to access secrets in the key vault ## Prepare your DNS zone 1. The custom registry domain must have a CNAME record with the target registry login server:\ From 5fe489e3128d47935f5e443db6e1c3fc6e2754fe Mon Sep 17 00:00:00 2001 From: dlepow Date: Thu, 11 Mar 2021 17:18:59 -0800 Subject: [PATCH 07/51] revert --> private preview --- docs/custom-domain/README.md | 146 ++++++++++++++--------------------- 1 file changed, 60 insertions(+), 86 deletions(-) diff --git a/docs/custom-domain/README.md b/docs/custom-domain/README.md index d6d5c41..ee04e06 100644 --- a/docs/custom-domain/README.md +++ b/docs/custom-domain/README.md @@ -1,29 +1,29 @@ -# Use a custom domain with Azure Container Registry (private preview) +# Using Custom Domains with Azure Container Registry -This article describes the steps to set up the endpoints of an Azure container registry using your own custom domain name, such as **contoso.com**. +**Important - Using a custom domain in Azure Container Registry is a private preview feature.** -By default, every Azure container registry is accessed externally using its login server name. If you have a registry called `myregistry`, you access it using its default hostname, `myregistry.azurecr.io` (in the Azure Cloud). As a customer belonging to an organization, you may prefer to access your registry using a custom domain name that is associated with your organization, for example, `myregistry.contoso.com`. +**The Azure Container Registry team is not currently accepting new customers for this private preview. The feature will be made more widely available in the future.** -**Important - Using a custom domain name in Azure Container Registry is currently a private preview feature**. It can only be enabled by preparing certificates, a Premium container registry, and an Azure key vault as described in this article, and then opening an Azure support request to complete the configuration. +**If your registry has already been enabled for a custom domain and you need support, please open an issue in this repository.** -## Limitations +Every ACR is accessed using its login server. If you have a registry called `myregistry`, you access it using its default hostname, `myregistry.azurecr.io` (in Azure Public Cloud.) As a customer belonging to an organization, you may prefer to access your registry using a custom domain that is associated with your organization, for instance, `container-registry.contoso.com`. -* This capability is provided without a service level agreement, and isn't currently recommended for production workloads. +The following steps describe how you can achieve this. + +**The following sections describe preparation steps for the private preview. They are not sufficient to enable a custom domain for your registry without acceptance into the private preview.** ## Prerequisites -- [Azure CLI](https://docs.microsoft.com/cli/azure/): version 2.4.0 or higher, or use [Azure Cloud Shell](https://docs.microsoft.com/azure/cloud-shell/overview) -- An Azure container registry in the Premium service tier. See [this article](https://docs.microsoft.com/azure/container-registry/container-registry-get-started-azure-cli) for instructions to create one. If you have an existing registry, you can [upgrade](https://docs.microsoft.com/azure/container-registry/container-registry-skus#changing-tiers). +- [Azure CLI](https://docs.microsoft.com/cli/azure/?view=azure-cli-latest): version 2.4.0 or higher + - Consider using [Azure Cloud Shell](https://docs.microsoft.com/azure/cloud-shell/overview) +- A _premium_ Azure Container Registry. See [here](https://docs.microsoft.com/azure/container-registry/container-registry-get-started-azure-cli) for instructions on how to create one. - Your custom domain names. The following two are required: - - Custom domain to access the registry REST API endpoint. Example for the `contoso.com` domain: `registry.contoso.com` - - Custom domain to access the registry data endpoint. Example for `contoso.com`: `eastus.data.registry.contoso.com` + - Custom registry domain to access the registry REST API. Example for the `contoso.com` domain: `container-registry.contoso.com` + - Custom data domain to access the registry content. Again, example for `contoso.com`: `eastus-registry-data.contoso.com` + - Note that the custom data domain is region specific. For geo-replicated registries, each region should have its own custom data endpoint. - **Note** - The custom data domain is region specific. If your registry is geo-replicated, each region should have its own custom data domain. For example: `eastus.data.registry.contoso.com`, `westus.data.registry.contoso.com`. - -## Prepare certificates + For each domain, you must prepare a single PEM formatted file containing the TLS private key and public certificate: -For each domain, prepare a single PEM-formatted file containing the TLS private key and public certificate. The private key must be exportable. - - ``` + ``` -----BEGIN PRIVATE KEY----- ..... -----END PRIVATE KEY----- @@ -31,99 +31,73 @@ For each domain, prepare a single PEM-formatted file containing the TLS private ..... -----END CERTIFICATE----- ``` - -You may use your own valid certificates signed by a certificate authority (CA) or self-signed certificates. Self-signed certificates should only be used for test and evaluation purposes. -To create self-signed certificates: -1. Use [openssl](https://github.com/openssl/openssl) to create a self-signed public certificate and private key. - - ```shell + For example, using [openssl](https://github.com/openssl/openssl): + - Create a self-signed public cert and private key + ```shell openssl req -nodes -x509 -newkey rsa:4096 \ -keyout container-registry.contoso.com.key.pem \ -out container-registry.contoso.com.cert.pem -days 365 \ -subj '/CN=container-registry.contoso.com/O=Contoso./C=US' - ``` - -2. Create a single file containing both the public certificate and private key. - ```shell - cat container-registry.contoso.com.key.pem \ - >> container-registry-contoso-com.pem - cat container-registry.contoso.com.cert.pem \ - >> container-registry-contoso-com.pem ``` - 3. For each data domain in your registry, repeat the preceding steps to prepare a PEM-formatted file containing the public certificate and private key. + - Create a single file containing both the public certificate and private key + ```shell + cat container-registry.contoso.com.key.pem \ + >> container-registry-contoso-com-pem + cat container-registry.contoso.com.cert.pem \ + >> container-registry-contoso-com-pem + ``` + - For each data domain, follow the same steps above to prepare the PEM formatted files containing the public certificate and private key. -You can also use Azure Key Vault to [create](https://docs.microsoft.com/azure/key-vault/certificate-scenarios) CA-signed certificates. If you choose to use the Azure Portal to create the certificates, be sure to select the PEM content type for each certificate. + Azure Key Vault allows you to [create](https://docs.microsoft.com/azure/key-vault/certificate-scenarios) Certificate Authority (CA) signed certificates. + - If you choose to use the Azure Portal to create the certificates, be sure to select certificate content type as PEM. ## Prepare your existing registry - -You need to enable two features on your registry: -- [Dedicated data endpoints](https://docs.microsoft.com/azure/container-registry/container-registry-firewall-access-rules#enable-dedicated-data-endpoints) - If you have a registry in East US, after enabling this feature, a data endpoint is automatically created for you: `myregistry.eastus.data.azurecr.io` +We will enable two features on your registry: +- Data Endpoints:\ + This feature provides a dedicated endpoint for downloading content from your registry. If you have a registry in East US, on enabling this feature, a data endpoint is automatically created for you: `myregistry.eastus.data.azurecr.io` -- [Managed identities](https://docs.microsoft.com/azure/active-directory/managed-identities-azure-resources/overview) - Managed identities associate an Azure Active Directory identity with your registry, relieving you of the burden of managing credentials to access certain Azure resources. - - Azure Container Registry supports both user-assigned and system-assigned managed identities. We recommend using a system-assigned managed identity to access secrets for a custom domain managed in Azure Key Vault. +- ACR Managed Identities:\ + Managed Identities provide a mechanism to associate an Azure Active Directory identity with your registry, while relieving you of the burden of managing credentials. To learn more, see the documentation [here](https://docs.microsoft.com/azure/active-directory/managed-identities-azure-resources/overview).\ + ACR supports both user assigned and system assigned managed identities. -### Enable data endpoints and managed identities - -Use the Azure CLI: +### Enable data endpoints and managed idenitites 1. `az login` 2. `az account set -s ` -3. To enable dedicated data endpoints: +3. `az acr update --data-endpoint-enabled true -n myregistry` +4. You can either enable a system assigned managed identity, a user assigned managed identity, or both for your registry. We recommend using system assigned managed identity to enable advanced scenarios with virtual networks that, although not supported currently, are [coming soon](#enhanced-security-with-virtual-networks). Do _one_ of the following: + - To enable only system assigned managed identity: + - `az acr identity assign -n myregistry --identities [system]` + - To enable user assigned managed identity, with or without a system identity: + - Create a user assigned managed identity following the instructions [here](https://docs.microsoft.com/azure/active-directory/managed-identities-azure-resources/how-to-manage-ua-identity-portal). + - Do _one_ of the following: + - To enable _only_ user assigned managed identity: + - `az acr identity assign -n myregistry --identities ""` + - To enable _both_ user and system assigned managed identities: + - `az acr identity assign -n myregistry --identities "" [system]` - `az acr update --data-endpoint-enabled true -n myregistry` -1. To enable a managed identity, do _one_ of the following: - - To enable only the system-assigned managed identity: - - `az acr identity assign -n myregistry --identities [system]` - - To enable a user-assigned managed identity, with or without a system-assigned identity: - - [Create](https://docs.microsoft.com/azure/active-directory/managed-identities-azure-resources/how-to-manage-ua-identity-portal) a user-assigned managed identity. - - Get the resource ID of the user-assigned identity. - - In the portal, go to the identity and select **Properties** under **Settings**. - - Alternatively, you may obtain the resource ID using the `az identity show` command in the Azure CLI. - - Do _one_ of the following: - - To enable _only_ the user-assigned managed identity: - - `az acr identity assign -n myregistry --identities ""` - - To enable _both_ user- and system-assigned managed identities: - - `az acr identity assign -n myregistry --identities "" [system]` - -## Prepare your Azure key vault - -For each domain, the corresponding TLS private key and public certificate pair must be added as a PEM-formatted file to an Azure key vault that is accessible by your registry. We recommend creating a new key vault containing only your TLS certificates and granting the registry's identity access to `get` secrets. -1. [Create](https://docs.microsoft.com/azure/key-vault/) a new Azure key vault. -2. [Import](https://docs.microsoft.com/en-us/azure/key-vault/certificates/tutorial-import-certificate) certificate PEM files you created to the key vault. Alternatively, generate certificates in the key vault. -3. Add an access policy to the key vault that grants your registry's identity access to `get` secrets. This policy enables the registry to access the private key portion of the certificate, which is addressed as a secret.\ +## Prepare your Azure Key Vault +For each domain, its TLS private key and public certificate pair must be added to an Azure Key Vault that is accessible by your registry as a single PEM formatted file. We recommend creating a new key vault containing only your TLS certificates and granting the registry's identity access to `get` secret. +1. [Create](https://docs.microsoft.com/azure/key-vault/) a new Azure Key Vault. +2. [Add](https://docs.microsoft.com/azure/key-vault/certificate-scenarios) your certificates to the key vault. +3. Add an access policy to the key vault that grants your registry's identity access to `get` secret:\ `az keyvault set-policy --name --secret-permissions get --spn ` - - The output of the command to enable managed identities on the registry contains the principal IDs of the assiged identity or identities. - - Alternatively, you may obtain the principal IDs using the Azure CLI: - - For system-assigned managed identity: + - The output of the command to enable managed identities on the registry will contain the principal ids of the assiged identities. + - Alternatively, you may obtain the principal ids using `az cli`: + - For system assigned managed identity: - `az acr show -n myregistry --query identity.principalId -o tsv` - - For user-assigned managed identities, you may list them as follows and use the desired principal ID: + - For user assigned managed identities, you may list them as follows and use the desired principal ID: - `az acr show -n myregistry --query identity.userAssignedIdentities` -For greater isolation, we recommend that you put each certificate in its own key vault and set its access policy independently. The registry should always have access to the key vault certficates. +For greater isolation, we recommend that you put each certificate in its own key vault and set its access policy independently. The registry should always have access to the key vault secrets. -### Enhanced security with virtual networks -Azure Key Vault allows you to [restrict access](https://docs.microsoft.com/azure/key-vault/key-vault-overview-vnet-service-endpoints) to specific virtual networks only. Azure Container Registry can access a key vault that has restricted network access with the following configuration: -* the key vault must [allow trusted services](https://docs.microsoft.com/azure/key-vault/general/network-security#key-vault-firewall-enabled-trusted-services-only) to bypass the Key Vault firewall -* the container registry must use a system-assigned managed identity to access secrets in the key vault +### Enhanced security with Virtual Networks +Azure Key Vault allows you to [restrict access](https://docs.microsoft.com/azure/key-vault/key-vault-overview-vnet-service-endpoints) to specific virtual networks only. ACR custom domains are currently _not supported_ where key vault access is restricted, but this is work in progress and will be available with system managed identities only. ## Prepare your DNS zone 1. The custom registry domain must have a CNAME record with the target registry login server:\ `container-registry.contoso.com` --> `myregistry.azurecr.io` -2. Each regional custom data domain must have a CNAME record with the target regional registry data endpoint:\ +2. The regional custom data domain must have a CNAME record with the target regional registry data endpoint:\ `eastus-registry-data.contoso.com` --> `myregistry.eastus.data.azurecr.io` - The output of the command to enable data endpoints on the registry will contain the regional data endpoint. -## Contact Azure support -As a final step, share the following information with us by creating an [Azure Support](https://azure.microsoft.com/support/create-ticket/) ticket. This information is needed to complete the custom domain configuration. -- **Custom registry domain details** - - custom registry domain name (`container-registry.contoso.com`) - - key vault secret ID of the corresponding TLS data (a URI of the form `https://myvaultvault.azure.net/secrets/myregdomain/xxxxxxxxxxxxx`) - - client ID of the user-assigned registry identity that has access to this secret (not required in case of system-assigned identity) -- **Custom data domain details, for each data domain** - - regional custom data domain name (`eastus-registry-data.contoso.com`) - - key vault secret ID of the corresponding TLS data (a URI of the form `https://myvaultvault.azure.net/secrets/myregdomain/xxxxxxxxxxxxx`) - - client ID of the user-assigned registry identity that has access to this secret (not required in case of system-assigned identiity) From 88636c0a793c006b3f802894b2c9c34b8d4fa375 Mon Sep 17 00:00:00 2001 From: Yugang Wang Date: Fri, 19 Mar 2021 15:45:58 -0700 Subject: [PATCH 08/51] doc: update oauth token claim sets --- docs/AAD-OAuth.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/docs/AAD-OAuth.md b/docs/AAD-OAuth.md index 77bfd71..7f2bf2a 100644 --- a/docs/AAD-OAuth.md +++ b/docs/AAD-OAuth.md @@ -70,15 +70,15 @@ Internally, the CLI will follow these steps: When listing the tags of a repository, every step above is the same except for the call to the endpoint that gives the tags which is `GET /v2/contosoregistry/tags/list` instead of `GET /v2/_catalog`. -# Azure Container Registry refresh tokens and access tokens +# Azure Container Registry token claim sets -Let's follow an example call to list a repository: +Following the command of repository list in the previous section: ```bash az acr repository list -n contosoregistry ``` -This will produce a JWT refresh token with the following payload: +A JWT refresh token extracted at step 5 has the following claim set: ```json { @@ -90,19 +90,19 @@ This will produce a JWT refresh token with the following payload: "iss": "Azure Container Registry", "aud": "contosoregistry.azurecr.io", "version": "1.0", - "grant_type": "access_token_refresh_token", + "grant_type": "refresh_token", "tenant": "409520d4-8100-4d1d-ad47-72432ddcc120", - "credential": "AQA...iAA", "permissions": { "actions": [ "*" ], "notActions": [] - } + }, + "roles": [] } ``` -Followed by an access token with the following payload: +Followed by an access token at step 7 with the following claim set: ```json { @@ -113,6 +113,7 @@ Followed by an access token with the following payload: "iat": 1497988907, "iss": "Azure Container Registry", "aud": "contosoregistry.azurecr.io", + "version": "1.0", "access": [ { "type": "registry", @@ -121,7 +122,9 @@ Followed by an access token with the following payload: "*" ] } - ] + ], + "roles": [], + "grant_type": "access_token" } ``` From 8f53db4141a44a5560d36c964c06d9020ca2bfd1 Mon Sep 17 00:00:00 2001 From: Huangli Wu Date: Wed, 14 Apr 2021 17:49:10 -0700 Subject: [PATCH 09/51] Document the steps on how to deplpy api proxy. Update some versions. --- ...-deploy-connected-registry-iot-edge-cli.md | 137 +++++++++++++++++- 1 file changed, 133 insertions(+), 4 deletions(-) diff --git a/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md b/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md index 0ab4948..53133c0 100644 --- a/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md +++ b/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md @@ -25,7 +25,21 @@ In this quickstart, you use [Azure Container Registry][container-registry-intro] ## Before you begin -This tutorial requires an Azure IoT Edge device to be set up upfront. You can use the [Deploy your first IoT Edge module to a virtual Linux device](../iot-edge/quickstart-linux.md) quickstart guide to learn how to deploy a virtual IoT Edge device. The connected registry is deployed as a module on the IoT Edge device. +This tutorial requires an Azure IoT Edge device to be set up upfront. You can use the [Deploy your first IoT Edge module to a virtual Linux device](../iot-edge/quickstart-linux.md) quickstart guide to learn how to deploy a virtual IoT Edge device. The connected registry is deployed as a module on the IoT Edge device. + +To install the latest 1.2 version of iotedge agent, login to the IoT device, open `/etc/iotedge/config.yaml`, search the section for `edgeAgent`, update the image version to 1.2.0 as the following. + +``` +agent: + name: "edgeAgent" + type: "docker" + env: {} + config: + image: "mcr.microsoft.com/azureiotedge-agent:1.2.0" + auth: {} +``` + +Save the config and restart the module using command `sudo systemctl restart iotedge`. Also, make sure that you have created the connected registry resource in Azure as described in the [Create connected registry using the CLI][quickstart-connected-registry-cli] quickstart guide. Both, `registry` and `mirror` modes will work for this scenario. @@ -36,7 +50,7 @@ To support nested IoT Edge scenarios, the container image for the connected regi ```azurecli az acr import \ --name mycontainerregistry001 \ - --source mcr.microsoft.com/acr/connected-registry:0.1.0 + --source mcr.microsoft.com/acr/connected-registry:0.2.0 ``` To learn more about nested IoT Edge scenarios, please visit [Tutorial: Create a hierarchy of IoT Edge devices (Preview)](../iot-edge/tutorial-nested-iot-edge.md). @@ -149,7 +163,7 @@ To deploy the connected registry module using the Azure CLI, save the following "modules": { "connected-registry": { "settings": { - "image": "mycontainerregistry001.azurecr.io/acr/connected-registry:0.1.0", + "image": "mycontainerregistry001.azurecr.io/acr/connected-registry:0.2.0", "createOptions": "{\"HostConfig\":{\"Binds\":[\"/home/azureuser/connected-registry:/var/acr/data\"],\"PortBindings\":{\"8080/tcp\":[{\"HostPort\":\"8080\"}]}}}" }, "type": "docker", @@ -198,7 +212,7 @@ To deploy the connected registry module using the Azure CLI, save the following "systemModules": { "edgeAgent": { "settings": { - "image": "mcr.microsoft.com/azureiotedge-agent:1.0", + "image": "mcr.microsoft.com/azureiotedge-agent:1.2", "createOptions": "" }, "type": "docker", @@ -266,6 +280,121 @@ az acr connected-registry show \ You may need to a wait few minutes until the deployment of the connected registry completes. +## Deploy the api proxy module on IoT Edge + +Add api proxy module from Azure Marketplace `IoT Edge API Proxy` + +Add the following two environment variables in addition to the existing ones: + +``` +"CONNECTED_ACR_ROUTE_ADDRESS": { + "value": "connected-registry:8080" +}, +"NGINX_CONFIG_ENV_VAR_LIST": { + "value": "NGINX_DEFAULT_PORT,BLOB_UPLOAD_ROUTE_ADDRESS,CONNECTED_ACR_ROUTE_ADDRESS,IOTEDGE_PARENTHOSTNAME,DOCKER_REQUEST_ROUTE_ADDRESS" +} +``` + +Update the proxy config for the connected registry following the steps: +- Click into the api proxy module from the portal. +- Click `Module Identity Twin` +- Add `proxy_config` in the desired propeties as the following. + +``` +"desired": { + "proxy_config": "ZXZlbnRzIHsgfQoKCmh0dHAgewogICAgcHJveHlfYnVmZmVycyAzMiAxNjBrOwogICAgcHJveHlfYnVmZmVyX3NpemUgMTYwazsKICAgIHByb3h5X3JlYWRfdGltZW91dCAzNjAwOwogICAgZXJyb3JfbG9nIC9kZXYvc3Rkb3V0IGluZm87CiAgICBhY2Nlc3NfbG9nIC9kZXYvc3Rkb3V0OwoKICAgIHNlcnZlciB7CiAgICAgICAgbGlzdGVuICR7TkdJTlhfREVGQVVMVF9QT1JUfSBzc2wgZGVmYXVsdF9zZXJ2ZXI7CgogICAgICAgIGNodW5rZWRfdHJhbnNmZXJfZW5jb2Rpbmcgb247CgogICAgICAgIHNzbF9jZXJ0aWZpY2F0ZSAgICAgICAgc2VydmVyLmNydDsKICAgICAgICBzc2xfY2VydGlmaWNhdGVfa2V5ICAgIHByaXZhdGVfa2V5X3NlcnZlci5wZW07CiAgICAgICAgc3NsX2NsaWVudF9jZXJ0aWZpY2F0ZSB0cnVzdGVkQ0EuY3J0OwogICAgICAgICNzc2xfdmVyaWZ5X2RlcHRoIDc7CiAgICAgICAgc3NsX3ZlcmlmeV9jbGllbnQgb3B0aW9uYWxfbm9fY2E7CgogICAgICAgICNpZl90YWcgJHtCTE9CX1VQTE9BRF9ST1VURV9BRERSRVNTfQogICAgICAgIGlmICgkaHR0cF94X21zX3ZlcnNpb24pCiAgICAgICAgewogICAgICAgICAgICByZXdyaXRlIF4oLiopJCAvc3RvcmFnZSQxIGxhc3Q7CiAgICAgICAgfQogICAgICAgICNlbmRpZl90YWcgJHtCTE9CX1VQTE9BRF9ST1VURV9BRERSRVNTfQogICAgICAgICNpZl90YWcgISR7QkxPQl9VUExPQURfUk9VVEVfQUREUkVTU30KICAgICAgICBpZiAoJGh0dHBfeF9tc192ZXJzaW9uKQogICAgICAgIHsKICAgICAgICAgICAgcmV3cml0ZSBeKC4qKSQgL3BhcmVudCQxIGxhc3Q7CiAgICAgICAgfQogICAgICAgICNlbmRpZl90YWcgJHtCTE9CX1VQTE9BRF9ST1VURV9BRERSRVNTfQoKICAgICAgICAjaWZfdGFnICR7QkxPQl9VUExPQURfUk9VVEVfQUREUkVTU30KICAgICAgICBsb2NhdGlvbiB+Xi9zdG9yYWdlLyguKil7CiAgICAgICAgICAgIHJlc29sdmVyIDEyNy4wLjAuMTE7CiAgICAgICAgICAgIHByb3h5X2h0dHBfdmVyc2lvbiAxLjE7CiAgICAgICAgICAgIHByb3h5X3Bhc3MgICAgICAgICAgaHR0cDovLyR7QkxPQl9VUExPQURfUk9VVEVfQUREUkVTU30vJDEkaXNfYXJncyRhcmdzOwogICAgICAgIH0KICAgICAgICAjZW5kaWZfdGFnICR7QkxPQl9VUExPQURfUk9VVEVfQUREUkVTU30KCiAgICAgICAgI2lmX3RhZyAke0NPTk5FQ1RFRF9BQ1JfUk9VVEVfQUREUkVTU30KICAgICAgICBsb2NhdGlvbiAvdjIgewogICAgICAgICAgICByZXNvbHZlciAxMjcuMC4wLjExOwogICAgICAgICAgICBwcm94eV9odHRwX3ZlcnNpb24gMS4xOwogICAgICAgICAgICBwcm94eV9wYXNzICAgICAgICAgaHR0cDovLyR7Q09OTkVDVEVEX0FDUl9ST1VURV9BRERSRVNTfTsKICAgICAgICAgICAgcHJveHlfc2V0X2hlYWRlciAgIFgtRm9yd2FyZGVkLUhvc3QgJGh0dHBfaG9zdDsKICAgICAgICAgICAgcHJveHlfc2V0X2hlYWRlciAgIFgtRm9yd2FyZGVkLVByb3RvICRzY2hlbWU7CiAgICAgICAgfQoKICAgICAgICBsb2NhdGlvbiAvYWNyIHsKICAgICAgICAgICAgcmVzb2x2ZXIgMTI3LjAuMC4xMTsKICAgICAgICAgICAgcHJveHlfaHR0cF92ZXJzaW9uIDEuMTsKICAgICAgICAgICAgcHJveHlfcGFzcyAgICAgICAgIGh0dHA6Ly8ke0NPTk5FQ1RFRF9BQ1JfUk9VVEVfQUREUkVTU307CiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgICBYLUZvcndhcmRlZC1Ib3N0ICRodHRwX2hvc3Q7CiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgICBYLUZvcndhcmRlZC1Qcm90byAkc2NoZW1lOwogICAgICAgIH0KICAgICAgICAjZW5kaWZfdGFnICR7Q09OTkVDVEVEX0FDUl9ST1VURV9BRERSRVNTfQoKICAgICAgICAjaWZfdGFnICR7SU9URURHRV9QQVJFTlRIT1NUTkFNRX0KICAgICAgICBsb2NhdGlvbiB+Xi9wYXJlbnQvKC4qKSB7CiAgICAgICAgICAgIHByb3h5X2h0dHBfdmVyc2lvbiAxLjE7CiAgICAgICAgICAgIHJlc29sdmVyIDEyNy4wLjAuMTE7CiAgICAgICAgICAgICNwcm94eV9zc2xfY2VydGlmaWNhdGUgICAgIGlkZW50aXR5LmNydDsKICAgICAgICAgICAgI3Byb3h5X3NzbF9jZXJ0aWZpY2F0ZV9rZXkgcHJpdmF0ZV9rZXlfaWRlbnRpdHkucGVtOwogICAgICAgICAgICBwcm94eV9zc2xfdHJ1c3RlZF9jZXJ0aWZpY2F0ZSB0cnVzdGVkQ0EuY3J0OwogICAgICAgICAgICBwcm94eV9zc2xfdmVyaWZ5X2RlcHRoIDc7CiAgICAgICAgICAgIHByb3h5X3NzbF92ZXJpZnkgICAgICAgb247CiAgICAgICAgICAgIHByb3h5X3Bhc3MgICAgICAgICAgaHR0cHM6Ly8ke0lPVEVER0VfUEFSRU5USE9TVE5BTUV9OiR7TkdJTlhfREVGQVVMVF9QT1JUfS8kMSRpc19hcmdzJGFyZ3M7CiAgICAgICAgfQogICAgICAgICNlbmRpZl90YWcgJHtJT1RFREdFX1BBUkVOVEhPU1ROQU1FfQoKICAgICAgICBsb2NhdGlvbiB+Xi9kZXZpY2VzfHR3aW5zLyB7CiAgICAgICAgICAgIHByb3h5X2h0dHBfdmVyc2lvbiAgMS4xOwogICAgICAgICAgICBwcm94eV9zc2xfdmVyaWZ5ICAgIG9mZjsKICAgICAgICAgICAgcHJveHlfc2V0X2hlYWRlciAgICB4LW1zLWVkZ2UtY2xpZW50Y2VydCAgICAkc3NsX2NsaWVudF9lc2NhcGVkX2NlcnQ7CiAgICAgICAgICAgIHByb3h5X3Bhc3MgICAgICAgICAgaHR0cHM6Ly9lZGdlSHViOwogICAgICAgIH0KICAgIH0KfQ==", + + "$metadata": {...} +``` +The value of the proxy_config is the base64 encoded string of the following nginx config. + +``` json +{ + "modulesContent": { + "$edgeAgent": { + "properties.desired": { + "schemaVersion": "1.1", + "runtime": {...}, + "systemModules": {...} + "modules": { + "connected-registry": { + "settings": { + "image": "mcr.microsoft.com/acr/connected-registry", + "createOptions": "{\"HostConfig\":{\"Binds\":[\":/var/acr/data\"]}}" + }, + "type": "docker", + "version": "1.0", + "env": { + "ACR_REGISTRY_NAME": { + "value": "" + }, + "ACR_PARENT_GATEWAY_ENDPOINT": { + "value": "acr.westus.data.azurecr.io" + }, + "ACR_PARENT_LOGIN_SERVER": { + "value": "acr.azurecr.io" + }, + "ACR_SYNC_TOKEN_NAME": { + "value": "" + }, + "ACR_SYNC_TOKEN_PASSWORD": { + "value": "" + }, + "ACR_REGISTRY_LOGIN_SERVER": { + "value": "iot-edge-device" + }, + "ACR_PARENT_PROTOCOL": { + "value": "https" + } + }, + "status": "running", + "restartPolicy": "always" + }, + "IoTEdgeAPIProxy": { + "settings": { + "image": "mcr.microsoft.com/azureiotedge-api-proxy", + "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"8000/tcp\":[{\"HostPort\":\"8000\"}]}}}" + }, + "type": "docker", + "version": "1.0", + "env": { + "NGINX_DEFAULT_PORT": { + "value": "8000" + }, + "NGINX_CONFIG_ENV_VAR_LIST": { + "value": "NGINX_DEFAULT_PORT,BLOB_UPLOAD_ROUTE_ADDRESS,CONNECTED_ACR_ROUTE_ADDRESS,IOTEDGE_PARENTHOSTNAME" + }, + "CONNECTED_ACR_ROUTE_ADDRESS": { + "value": "connected-registry:8080" + } + }, + "status": "running", + "restartPolicy": "always" + } + }, + } + }, + "$edgeHub": {...}, + "connected-acr": { + "properties.desired": {} + }, + "IoTEdgeAPIProxy": { + "properties.desired": { + "proxy_config": "" + } + } + } +} +``` + +- Click 'Save' + +Make sure you open the the ports `8000`, `443`, `5671`, `8883`. + +The api proxy will now listen on port 8000 configued as `NGINX_DEFAULT_PORT`. + +You can find more information about API Proxy in the [https://github.com/Azure/iotedge/tree/master/edge-modules/api-proxy-module] + ## Next steps In this quickstart, you learned how to deploy a connected registry to an IoT Edge device. Continue to the next guide to learn how to pull images from the newly deployed connected registry. From f1525355b1cd5c37f21659b7f506a23ab394abb5 Mon Sep 17 00:00:00 2001 From: Huangli Wu Date: Thu, 15 Apr 2021 17:02:18 -0700 Subject: [PATCH 10/51] update the ngnix config. --- ...-deploy-connected-registry-iot-edge-cli.md | 153 +++++++++--------- 1 file changed, 79 insertions(+), 74 deletions(-) diff --git a/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md b/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md index 53133c0..01349f4 100644 --- a/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md +++ b/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md @@ -308,80 +308,85 @@ Update the proxy config for the connected registry following the steps: ``` The value of the proxy_config is the base64 encoded string of the following nginx config. -``` json -{ - "modulesContent": { - "$edgeAgent": { - "properties.desired": { - "schemaVersion": "1.1", - "runtime": {...}, - "systemModules": {...} - "modules": { - "connected-registry": { - "settings": { - "image": "mcr.microsoft.com/acr/connected-registry", - "createOptions": "{\"HostConfig\":{\"Binds\":[\":/var/acr/data\"]}}" - }, - "type": "docker", - "version": "1.0", - "env": { - "ACR_REGISTRY_NAME": { - "value": "" - }, - "ACR_PARENT_GATEWAY_ENDPOINT": { - "value": "acr.westus.data.azurecr.io" - }, - "ACR_PARENT_LOGIN_SERVER": { - "value": "acr.azurecr.io" - }, - "ACR_SYNC_TOKEN_NAME": { - "value": "" - }, - "ACR_SYNC_TOKEN_PASSWORD": { - "value": "" - }, - "ACR_REGISTRY_LOGIN_SERVER": { - "value": "iot-edge-device" - }, - "ACR_PARENT_PROTOCOL": { - "value": "https" - } - }, - "status": "running", - "restartPolicy": "always" - }, - "IoTEdgeAPIProxy": { - "settings": { - "image": "mcr.microsoft.com/azureiotedge-api-proxy", - "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"8000/tcp\":[{\"HostPort\":\"8000\"}]}}}" - }, - "type": "docker", - "version": "1.0", - "env": { - "NGINX_DEFAULT_PORT": { - "value": "8000" - }, - "NGINX_CONFIG_ENV_VAR_LIST": { - "value": "NGINX_DEFAULT_PORT,BLOB_UPLOAD_ROUTE_ADDRESS,CONNECTED_ACR_ROUTE_ADDRESS,IOTEDGE_PARENTHOSTNAME" - }, - "CONNECTED_ACR_ROUTE_ADDRESS": { - "value": "connected-registry:8080" - } - }, - "status": "running", - "restartPolicy": "always" - } - }, - } - }, - "$edgeHub": {...}, - "connected-acr": { - "properties.desired": {} - }, - "IoTEdgeAPIProxy": { - "properties.desired": { - "proxy_config": "" - } +``` nginx +events { } + + +http { + proxy_buffers 32 160k; + proxy_buffer_size 160k; + proxy_read_timeout 3600; + error_log /dev/stdout info; + access_log /dev/stdout; + + server { + listen ${NGINX_DEFAULT_PORT} ssl default_server; + + chunked_transfer_encoding on; + + ssl_certificate server.crt; + ssl_certificate_key private_key_server.pem; + ssl_client_certificate trustedCA.crt; + #ssl_verify_depth 7; + ssl_verify_client optional_no_ca; + + #if_tag ${BLOB_UPLOAD_ROUTE_ADDRESS} + if ($http_x_ms_version) + { + rewrite ^(.*)$ /storage$1 last; + } + #endif_tag ${BLOB_UPLOAD_ROUTE_ADDRESS} + #if_tag !${BLOB_UPLOAD_ROUTE_ADDRESS} + if ($http_x_ms_version) + { + rewrite ^(.*)$ /parent$1 last; + } + #endif_tag ${BLOB_UPLOAD_ROUTE_ADDRESS} + + #if_tag ${BLOB_UPLOAD_ROUTE_ADDRESS} + location ~^/storage/(.*){ + resolver 127.0.0.11; + proxy_http_version 1.1; + proxy_pass http://${BLOB_UPLOAD_ROUTE_ADDRESS}/$1$is_args$args; + } + #endif_tag ${BLOB_UPLOAD_ROUTE_ADDRESS} + + #if_tag ${CONNECTED_ACR_ROUTE_ADDRESS} + location /v2 { + resolver 127.0.0.11; + proxy_http_version 1.1; + proxy_pass http://${CONNECTED_ACR_ROUTE_ADDRESS}; + proxy_set_header X-Forwarded-Host $http_host; + proxy_set_header X-Forwarded-Proto $scheme; + } + + location /acr { + resolver 127.0.0.11; + proxy_http_version 1.1; + proxy_pass http://${CONNECTED_ACR_ROUTE_ADDRESS}; + proxy_set_header X-Forwarded-Host $http_host; + proxy_set_header X-Forwarded-Proto $scheme; + } + #endif_tag ${CONNECTED_ACR_ROUTE_ADDRESS} + + #if_tag ${IOTEDGE_PARENTHOSTNAME} + location ~^/parent/(.*) { + proxy_http_version 1.1; + resolver 127.0.0.11; + #proxy_ssl_certificate identity.crt; + #proxy_ssl_certificate_key private_key_identity.pem; + proxy_ssl_trusted_certificate trustedCA.crt; + proxy_ssl_verify_depth 7; + proxy_ssl_verify on; + proxy_pass https://${IOTEDGE_PARENTHOSTNAME}:${NGINX_DEFAULT_PORT}/$1$is_args$args; + } + #endif_tag ${IOTEDGE_PARENTHOSTNAME} + + location ~^/devices|twins/ { + proxy_http_version 1.1; + proxy_ssl_verify off; + proxy_set_header x-ms-edge-clientcert $ssl_client_escaped_cert; + proxy_pass https://edgeHub; } } } From 8b55bf0bb4c1d66fc65a61dba4f67fd0b9bba469 Mon Sep 17 00:00:00 2001 From: Toddy Mladenov Date: Thu, 29 Apr 2021 17:28:53 -0700 Subject: [PATCH 11/51] Added article for nested connected registry --- ...verview-connected-registry-and-iot-edge.md | 5 +- ...-deploy-connected-registry-iot-edge-cli.md | 5 +- ...-connected-registry-nested-iot-edge-cli.md | 273 ++++++++++++++++++ 3 files changed, 281 insertions(+), 2 deletions(-) create mode 100644 docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md diff --git a/docs/preview/connected-registry/overview-connected-registry-and-iot-edge.md b/docs/preview/connected-registry/overview-connected-registry-and-iot-edge.md index fd48938..2feba8c 100644 --- a/docs/preview/connected-registry/overview-connected-registry-and-iot-edge.md +++ b/docs/preview/connected-registry/overview-connected-registry-and-iot-edge.md @@ -42,7 +42,10 @@ In this overview, you learned about the use of the connected registry in hierarc > [Quickstart - Deploy a connected registry to an IoT Edge device][overview-connected-registry-and-iot-edge] +> [Quickstart: Deploy connected registry on nested IoT Edge device][quickstart-pull-images-from-connected-registry] + [quickstart-connected-registry-cli]:quickstart-connected-registry-cli.md [overview-connected-registry-and-iot-edge]:quickstart-deploy-connected-registry-iot-edge-cli.md -[tutorial-nested-iot-edge]: https://docs.microsoft.com/azure/iot-edge/tutorial-nested-iot-edge?view=iotedge-2020-11&tabs=azure-portal \ No newline at end of file +[tutorial-nested-iot-edge]: https://docs.microsoft.com/azure/iot-edge/tutorial-nested-iot-edge?view=iotedge-2020-11&tabs=azure-portal +[quickstart-connected-registry-nested]: quickstart-connected-registry-nested-iot-edge-cli.md \ No newline at end of file diff --git a/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md b/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md index 0ab4948..78e41dd 100644 --- a/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md +++ b/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md @@ -272,10 +272,13 @@ In this quickstart, you learned how to deploy a connected registry to an IoT Edg > [Quickstart: Pull images from a connected registry][quickstart-pull-images-from-connected-registry] +> [Quickstart: Deploy connected registry on nested IoT Edge device][quickstart-pull-images-from-connected-registry] + [az-acr-connected-registry-install]: https://docs.microsoft.com/cli/azure/acr/connected-registry/install?view=azure-cli-latest [az-acr-import]: https://docs.microsoft.com/cli/azure/acr?view=azure-cli-latest#az_acr_import [az-acr-token-credential-generate]: https://docs.microsoft.com/cli/azure/acr/token/credential?view=azure-cli-latest#az_acr_token_credential_generate [container-registry-intro]: container-registry-intro.md [quickstart-pull-images-from-connected-registry]: quickstart-pull-images-from-connected-registry.md -[quickstart-connected-registry-cli]: quickstart-connected-registry-cli.md \ No newline at end of file +[quickstart-connected-registry-cli]: quickstart-connected-registry-cli.md +[quickstart-connected-registry-nested]: quickstart-connected-registry-nested-iot-edge-cli.md \ No newline at end of file diff --git a/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md b/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md new file mode 100644 index 0000000..1baf096 --- /dev/null +++ b/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md @@ -0,0 +1,273 @@ +--- +title: Quickstart - Deploy a connected registry to a nested IoT Edge device +description: Use Azure Container Registry CLI commands and Azure portal to deploy a connected registry to a mested Azure IoT Edge device. +ms.topic: quickstart +ms.date: 04/28/2021 +ms.author: memladen +author: toddysm +ms.custom: +--- + +# Quickstart: Deploy a connected registry to a nested IoT Edge device + +In this quickstart, you use [Azure Container Registry][container-registry-intro] commands to deploy a connected registry to a nested Azure IoT Edge device. You can review the [ACR connected registry introduction](intro-connected-registry.md) for details about the connected registry feature of Azure Container Registry. + +[!INCLUDE [quickstarts-free-trial-note](../../includes/quickstarts-free-trial-note.md)] + +[!INCLUDE [azure-cli-prepare-your-environment.md](../../includes/azure-cli-prepare-your-environment.md)] + +## Before you begin + +This tutorial requires a nested Azure IoT Edge device to be set up upfront. You can use the [Deploy your first IoT Edge module to a virtual Linux device](../iot-edge/quickstart-linux.md) quickstart guide to learn how to deploy a virtual IoT Edge device. You can also look at [Tutorial: Create a hierarchy of IoT Edge devices](../iot-edge/tutorial-nested-iot-edge.md) to learn how to configure hierarchical IoT edge devices. The connected registry is deployed as a module on the nested IoT Edge device. + +This tutorial also requires that you have set up a connected registry on a top level IoT Edge device by following the [Quickstart: Deploy a connected registry to an IoT Edge device](quickstart-deploy-connected-registry-iot-edge-cli.md). + +Also, make sure that you have created the connected registry resource in Azure as described in the [Create connected registry using the CLI][quickstart-connected-registry-cli] quickstart guide. Only `mirror` mode will work for this scenario. + +## Create a client token for access to the parent registry + +The IoT Edge runtime will need to authenticate with the top level registry to pull the connected registry image and deploy it. First, use the following command to create a scope map for the connected registry image repository: + +```azurecli +az acr scope-map create \ + --description "Nested connected registry repo pull scope map." \ + --name nested-connected-registry-pull \ + --registry mycontainerregistry001 \ + --repository "acr/connected-registry" content/read +``` + +Next, use the following command to create a client token for the IoT Edge device and associate it to the scope map: + +```azurecli +az acr token create \ + --name nestedcrimagepulltoken \ + --registry mycontainerregistry001 \ + --scope-map connected-registry-pull +``` + +This command will print a JSON that will include credential information similar to the following: + +```json + ... + "credentials": { + "activeDirectoryObject": null, + "certificates": [], + "passwords": [ + { + "creationTime": "2020-12-10T00:06:15.356846+00:00", + "expiry": null, + "name": "password1", + "value": "$$$0meCoMPL3xP4$$W0rd001!@#$$" + }, + { + "creationTime": "2020-12-10T00:06:15.356846+00:00", + "expiry": null, + "name": "password2", + "value": "#$an0TH3rCoMPL3xP4ssW0rd002!#$" + } + ], + "username": "nestedcrimagepulltoken" + } + ... +``` + +You will need the `username` and one of the `passwords` values for the IoT Edge manifest below. + + > [!IMPORTANT] + > Make sure that you save the generated passwords. Those are one-time passwords and cannot be retrieved. You can generate new passwords using the [az acr token credential generate][az-acr-token-credential-generate] command. + +More details about tokens and scope maps are available in [Create a token with repository-scoped permissions](container-registry-repository-scoped-permissions.md). + +Last, add the client token to the top level connected registry using the following command: + +```azurecli +az acr connected-registry update \ + --name myconnectedregistry \ + --registry mycontainerregistry001 \ + --add-client-tokens nestedcrimagepulltoken +``` + > [!IMPORTANT] + > The client token must be added to the parent connected registry, `myconnectedregistry` in this case. + +## Retrieve connected registry configuration information + +Before deploying the connected registry to the nested IoT Edge device, you will need to retrieve the configuration from the connected registry resource in Azure. Use the [az acr connected-registry install][az-acr-connected-registry-install] command to retrieve the configuration. + +```azurecli +az acr connected-registry install renew-credentials \ + --registry mycontainerregistry001 \ + --name myconnectedmirror \ +``` + +This will return the connection string for the connected registry including the newly generated passwords. + +```json +{ + "ACR_REGISTRY_CONNECTION_STRING": "ConnectedRegistryName=myconnectedmirror;SyncTokenName=myconnectedmirror-sync-token;SyncTokenPassword=s0meCoMPL3xP4$$W0rd001!@#;ParentGatewayEndpoint=mycontainerregistry001.westus2.data.azurecr.io;ParentEndpointProtocol=https", + "ACR_REGISTRY_LOGIN_SERVER": "" +} +``` + +The JSON above lists the environment variables that need to be passed to the connected registry container at run time. The following environment variables are optional: + +- `ACR_REGISTRY_LOGIN_SERVER` - this is the hostname or FQDN of the IoT Edge device that hosts the connected registry. + +You will need the information for the IoT Edge manifest below. + + > [!IMPORTANT] + > Make sure that you save the generated connection string. The connection string contains one-time password that cannot be retrieved. If you issue the command again, new passwords will be generated. You can generate new passwords using the [az acr token credential generate][az-acr-token-credential-generate] command. + +## Configure a deployment manifest for the nested IoT Edge + +A deployment manifest is a JSON document that describes which modules to deploy to the IoT Edge device. For more information about how deployment manifests work and how to create them, see [Understand how IoT Edge modules can be used, configured, and reused](../iot-edge/module-composition.md). + +To deploy the connected registry module using the Azure CLI, save the following deployment manifest locally as a `.json` file. + +[!IMPORTANT] In the bellow deployment manifest, the IP address `10.16.7.4` is the IP address of the device hosting parent connected registry. Make sure you replace this IP address with the one your parent device uses. + +```json +{ + "modulesContent": { + "$edgeAgent": { + "properties.desired": { + "modules": { + "connected-registry": { + "settings": { + "image": "10.16.7.4/acr/connected-registry:0.2.0", + "createOptions": "{\"HostConfig\":{\"Binds\":[\"/home/azureuser/connected-registry:/var/acr/data\",,\"/usr/local/share/ca-certificates:/usr/local/share/ca-certificates\",\"/etc/ssl/certs:/etc/ssl/certs\"]}}" + }, + "type": "docker", + "env": { + "ACR_REGISTRY_CONNECTION_STRING": { + "value": "ConnectedRegistryName=myconnectedmirror;SyncTokenName=myconnectedmirror-sync-token;SyncTokenPassword=s0meCoMPL3xP4$$W0rd001!@#;ParentGatewayEndpoint=10.16.7.4;ParentEndpointProtocol=https" + } + }, + "status": "running", + "restartPolicy": "always", + "version": "1.0" + }, + "IoTEdgeApiProxy": { + "settings": { + "image": "10.16.7.4/azureiotedge-api-proxy:latest", + "createOptions": "{\"HostConfig\": {\"PortBindings\": {\"443/tcp\": [{\"HostPort\": \"443\"}]}}}" + }, + "type": "docker", + "version": "1.0", + "env": { + "NGINX_DEFAULT_PORT": { + "value": "443" + }, + "CONNECTED_ACR_ROUTE_ADDRESS": { + "value": "connectedRegistry:8080" + }, + "NGINX_CONFIG_ENV_VAR_LIST": { + "value": "NGINX_DEFAULT_PORT,BLOB_UPLOAD_ROUTE_ADDRESS,CONNECTED_ACR_ROUTE_ADDRESS,IOTEDGE_PARENTHOSTNAME,DOCKER_REQUEST_ROUTE_ADDRESS" + }, + "DOCKER_REQUEST_ROUTE_ADDRESS": { + "value": "registry:5000" + }, + "BLOB_UPLOAD_ROUTE_ADDRESS": { + "value": "AzureBlobStorageonIoTEdge:11002" + } + }, + "status": "running", + "restartPolicy": "always", + "startupOrder": 3 + } + }, + "runtime": { + "settings": { + "minDockerVersion": "v1.25", + "registryCredentials": { + "tsmregistry": { + "address": "10.16.7.4", + "password": "$$$0meCoMPL3xP4$$W0rd001!@#$$", + "username": "nestedcrimagepulltoken" + } + } + }, + "type": "docker" + }, + "schemaVersion": "1.1", + "systemModules": { + "edgeAgent": { + "settings": { + "image": "10.16.7.4/azureiotedge-agent:1.0", + "createOptions": "" + }, + "type": "docker", + "env": { + "SendRuntimeQualityTelemetry": { + "value": "false" + } + } + }, + "edgeHub": { + "settings": { + "image": "10.16.7.4/azureiotedge-hub:1.0", + "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"443/tcp\":[{\"HostPort\":\"443\"}],\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}]}}}" + }, + "type": "docker", + "status": "running", + "restartPolicy": "always" + } + } + } + }, + "$edgeHub": { + "properties.desired": { + "routes": { + "route": "FROM /messages/* INTO $upstream" + }, + "schemaVersion": "1.1", + "storeAndForwardConfiguration": { + "timeToLiveSecs": 7200 + } + } + } + } +} +``` + +Use the information from the previous sections to update the relevant JSON values. + +You will use the file path in the next section when you run the command to apply the configuration to your device. + +## Deploy the connected registry module on IoT Edge + +Use the following command to deploy the connected registry module on the IoT Edge device: + +```azurecli +az iot edge set-modules \ + --device-id [device id] \ + --hub-name [hub name] \ + --content [file path] +``` + +For more details you can refer to the [Deploy Azure IoT Edge modules with Azure CLI](../iot-edge/how-to-deploy-modules-cli.md) article. + +To check the status of the connected registry, use the following CLI command: + +```azurecli +az acr connected-registry show \ + --registry mycontainerregistry001 \ + --name myconnectedmirror \ + --output table +``` + +You may need to a wait few minutes until the deployment of the connected registry completes. + +## Next steps + +In this quickstart, you learned how to deploy a connected registry to an IoT Edge device. Continue to the next guide to learn how to pull images from the newly deployed connected registry. + +> [!div class="nextstepaction"] +> [Quickstart: Pull images from a connected registry][quickstart-pull-images-from-connected-registry] + + +[az-acr-connected-registry-install]: /cli/azure/acr#az-acr-connected-registry-install +[az-acr-import]: /cli/azure/acr#az-acr-import +[az-acr-token-credential-generate]: /cli/azure/acr/credential#az-acr-token-credential-generate +[container-registry-intro]: container-registry-intro.md +[quickstart-pull-images-from-connected-registry]: quickstart-pull-images-from-connected-registry.md +[quickstart-connected-registry-cli]: quickstart-connected-registry-cli.md \ No newline at end of file From 7f29d451e11af5d8311fe89fa85fc5a5543206c3 Mon Sep 17 00:00:00 2001 From: Huangli Wu Date: Fri, 30 Apr 2021 14:35:20 -0700 Subject: [PATCH 12/51] address comments. --- .../quickstart-deploy-connected-registry-iot-edge-cli.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md b/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md index 01349f4..9779ec6 100644 --- a/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md +++ b/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md @@ -282,7 +282,7 @@ You may need to a wait few minutes until the deployment of the connected registr ## Deploy the api proxy module on IoT Edge -Add api proxy module from Azure Marketplace `IoT Edge API Proxy` +Add api proxy module from Azure Marketplace `IoT Edge API Proxy` as described in the [https://docs.microsoft.com/en-us/azure/iot-edge/how-to-configure-api-proxy-module?view=iotedge-2020-11] Add the following two environment variables in addition to the existing ones: @@ -394,7 +394,7 @@ http { - Click 'Save' -Make sure you open the the ports `8000`, `443`, `5671`, `8883`. +Make sure you open the the ports `8000`, `5671`, `8883`. The api proxy will now listen on port 8000 configued as `NGINX_DEFAULT_PORT`. From 21172ccd1b5a3564d8d06f1129996697ed7f47bc Mon Sep 17 00:00:00 2001 From: Huangli Wu Date: Mon, 3 May 2021 13:23:57 -0700 Subject: [PATCH 13/51] Remove DOCKER_REQUEST_ROUTE_ADDRESS env. --- .../quickstart-deploy-connected-registry-iot-edge-cli.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md b/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md index 9779ec6..2d6564a 100644 --- a/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md +++ b/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md @@ -284,14 +284,16 @@ You may need to a wait few minutes until the deployment of the connected registr Add api proxy module from Azure Marketplace `IoT Edge API Proxy` as described in the [https://docs.microsoft.com/en-us/azure/iot-edge/how-to-configure-api-proxy-module?view=iotedge-2020-11] -Add the following two environment variables in addition to the existing ones: +Remove the existing env DOCKER_REQUEST_ROUTE_ADDRESS. + +Add the following two environment variables: ``` "CONNECTED_ACR_ROUTE_ADDRESS": { "value": "connected-registry:8080" }, "NGINX_CONFIG_ENV_VAR_LIST": { - "value": "NGINX_DEFAULT_PORT,BLOB_UPLOAD_ROUTE_ADDRESS,CONNECTED_ACR_ROUTE_ADDRESS,IOTEDGE_PARENTHOSTNAME,DOCKER_REQUEST_ROUTE_ADDRESS" + "value": "NGINX_DEFAULT_PORT,BLOB_UPLOAD_ROUTE_ADDRESS,CONNECTED_ACR_ROUTE_ADDRESS,IOTEDGE_PARENTHOSTNAME" } ``` From 0b2c3575d8965fbbb72b01d09ad18720e8486dd8 Mon Sep 17 00:00:00 2001 From: jeburke Date: Tue, 4 May 2021 13:02:29 -0700 Subject: [PATCH 14/51] add TSG for common issues --- .../connected-registry/troubleshooting.md | 87 ++++++++++++++++++- 1 file changed, 85 insertions(+), 2 deletions(-) diff --git a/docs/preview/connected-registry/troubleshooting.md b/docs/preview/connected-registry/troubleshooting.md index d16ac7a..37f9d66 100644 --- a/docs/preview/connected-registry/troubleshooting.md +++ b/docs/preview/connected-registry/troubleshooting.md @@ -13,8 +13,6 @@ This article helps you troubleshoot problems you might encounter when setting up ## Symptoms -May include one or more of the following: - * Unable to push or pull images to or from the connected registry. Client error is `Error response from daemon: Get https:///v2/: http: server gave HTTP response to HTTPS client` ## Causes @@ -26,3 +24,88 @@ May include one or more of the following: ### Configure Docker daemon to access insecure registry The access the connected registry via HTTP, you must configure the client Docker daemon to allow access to insecure registries. The steps are described in [Test an insecure registry](https://docs.docker.com/registry/insecure/) article on Docker's web site. + +## Symptoms + +* Unable to pull an image from the connected registry. Client error is +`Error response from daemon: manifest for /: not found: manifest unknown: manifest unknown` + +## Causes + +* The connected registry is not configured to sync this repository from the Azure Container Registry. + +## Potential solutions + +### Configure the connected registry to sync the repository + +In order to access this image, you must update the connected registry configuration to sync the repository. From the Az CLI run +`az acr connected-registry repo -r -n --add ` + +Wait a few minutes for the connected registry to sync the repository and try pulling the image again. + +## Symptoms + +* Unable to push or pull images to or from the connected registry. Client error is +`Error response from daemon: pull access denied for /, repository does not exist or may require 'docker login': denied: Insufficient scopes to perform the operation` + +## Causes + +* The repository is synced to the connected registry, but the client token used for `docker login` does not have access. + +## Potential solutions + +### Assign permissions to the connected registry client token + +To update the permissions of the client token, you must update the corresponding scope map. To view the scope map resource ID associated with a token, run the following on the Az CLI: + +`az acr token show -r -n -o tsv --query scopeMapId` + +#### Pull permissions + +To give the client token read-only permissions to the repository, run the following from the Az CLI: + +``` +az acr scope-map update \ + --name \ + --registry \ + --add-repository content/read +``` + +#### Push permissions + +To give the client token push permissions to the repository, run the following from the Az CLI: + +``` +az acr scope-map update \ + --name \ + --registry \ + --add-repository content/read content/write +``` + +Wait a few minutes for the updated client token permissions to sync to the connected registry. + + > [!TIP] + > After updating the permissions of the client tokens, you may want to generate new passwords. Run `az acr token credential generate` from the Az CLI to refresh your client token passwords. Allow a few minutes for the credentials to sync to the connected registry. Login using your new credentials with `docker login`. + +For more information on ACR token management please reference [Create a token with repository-scoped permissions](https://docs.microsoft.com/en-us/azure/container-registry/container-registry-repository-scoped-permissions]). + +## Symptoms + +* Unable to push an image to the connected registry. Client error is +`denied: This operation is not allowed on this registry.` + +## Causes + +* Images can only be pushed to a connected registry in `Registry` mode. If the connected registry is in `Mirror` mode then only readonly operations are allowed, such as `docker pull`. + +## Potential solutions + +### Create a new connected registry in Registry mode + +Once a connected registry is created, the mode cannot be updated. If you would like to push images to your connected registry, create a new resource in Registry mode. Ensure your client token linked to the new connected registry has push permissions to the synced repositories. + +From the Az CLI run + +`az acr connected-registry create --registry --name --repository app/hello-world service/mycomponent --client-tokens ` + +Deploy the connected registry. For an example on how to deploy a connected registry on IoT Edge, please reference [Quickstart - Deploy a connected registry to an IoT Edge device](./quickstart-deploy-connected-registry-iot-edge-cli.md). Once deployed, you can use the client token to login and push images to the connected registry. These images will be synced from the connected registry to the ACR. From 3bff8cff6af95f670818bd9e8fc6fe937767204d Mon Sep 17 00:00:00 2001 From: jeburke Date: Tue, 4 May 2021 13:27:17 -0700 Subject: [PATCH 15/51] improve grammar --- docs/preview/connected-registry/troubleshooting.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/preview/connected-registry/troubleshooting.md b/docs/preview/connected-registry/troubleshooting.md index 37f9d66..b6872e6 100644 --- a/docs/preview/connected-registry/troubleshooting.md +++ b/docs/preview/connected-registry/troubleshooting.md @@ -62,7 +62,7 @@ To update the permissions of the client token, you must update the corresponding #### Pull permissions -To give the client token read-only permissions to the repository, run the following from the Az CLI: +To give the client token pull permissions to the repository, run the following from the Az CLI: ``` az acr scope-map update \ @@ -85,7 +85,7 @@ az acr scope-map update \ Wait a few minutes for the updated client token permissions to sync to the connected registry. > [!TIP] - > After updating the permissions of the client tokens, you may want to generate new passwords. Run `az acr token credential generate` from the Az CLI to refresh your client token passwords. Allow a few minutes for the credentials to sync to the connected registry. Login using your new credentials with `docker login`. + > After updating the permissions of the client token, you may want to generate new passwords. Run `az acr token credential generate` from the Az CLI to refresh your client token passwords. Allow a few minutes for the credentials to sync to the connected registry. Login using your new credentials with `docker login`. For more information on ACR token management please reference [Create a token with repository-scoped permissions](https://docs.microsoft.com/en-us/azure/container-registry/container-registry-repository-scoped-permissions]). @@ -102,7 +102,7 @@ For more information on ACR token management please reference [Create a token wi ### Create a new connected registry in Registry mode -Once a connected registry is created, the mode cannot be updated. If you would like to push images to your connected registry, create a new resource in Registry mode. Ensure your client token linked to the new connected registry has push permissions to the synced repositories. +Once a connected registry is created, the mode cannot be changed. If you would like to push images to your connected registry, create a new resource in Registry mode. Ensure the client token linked to the new connected registry has push permissions to the synced repositories. From the Az CLI run From 41e307540d97bfbe0d56f89e5348f724db4ffe76 Mon Sep 17 00:00:00 2001 From: jeburke Date: Tue, 4 May 2021 16:33:07 -0700 Subject: [PATCH 16/51] clarify push permission is for registry mode --- docs/preview/connected-registry/troubleshooting.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/preview/connected-registry/troubleshooting.md b/docs/preview/connected-registry/troubleshooting.md index b6872e6..2116449 100644 --- a/docs/preview/connected-registry/troubleshooting.md +++ b/docs/preview/connected-registry/troubleshooting.md @@ -38,7 +38,7 @@ The access the connected registry via HTTP, you must configure the client Docker ### Configure the connected registry to sync the repository -In order to access this image, you must update the connected registry configuration to sync the repository. From the Az CLI run +In order to access this image, you must update the connected registry configuration to sync the repository. From the Azure CLI run `az acr connected-registry repo -r -n --add ` Wait a few minutes for the connected registry to sync the repository and try pulling the image again. @@ -56,13 +56,13 @@ Wait a few minutes for the connected registry to sync the repository and try pul ### Assign permissions to the connected registry client token -To update the permissions of the client token, you must update the corresponding scope map. To view the scope map resource ID associated with a token, run the following on the Az CLI: +To update the permissions of the client token, you must update the corresponding scope map. To view the scope map resource ID associated with a token, run the following from the Azure CLI: `az acr token show -r -n -o tsv --query scopeMapId` #### Pull permissions -To give the client token pull permissions to the repository, run the following from the Az CLI: +To give the client token pull permissions to the repository, run the following from the Azure CLI: ``` az acr scope-map update \ @@ -73,7 +73,7 @@ az acr scope-map update \ #### Push permissions -To give the client token push permissions to the repository, run the following from the Az CLI: +If the connected registry is in Registry mode, the client may need push access. To give the client token push permissions to the repository, run the following from the Azure CLI: ``` az acr scope-map update \ @@ -85,7 +85,7 @@ az acr scope-map update \ Wait a few minutes for the updated client token permissions to sync to the connected registry. > [!TIP] - > After updating the permissions of the client token, you may want to generate new passwords. Run `az acr token credential generate` from the Az CLI to refresh your client token passwords. Allow a few minutes for the credentials to sync to the connected registry. Login using your new credentials with `docker login`. + > After updating the permissions of the client token, you may want to generate new passwords. Run `az acr token credential generate` from the Azure CLI to refresh your client token passwords. Allow a few minutes for the credentials to sync to the connected registry. Login using your new credentials with `docker login`. For more information on ACR token management please reference [Create a token with repository-scoped permissions](https://docs.microsoft.com/en-us/azure/container-registry/container-registry-repository-scoped-permissions]). @@ -104,7 +104,7 @@ For more information on ACR token management please reference [Create a token wi Once a connected registry is created, the mode cannot be changed. If you would like to push images to your connected registry, create a new resource in Registry mode. Ensure the client token linked to the new connected registry has push permissions to the synced repositories. -From the Az CLI run +From the Azure CLI run `az acr connected-registry create --registry --name --repository app/hello-world service/mycomponent --client-tokens ` From 16cb9290f0bb107ad5bcd86c5e84b373a2377ee0 Mon Sep 17 00:00:00 2001 From: Bin Du <2686301+northtyphoon@users.noreply.github.com> Date: Wed, 5 May 2021 22:58:18 -0700 Subject: [PATCH 17/51] add document for aks-acr cross tenant setup (#539) * add document to aks-acr cross tenant setup * address comments --- docs/aks-acr-across-tenants.md | 61 +++++++++++++++++++++++ docs/media/aad-app-client-secret.png | Bin 0 -> 153531 bytes docs/media/enable-multi-tenant-app.png | Bin 0 -> 235568 bytes docs/media/multi-tenant-app-acr-pull.png | Bin 0 -> 104139 bytes docs/media/multi-tenant-app-consent.png | Bin 0 -> 48539 bytes docs/media/multi-tenant-app.png | Bin 0 -> 40489 bytes 6 files changed, 61 insertions(+) create mode 100644 docs/aks-acr-across-tenants.md create mode 100644 docs/media/aad-app-client-secret.png create mode 100644 docs/media/enable-multi-tenant-app.png create mode 100644 docs/media/multi-tenant-app-acr-pull.png create mode 100644 docs/media/multi-tenant-app-consent.png create mode 100644 docs/media/multi-tenant-app.png diff --git a/docs/aks-acr-across-tenants.md b/docs/aks-acr-across-tenants.md new file mode 100644 index 0000000..e8168f1 --- /dev/null +++ b/docs/aks-acr-across-tenants.md @@ -0,0 +1,61 @@ +# Set up AKS to pull from ACR in a different AD tenant + +## Introduction + +There are several ways to set up the auth credential in Kubernetes to pull image from ACR. For example, you can use [admin user or repository scoped access token](https://docs.microsoft.com/en-us/azure/aks/kubernetes-service-principal) to configure pod [imagePullSecrets](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/). + +While `imagePullSecrets` is commonly used, it brings the challenge and overhead to manage the corresponding secret. On Azure, you can set up [AKS cluster with a service principal credential](https://docs.microsoft.com/en-us/azure/aks/kubernetes-service-principal) which allows you securely pull the image from ACR without additional `imagePullSecrets` setting on each pod. + +Sometimes, you may have your AKS and ACR in different Azure Active Directories (Tenants). This document will walk your through the steps to enable cross tenant authentication using service principal credential. + +## Instruction + +In this example, the AKS cluster is in `Tenant A` and the ACR is in `Tenant B`. + +`Tenant A` is also the service principal home tenant. + +You will need the contributor role of AKS subscription and the owner role of ACR subscription. + +### Step 1: Enable multi-tenant AAD Application + +- Login [Azure portal](http://portal.azure.com/) in `Tenant A` and go to Azure Active Directory `App registrations` blade to find the service principal application object. + +- Remember the `Application (client) ID` (it will be used in `step 2` and `step 4`) + + ![](./media/multi-tenant-app.png) + +- Choose multitenant account type as the following screenshot and also remember the `redirect url` (it will be used in step 2). + + ![](./media/enable-multi-tenant-app.png) + +- Create a client secret if not exist (It is __IMPORTANT__ to make sure you use this client secret to update AKS in `step 4`). + + ![](./media/aad-app-client-secret.png) + + +### Step 2: Provision the service principal in ACR Tenant + +- Open the following link with the Tenant B admin account and accept the permission request. + + ``` + https://login.microsoftonline.com//oauth2/authorize?client_id=&response_type=code&redirect_uri= + ``` + + ![](./media/multi-tenant-app-consent.png) + +### Step 3: Grant service principal ACR image pull permission + +- Assign AcrPull role to the service principal + + ![](./media/multi-tenant-app-acr-pull.png) + +### Step 4: Update AKS with the AAD Application secret + +- Use the `Application (client) ID` and `client secret` collected in `step 1` to [update AKS service principal credential](https://docs.microsoft.com/en-us/azure/aks/update-credentials#update-aks-cluster-with-new-service-principal-credentials). + +## Reference + +- [Application and service principal objects in Azure Active Directory](https://docs.microsoft.com/en-us/azure/active-directory/develop/app-objects-and-service-principals) + + + diff --git a/docs/media/aad-app-client-secret.png b/docs/media/aad-app-client-secret.png new file mode 100644 index 0000000000000000000000000000000000000000..3f86375d61ec00febfbaa8250af62266626cf977 GIT binary patch literal 153531 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

KMRe$IyyZ6rMI?dlzBgBVSIh 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 X5|LfE3I5!_M*mDr_X*D3LMYNf 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�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

    GQG-zqyN)H6RUiF?R^j|s9=`;Y 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%0DSejm{fkQn272JuhpzL~ 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

    W}it`E==3_lQ1$7@VHu$ZlW4QS%u`t7>;ahdd zq*ta_HbwmOm_c^N4c<%Xm!&fmg{z5!O2N!VuVz{MUDaH%H8@2dQSTQ<#h5VUjA|9t z1xL>d-z}dfa~9ibZ|L|@?oo>H^mi${Ev4r;-SE>;73<^i^Fkv>t-JDC=6EP8TG) zK+|(%UugCjSF%b4&{-QR8oEm|hFfBTPp7L;`+DSXQ4>{^-P1t97* zBrTS(`^)4jr4LJ4JX1|_H!_Nvc#EA5*ybgz2la$C_{X#mGA0Fd zHDcyEAcY`Oq0eTd%%)Y3C(_KP7dZgh{cT^Dv#9?i-Fk_q#no=xj{e^>T&xtFV%@L7}Gwy*T{z;*Voj@g;qK<_UGW6 zGHa2}Zb!au--mJhMH0h&!>ab5<0uOTja9P!8T+$K)nWFG3bo7(0Rwol(r*%()7K}O z@Q-*qKNRuuGZ(fCx6}))J@pzh7A{^zDKJ!I&zCi=_S z(R3f)Bfo2xo<9z{gPhMLVd}Q#fA3*UHh##iG*RSXwk+2@*m3QyZzbeT(RL3N!-dBN z-tmHHU?X;~!1h_MYx441ebKGsn%ijHIcWWqRlA;_!bLHchmR1W7ziNUAZ_|eEq(9I zO!9GNhQSbqnRY-}1H4d#HTgKb4bv!QFNf{z8J+#nE$sJ6S#$N6b+-K?@!#nN@^+c5 zmm!U+ZiIJWM!CiILwB&YHL0*kM;pz0&DQmJzrCt=p#w>To3#5$^@d#LceM=^w1`Z? zDW!dkKAU~!t{o;Tr4JLkX5nwdh(}#&p;)%>XwT%sJ27MNHy)U#4nNxr?RmFr9vNaJ zG;~ZB3JGrvTHKTw3@zIVd^RWfzU(TIc+AiJiw9=LjiKs^K9;o-mNBNdPhb3MEl`?N z=SoCk9+BKtG2Kw5+NIjVnipR*;|GUV0t)(ZO7FTyvOItcLNw*8naA-7Kk)t z2gFtbkG>&}#`&41t4V&uuZq4dyg?<{c6+i;uI}e;^BDyzK zPT}0{MLUB6=S1%|yD%6pVzNtYUN^%M>ie^n$=HF40}7)Pw!M_#7A4tS~71rLfWS_{{- zZ>e8MD=ELyp~A-zD^THn-*yYhU|d(yIGp~0`$r4~<2F`j*RKye`YmnwN8Uax1ua81 zV2c*s+OSygPOaa%%*Bo5OvH1=SM9F;bl>fb^9IklMGameVplLCd~NKSMUH-K+0DW^ zFCh?R#<*SgcWVP&WQBmwj&Hb1<@4^@KY7yYxgo|3+kL8rGC8h$>@tU#Mn!w>-Py4d zo^xbq$~nd4_unKRl0&1g<87(h(mgZncQ%+qxj)|9ESUK)FG&&`zYtV7ytsAz068WA zAz>z(csM_N)E|CF`xlpug>gzqKD%N2?Op{4tAOnFw~_Et)--Ev?_0Hq=Q+O<`z47Y z(cbt`^FS1}Hn%8lku5_;GE!tdVDq(+K2ez!P$IeamEoaz505{=P)(B|NBz|IYpl?= zSV5v8_w+@#+J4q8v0!aZQf^zSDVy|e>7Rckk^fN$W$EMLTW@I}pp}N5RB6~PI@%Cq z$f5$&l3R}vmBMQ?6|6Zi1BY~yynjY<9zfkXOK!A#**8BSoeZ7Vpn7V;{M(6uZt^BH z@~%QAg8RJGgOV4q*LrBzw*1W`&GpH$Dql#@kjiF`!tQ3_O|we(<$oqnS5q%3gOfk- z9cl2dI6B&*y7bGc-H;3_ch19?8C5N%}Cuz1rJN-sa zQ~!Uzkbkd=xjQp&?hhZJtB=@%LLhr51Fg>7A1!o{X7RJn^WG7&U>N?9`9d*RLZf*Y zSJ){jNX=rqlqy4Z@6q<&$pY@>u{R?>L*(Ze#xtwBTQ77U zakF|p@SN$Cqc zW%#0l^~#g*HYZMFNBQSZk~cq6&J!n1AvD80432=lX0n=WIyy`&o?)iHoE5UIB;iia zOHax0aU&>o#;8KdDpa#VZxP=h)RSd|>v-7ffPuZy0RQ z%pWD9`9~K&YY?AaFy$%2w8GZ684Of@sRjmr&wH#1Nqhux(o7Q`Cqg97<_db8Axdyd zxLF;a^gcMo5>CdOn`oQ2)BW^0?);GluYYLY?2`+rKYuEcEmJj+#dE}?i_%QNIvBdA z26oJ28)2TZp8AX#vS`(I89n!RS8aD=>lFkzUwhhD>L+TkmviLg)rBZ<#M20TU1Bwr zP0ma^yZ>c82I{x+QYw=Xy$1)e4`fU1&3&ESYEHT3Aj~8p-J3*HvEGiB4De@`q zj8{JI7pEPpU4J8sFY}Bsd`O(i==A4bT(HZ5ytmsYq7ty8hUC&%Ds4HxJ{#5WXT6l!+tm9QIhEFh%*N zN_g9tF9{Mu1e-VXc(dj!*Et?z;<*3%cyX&JK9yhb*OVkTpUrQ-0vGSvkgM54zm6HJhf@TOGwB?x458{@IuoUCZw5|4De4Kb zcnMlI)5jh6GmMJo9DV%e`3PEOP529lD((duy$9R`7+N&ZALDfjQU5e%F6EoH(9bB` z9Mc~vlIRrY2>8GqSqKH|-eHJ9tUzvf%hy-|1w1X*Q?1&aM;fGe3U|#6TZ1={WeaXp zEKaO$ck7QYT$Q}O733eC?S|BApp3E;>z_I)=AR?_nhU`ULN1FwP<$(4jo*n9Qn396 zpWSmEHH+zEeJD9bNPss~X8V6}3aQ~8zy04=?wuytzjo7>m8IV0V+#w8iys`R?ZMDL zC-hHMzWciAop~K}idwg0Z16$bp#!Ki;upA*c`tmCZBF{n_Bn(?8gkoHYFg$7|8B1Q zzs{NF_z)AEMJT?Bc+A66g_j7ftjJuybXc;P)z@>hEA`PR4EOkuGF8%(s^5;e zQyV7Mdw=Dh$gz_DBk%(JF#oK;l8hceavoDkO#+<-X%;`87aqnHVn#=pn8XGQ1bZdm zPda|dYZwKfqH8xZSP&t5Ci-7ssfTkF%ljOz;d!8U0sw4rF?S--Vw&bzK%FbmP@jP_#8(En$>Af~<)$5tK7`1j?PYf4yczjdy zunKa)OFB{*bS=FF>$k&^f&ZOwKlx9>orlFJj3qZ0te+a+Uc5lq7x!~tg4P`mOLI5u z1H;;4?kzW+<<5HhuU8CfQBa#PW(AXPx-;6chfChbCk2RcAcBzKVDW{ zA^Bv%R?v=*k{3}%9!|0Y_P~Zo56{$(Owgh4i%V)0Zj*$li6a}&+oQXVwU|3|~Uw%9fa)W~$BGsPdB+zCU zwuk$HS6K#0KtT6dd;jJ?!S(Wmi3%M)EGpJp*A5NfeiD5JiR+#KXc*((XlxKg6dPww zT-@C)q=J)rRD$3jhOn@($5)Q)#55rMq!?efs6Ug9dvg2UIdQ^~C=7BfnF7`Z(v1nE ze#7Ol(erEbH#ow-j63^ZyLI5IjDc962p|W(a@Tv%9N%-|gcvBC$Jx!RjMY!{K07j4 zfZmQo8z~>WB@1~D3d;bovGx*Jd5Ybengh%SQ|VGAeGX`q1l;%UfI4&gF06k*X^vcb z{Uw56xlJCBG=!e2=BWeH+@jR;Joz!k%@`C@RsWUK{BYHKd=3oC!YCMMw6qkgH-q9_ z%W!sUoLd2w{*bn1Ro1rD7s-q~&c^n;LP_rW6m0&Jy{}^`9QmsQKEJ|a(e+yCj==$D zC#=2w!^07%n=_!I-2ghGRw5PH+bWZ=@<`51F5! z#)-kb%n{L-MrF~i-3Gkri-=?lgPsWo&|&w4({|z)6+G@C0iz+ji(mrq;F1i(p1uE` zCC(%{2{~R23dW~@v=8s6N{9x5_dlT|_#o4W4RVVE1838A!>sN@&%DsH=$|ls>g!It zeYlXCiOqOJJzHR=Y`p4Kz*Er6gmFiIH%VZL;@JXd8Q}Il72>a)JdDhuUF*c(8almf zhte@EU-6OK;ZX4UH`W?R61h{;2X8ywJ-d_d^{NPP-JBPuo_#df403BV}GIe`pzXrc#UPG_HuM>n)6;(5Qx3h z06y-j!d;69#2sdbuP8$~y*% z*@kqHjCz##^s;}-t<+E>T(<+K(j4l{3U#wIatZnQ`48>>-7MY?(nXkbMGEiEc^82= z>~*l`O5#5Q?;OQHj^{d;we;?9&NJgNoGN96 z9%lwX9jK*OnY#FRbf(JQ{X~jxO*H5TE#0N^j#S=e*>YX~p0p(R=9y#&CANH7$=;L! z-liYUK$QbNzsE5yD11LuTpj5NJzo7xx?>S%laHn9Pq0RZ8!z_9o_L zP8cM9D1@9^=-;Qk0H1WQO0fmEeZCriXfBxb3i4`P0Ov$xJ?&=qpOSJQq*`b8X_?(=@+6%g`5m7Sa1OUux<3#PrE##1`OHo&#u#s>QE{9aZ7hSd zq;i$|?PcOL{++Q(VRc6X|8Ouah}OE;B<>W#bjU(tD?uC2#>=tOv7*(xeJjGDtX&=S z)AOgOO#@HcS=t2m1C&5GecKEHpIFI* z7HL9Ui-*uZ&-j<)3Ra23)i3f(_n*^Ssl&@3GAmK_RC|KL#^^2YV;+d)m9IML!Ad94QnQ|TKqE5Nmqy-nGS~#JL#UtXB z-A5LU^Q^rC_^a1!iRczn$vcE50d`OK!_RPb(Sl#Og~%lntBLmX-gack#_S4;XTsGY zwh;Jkg$TuGHi*+2jwg$CH3+*ROE`>1(u*-TuG+R;$#dmq zT2^!b_V2{7{;!Q1*C7=>J~02+4fnel7l^F%BtXNK&d#fL@umL@M?j@^5K=&BnkpWW z5&GoKh9guSAYqRSrd^LKoXmcMpuAALRn=<_=dLFNNjxA|hzusd2h7=)BZ_H2nR!nj zH~ADGZK_h?@tCXtohcEBMS@2wfpszct%_k8XrEX&p|LL%e*Jp5xrN0{%B1wZHs_}yae)kWfW+f|~pnciYM0-_)jcCYrwjuox zv{wk_2z()Fi%SmrM}ee8(oOcpIymy>hb1%#ds$7juW!J^>KXj+Y)ih2QMqagKwznV z0vIe7J#ieE!ceMZ_I#PcTU4$VAFn7g%bh?KpYYm@g%UD7G)Hj( z!63s`9?XZ!Rt&I3i;O$d)Cdr8w{X0G=BKY_tlv_3e=0q zubo1jHTkL->C!Q(1|*=MkYX>=kWr^|Yu zRwzmSmcRNkg$WED``j+)RU7yR@NTGa=N9$bnZe?sqSRptp|$`E(%U57zW~qrI8XWI z@#$$!O<%NtC-UglPFZE}#+!q0%fsZFvyfoExFi&yPhI!VXjeOCSBRY0Q=Ntoao;=H zJSpE?&52@MOfS!V_FnJDY5p0mdsiyU8_u>Ep= zAUAKaBD&?}Uwv!<)D43CqlM@T>1POzr(xvak5 zT4qH*y3zYdf+(B==)P1VUbsEVb*31rYgDB4hg0wx7mc;&y#>gPQR3F!EW0;1iWAjx zlzC>hp8(-%kgZPb!tw}Jnn_5srI%oCdM}vN@;I(yQJUqCsay-#-u)=|`2_p=dPs#) z63(Ea4Ey6)66!Tzl=eIZ$f7KrHHb*qP5ywhqI@$+<-#|GeW%P-4OJn-$C8#{FZd)n zsf0y;ZmBISw~a`IMDE&9#Zhla)yLT}-wGw7V&ykn_#rP?{0vrPyx)XDm34kVeZ$CB z>>_os+zL!g3kGXs$&|-G26>d`k2D^3+jueWTTNAes3a)o-cj}UL(EcuM) zX&`?hunx$l&7p1DKbL^Vg%Pr}y|J0O z*g4ygYIjfIt0^_OxHnTv6nt@ZlopXO&EHNZB(y!Zg5#AF=2X|OAAbVe%rYm=Y?h-r z`KYTfWj;aojo(w0^mUK{JkrC<2_G`L;a1@$==OFG-u8E5*z$8t=7!LRu}dlP>%U*b zP(O;MfCas*wM+T1TJ`QR!rO$&x&-<7=vY8xcZh1yst^aSoi>i`T=0HLO6XC%xu%Bu z%&w>1a*oS3A2iv>A#G%eM@VGfZI@AWWr@~RrGYc48cLb$?a#}DzwjsQsfm71EI(n% zb8m+$L@0f~wfe^iNO%uQ#3XxCmQ;CgoSKFM`40mz#xYhx87E+3yVhgrvhA zJZ~fk1W65-WOebsuhp%0kNKv|I1Pn=U&{4*5W!u+SvlpTMWUT+{3YnPc*|(JAOxp) z5q8GyB5>aZldk!YG%4#lN75-6rVehg(S7;y8U7=6HFK}{pji~_beyVns7+!DrzLzv zjF#OenOPC*kTG7lbGc)*{pYXI_n;pARMhZn_az_c;Bs4NU?-nliq4{#dF+*F)KzD# z?P5oHdsZHtXZ7qTC_v5fB!_$1HzyuqvW-Gnl&Jr7MLvSeyJ~gP1gO#<8SO6irI}?V z(%$4xg}F^kWJ$BUq8dpSqpE{0#W5$2?SJPJX9~?rAV)dTz18iX16(WKcMB?fDCA9x$S7zwPEY^K{c?0(cxUu0h)OwYHLvEg7fLqx9NE8 zR>Y3>V5J~~Km$RwQ=4k_ht>rvji%$?=-zk`J~WsFjmy6_5MYbKBZmUQWij*z*SUSa zNSkRlak^3^?k382T+n+XGRe>kM5=T8)Ljjl=7DBgr{;I&gf$@Gl$P6#%caM|U%U2^ zYXSR}wd?L2HnV7{soo?|lNC@IjJMNCizE$a35}6#_F2O_w=piwF&{oG0lqJh z^(v#py;|h2f{P0@=`?_99X|2Y`H$qxPhWs@e>sbcKYF`|NlkP&i)GbO5C9HGsZHK$ z_y_TMV;Xqx1D8~6@JeD$^Cq!EOqNoQ5V&RN;3*~^q0yD))`R?!bHo>6DHzZADbjkv zDFt#eYudibkzEj@qPM4HfGaOwI;OA51Ttf?gHNn}2NH=Y^@#Imj|XT|@k zM6pg$hUTy6z<80|J?dHuUwbwY-0OgN&YZ9)Nazx@a!5P!cV} z34dU%2Xxqq$+PQP*aB?OSNHmiyU~580n?g%zZ-ZqZznh`Hs5uAY)vE7SoduRqN`MX|g&`ix^gQ?%@>O^uB?@XiAt4BR5nK2f3H2@$Z zf^&=gidcSy|8(w8+}EP3YX};5Fbg*rlgx#|5hSpSRptKPsvIRX;&E4U%m=VE^4{$M zZrJi3|Cqzp#~w^nxz>2Wf0c3f+oi+f!@YyqLm_|oIZ1gR>&8x+#W{Bq6dbarmKZju zGgnZwa~dZMC!Vb1c%S*NiBceZBI*0hY@Pg<{a7WcT0VE<*u1|-Ss6CDTA1nI#%+42 z>a!i^k=hn8EnFclnONei=dI%1fL4z`IGHJ%#qo%M{>tpP!CuuXGa-cxxt#3aN4any zzr5-WR;s8olAkV^FU=&$suU-j|ju-HLrHsj7w5<-0HNy8_EJ z95p)snWk&_V4WQN12`3Xw67ioHWqNx|Hq~m1`M=$=Ota5b#wu7_{%~SkH>L~Ag+br z0$l4ZrCyoU9*vp(sbA&~i6` z=Ss%SBRb5Iif2wtvJ7&T-+dm~gc$;6^ts4p5bjeOM$4$2ojH%Y<8wl0Z*-$;l^>cz@IH8U%o682$lsy;SDnG9i~k3-0b6i9+b(M{oM&A}{MegmpR>v^2^!2XR)t;uCx+^UbrMysZ{Qq+_6 zZu1NK`cEa$_&qG&u&uIT959Mn{&ur4QIb)TDgVm*d}0oxdU`H#H2%L32eO@G`2Dlw zuq#{TW$%E8E`<_iVgct9SG;6=_s@2QK-)R8+H^K#Yd>flEoK~UppU9N^u0#BzpXQ*PD3jU%9PkP#Zd2TfZ3(wcwkq51g5o0E`g+mfnXTD7n0?|uy2Rw-@8 zWR}iD&nqR>sNGJcS@?V*7;ch5ZyoPTmBaQk1;JP!u9ke?|H_ZZBo+O-+t{={Ac)(E z{hj-Z`2LoXsD5I#AG1a?kS9m=v;wK?Vb;+C^^j8fkO#0@d69q`+eLy8F28%|9h4`z zz-fbuIPyxY+9OU3p?l1eIhBK8hgCq zW$_{NfkRyi5r{FW-E$$G3RAl#WN2Tj)Tp+}^a^>xI*Q^dmf*<5k1NhX|hte_A$s+OLUEF~9%LN`H)6fJNQMy$`{6?adG$#l@U?fnu*q z50FVjSH7_92$170P#Nw`>repl1MdaUB*{_nI*ec%me<$k$pwi6HpEDIkJ#`OG1?cF z10T=Qb2Y|Qu@5z$`F%~n%|80^JL0paJDc4zwo}d9jE*US`vzEn8|el?ugkUpAs{N{ z=Lv^>rCm82%fj9aq)7$V=zTT&*(NL{lO(#<{lGK_LUP2BW3MV<>(hkc80yeDdnDKL zJ&k%cajzS1jQxy9jg1q3a^L7`({k(A&ftBDUlc7i7+5s5=Zh$Toj%qcb+9`qvpPGf z&6FzkG2F~##`RuHJig#-k>hXAsPsG2qQ>j;rHorPixQs=uD+*?V;1ud?y}q#vSR(^ zBSg?}9>UUa-yqUi&Gp0YcX-YAGFj6Pmgp5Oo;t_3ErIYjLz?Hm9G2hZCkBBXZM!>4 zCL=4lu(qTkFY!(1CraM77V`p40^W8Sr1UWqIARC_HN}tn8mM??#zdjl!lIe%&hn4x zYuKdX41O;EDV}c+n3fmWHro7p_=O*Ld|BMPuCQ0!A}=E)Mna#RT#8cAo6=g_B$njs zgLzB}6{;*RUw-dod{MfJu7lm7P|0Hq^ zp34iZ5POrZ2PJ+uJLGNVC#L=l+HR;U967K$depj(StCOeB6!}*c+QcB9{;U%)=~av zC*Rp#NZOUK+QoXl03f+8FI-ay6|0IwZa+dtINdF5^&Y)eI*89(rQRY*5yK3zajVLO}CxhNgQwK}+9^7kU4e)FUR2V5fVRc?#7 z09-Bus}*>2EA5=kbQk(=oAmt>P7IVGokaA<=bjFNRbPr^zwQgwx+;kBicxv!P8m9j zhKU5md{X}~??^xuLEKk#swK#TL6_{9uTm?0O7?_v_Az{a>h(fB56bF{S|Fp$}x435vB0e4YK z1{yy`QgoMd)8G244>};bXpJe{No5I7voAbh9glIAb21va0um*C?TvU*s*M*Bi2_$0 z^$}(x`yUxM50~`K z=fS>ij#Z6s3eL%=o1(YnlFk`5D{a%7W7$UXf+W}Gc|2T6v}-*GVpz_ofp5U$D}_e{ z@7P^u^vV}}5LS-OVG*Gf-5ALpEZ5><(mjva=S_U$;5%$Zf~>pN{AtU|{|D-E&Bv0G z0QnNf>UwS1C|7cIYhjtyu8TI-L%94ed%oY!K&yEE-ak_L75H+nd| znm1WGSnWgvpmHjx^@!2&n%mf>Cf!j0r0W^=*=(~Szax$#p6yAz`((o?iG({S+rvL% z`Pk3L-SpQD18|Ptb;qWcte6zMF3N$f6}1yo{<_MpnFYFpuG5~zMjgj%#c9-(3GB-S z=XoMH2LQaWl<|YJZ}00eHI?J?ZBoVe>fX>=CoFbVA1m_q;-_q1@_3R|vZS#Nyg$@Z zQhi+Vi2?LXBb*Mv>!+3-iPBKq#>6M=ua&%t?s_%h0%=c5b z`S9GO?ZH+1I}(!QgN*^%gj5niSSvE~L;01+@&&0F8UwUTC zB39d-nG6AIH(2wQhR;IZ>^Oo>JHuMTWaiZ2t|XCxey_2rpK~o5;T%vl~u&7PLCJR79BF>PH{k~AtsjT zjzzWeOOB7-muIOU9Q={noh_9dtt1I-SV8Su!e0l~l}*jj>#D zs^LQ<_{MARb6~fc?s*`57S!2;kNSAujMHL2jKmX-8hVPS;hkSgeD<(3(Y`MI^TZa9 zyl#b^bKrH3K89L3+e!78V%)_yGpYUs7m4Gi-Io_o&-fc}|o%4nL=BoFbZrV(mmi)(0 zi_t7|#X;1UNIxR)JJ^xZ&;W=!QZ^`X3PYGvX3iN?J}H3d@G~QH!F!9j%QP52HLq{s zvUAT+qJ`?rHi#EWP?gE5hjrU#&hHrP;7)k&rChGx?Jrwzsq=G1uC0ey75A-f!SX{Z z3D~F4hHhmGD%`X2pqTe2AL{UYpW9C2X`A*gZsJ&-YjyZ7WW7)6oCvv;LY?HAZuj(j zmyfD4VcYJnl}6-G@SL8g&tG>zMAwc^?Ffw(s8Eh7ZTIQB!KH~<41qMHiw{w~&C{36 z7evAiX`x~_%R!ccU0Ah{4Q=yfUtFRC^B!y*W=EjN#X;}<9K~8tM*d`^{5o#^^_l z&iZ}RvF9gi4*A6?jzarmkGqbrMo?J_RDYsmBA-Zl&2UcOVd-lrv6-yXaJL&6W@B>4 zhxl~vK87T--sW+FEAJb<&`A=1SH7v%#CfNJMn{38nGs<*4{pd5MU zK`|(GGHg*}zm1$<5cV5s7zct8web~Scx1NH+kWvKT34ViKR=rOSdMV1c7$uMCYS8P z77I5zb`~v^PRRINLWjsmLr$LFGug~3_+rHOi_&4Njfcm!GYdKe~FYT@3S#DW_Y*2++Cxg`-Fpg4}SP6M#_Q{?C<#4;y{-h`R*7YPrT>rXL|d#`}%rzV$bG#lyj6HfV6bQX$|3i zEUn(9*~ruum^fLMse+>WVLt2octB*ws4e&W?tOY_`Fj#d22oDSNxw9C=&-J~U(F75 zWBx%w*=IlR2&)xnr*utc$dctJPt$kQk4Vz3WU@462i;)DF%MyWZXMIuu+=`cIUDU#IwBAE zlI?!(oWNx_M~v3ZR(pw<^>i(FBrL1BG|a_+@Gve$Pmph=CN}-Tv*mEc_2Qg8Lni6> zMwT>iru=N4I*74S9lIG*z7G$QaF`X+b>5Aj!k^l=3)Mq!hipK{F3-gJc73k8sg~yr z9WU%AiiFEmj2W@gszN*3ERpF!q*d?Cq&YI~wsX#@t-Ydt4! zcB_A<_dc4bI*0FMX1)mGXKCbfRZ7fe{9?vx)B}$256<`L;yo`^Qezw9f*pYdE4mF$ z2Ca&OjkLXOz6_bGTJg(S+V1t48h1>C#YIa!Hjnvvp&LLQK2lJcx6%Gfufpbb5YrCHwo|LkAVjwiKE6y|wa z$I$RJT%ugcF32Bve6>SkEFY!aj~v^e=FC=l-ady3-CNEMvSe7RO~Kok$+(0_Qb_g{ zI}Bo3>KJF&zA_UnJL4*v+ohh9kJ2t*uBxwOMK9=lWQ-x9kg`IjuXK)_C6v2dtXArm z3z2YmT`W3T4{v17LWM2oyUF;dois%owQkLC$_X}V!Z6-tM!g?XPdf5^eK~aMM_%Z) zQ>JJW`(gTuN-atMU>*1Oc(~J%DseL{u91#84Gm4nT<%qrw3t|A@JdLxL5rmR!Y|?D zW$5j-$ux|6kH~*zcmSfR;Ko>fW`lkx4#{Vl;SX_g$(CQd_C93DXmEUZ-@x=e8&fiz zG`~Svsi!;eo><&)>u=JKt|z}Uri zNd7={!white!g*M`;ab|z9BaC-j|atUEAaAP*HESJEm+nqyO!&Y3~BOTqDYCW}=uO ztMu^9#8OtkssjSxa=!Pl$#Ph3nFw7wGd|zO0LpO{RKQ;DJJ?Izyebdoc8-f?wK3ml zk5>vszce%ZBFlESc$`MeX-_`rgbR3#ydZc1Ry=X1%_HxUd`2s&x?&ii0GN{F5wS2> zwTC~Dtz?EWG0^_4`}@jlXvzch&ux&yr8~eoSs;i@XHAUfvj&YuveFDhgHnMqiNT!L zvrju@Tna@x$|}}f=|242nes7K6z_%0Mp>33r+fK96br41&v!HUL-{g`X~KFB6vX6Y zbF{EfKU2cReRh%I|(&{p6HG2TLULoF?yR?g6Oz)Ks`9$l?ftt1(Dd$qN zqCN1;FCU-YJhV`(b8{FaTG5>p|_j!8Qvm8`@D$O=DV260@pX!FvG-cChb#_1>92QI6w^VA>CgtR6+>b1I~Aq*&5T5>qX zvo_Ddgv!v!$V+qSi^&i4-_>>$0o7HxFl-!lX9YeLWA!22hOzoehucSRst2>Ucy-RG z8^+qBai%-G$-6OcIE7*{`QiB~xWAr0~3ThS%b^O01{ z?{27M9O=OpB~f?!zg?Haf^+picUik!?awEU$@%Es{1qVT0WJLB4E7SH{IFbnsB!O*0+TwmHYOmMF z`ChC?-lL?396M-{jFf!3?{y}qmNMM9R!g7?Q+FP-w12rKy_h3WRnoyjzScy>8Si)T+@ z&-|k%G^+rQ+i}96&|x=_Z|5JpRaFvr7)VH!Wps49PF1Gui9I`odueW4h59IF1{c+X`s;~xu%XLv>q5mcOq>$7Co zF!SJ3l)#~KYGu%!=WS4`Ao5A4EDa)Eafz2J7 zLo0Yru0&!>O%DYh!nB(J?O7?envB}R#E(nuM{?El%J1S`Kk6y(`G5KQDlZi80x4z$ ztps4CknCAOGf1)sy`4R(Xt`1XrQY;gjnF@t;Qt;s57-luO=)UGmE|#cDw&+Ziq)CKb6o83aZ-*+i;3H*$|(r%|kWu8b)C zb6EZ!n+{S{41d?{sjxHPfhg3K7yIMnA0(vI&u-QSq#2gE2yj;{J3mL$mTCH6!#;NS z8S*G?W>*;e`wd;c$cxLoB(~GJi?h?xarD-t(*=n=dPnDi|X)zS$X=B(V*T84cFkJ9K{*eLN?+NP^g#Lk@3H z_s39H2btkH_{ep%cWepm(2NGN6PKTJJYLMtiYZPD}zPY`6xv;f?t}1`DJfL^5bRI*{Aw6cc+d7C7?qbtXhEG&>sm zDEqsS=`8ug)T$^}VFE$+oOEE20n32pEXT+BeH=k&xezKXNN{=ilXPicuo>+KA5LbS7#7T`M5#3K|--uTlE=eSV^86m}iMWHur zYfeddqdNWVW=nJRi@5jtm6WwS9?&wFiSNpjf9v^{CviTe=|WNt`Tz=I1uT7Fx>#W@ zUOY#?_3Vt!=cbRVy(zE9$rFrS!<8Ma<8&j+CtNRmCJx>aO#F{;)ni&iK!khC{f($;1{##A*NsGltGlzT1({{e^;vc%yjvFFWE}X4*cAFmdKfMrNa?Ii(fSu-jA;h}p z>!5!o=dVWWn>{c0sF-0AM~U( z5P}C|)Puq26@4>i>J=PzXhI*`S2DrUe(f~gG*YW@$!}gU$baYgHEhhk7NxbDiZKH3N2l|ic_gRzq_M#=EqBLRe6B8@hdo#I%X=v^qekY1R`x9Rz|t%iL}c1MBB^NCA3djGgA8yr)eHj+YH&Oe{Dv8 zkFj4Pv*NR_hNgJ_32dCs5+tKq#3ZK8(Z8|+4sQgt-M}ptlA+jaYnV$acuz9jjB`+? zCpVgkdz7#yea*{K{&J=8m+rMZrKE4RH}TAiTq;_0y!{($VRxIHueISNo11rpvAg)9 zYd`&lcp1kxNl%D!=~Qv*_7V-%ZUp2hsX;~H9(IgPwj|GT*tw%6JD!q-xH-uG!avN6 zdOJ|^rO6K}$G_2v6G)!+bv=0A&@hrm0ui2QS5WI1osuq=`eB})w@PRR!{)kqrX^rF zm98?(k@JqoMme~K%`8x*_rp9WWTfwHVPTUdTD~g1Yo;mW4V$6%8g-uoA{54>M+|6V z&)InsYZ8_*@@m3D3swp4N|B%{`7N(_ZNOFPzZ)VrKatzL-+lenXNQ13RDtwd>6x&R z=u@$P3-_==*~ChA!#dBPtW`Cf?;oV_ELKy+D;y_qba*$O=R5mZ_#9O3s_GD7^SQnU z`Q9FWm_xeax&GdlB`4Hc=Y~ciwaUm?~ne1VC3|rF9`<5oQe%3j|)2&}vG}F2J zMQo-688v~E@F|%dgV?**7i%aYB5LNQrpnvf4j8A3eZn&P(+G)6BnIp})JO4f5g1YOY|dz!7NmV#pGw* zb860H=402iX1WrVTKNHYn+3x`y17-AV7zOUuO{8ZqlYa@NlU|Qs-MdD&pd=sO}Jp` zDpemkWU22{zRPKH<;WLLo*YEPcKoXIq0$Ym>k87*8ZOSyO_mx^Biif07s44dc-!ny z5IA)Z!1(hsx4fViUsLN#M}KUy?jQ%^IjC6Z-D@YgUQ-HHcHuSdSN25N zcDP$Rd8j98!uM1S{l4|SV(Y8vTrkwY(9i~jhTK5~Gjyp9F)q1`Unv_-wg}OxFLv!z zOaIDPP8+k#v^8{<;UrZ)BagP0GyJ*iq5Rh+#YmS~kHYmYG+0+$g?E|1n*o-AXmU(j zZC^^Au0-v0JJh&@!zXuHH*vjc`y(@#`AUjXt+d*C1SkbuWdR;^@;kJIoi&|Tju+mF zOCKd1z(*Vje?>s7es)BnB$_And`rBRJ(Eu$Qw;jnOY+8-`LM?)UeG5ubbkcZA9)ln z{&#RdO}u6Ll+h{u(HS;jr>HeQQ|$HIXu6U64>t!&?>m`Cvkw?`tS>3~WDUocZGUT+ zEBcu$r2}!K-NtM8Mk)PB6C^e<5>OyQBdDOykd%=$>5^kv@|6lnn+OJEI8RV_IWSZu z1dHV83p2f`B@J5+e>mi=o^`p}F4Zh)8CoyfF)z$c$eo$QI1D1jduzB=J*Z(z$>w`T zEbi_(s$G9Sm`QUTb<%hC4LeKg>h`nyL%KHAuiJ#blB0ZIEa$u$4r*K9jI+Wd*YhBm z3NkHUG`#Z>vr-dcHu$|(@_tUVOEl}7 z`7EkH#-$_{7@{>n^_aybk(Xu?1bXz^ElV~o%c)^LWxe~q#Z30Hc9I0&tm$r8ypYU` z?RRTL2NK~vZ(X-E9@zSEi2LcN2k>o%3CWdYOX*i_J!ywu9+>c55A+pn?+`dHg1xIH z{bs9k&vIe^HvV(edv@4a_Rd=QaGTE1?hWmAJ|iuO|WF9`^$LMq%6D%esi50HyE=oOt?EnecsnaFoXjvX)Z zJhYagA%@HNlBHQScVjVv~K4Ad!WGN(I8J|y!tCGx?>@o?dHfd^@B2AQGI&& zWirL;JBE@Pp@9}Zg;(CQ@0j0FTDc(d?KGLAdb4-%?mxNX`pQeXhUa^-e}&wNqngvP z&91#CqxtyD6Nlvw@dlf7Uo0uKCoW7IJZ56Zn8_xonf_I-fsEylXyAQI+Lg@S}tc#NSs$Vr`wFLiPB@I5CXC@G|Im{$#`+CG`45K;Ul*?7R z+>Ta0VR@(`ekmlZ;}XJN7#4NY?1nO@hjjcp(Qva9er?2haM>K5`A4&>#0Fzb+t1vk z-4DN&MiLFzwQFsj%lG}nH3?Pi_LF?7ZEt#mggyRt-`G&tH@MZ!8N7(Mlg-7S8fg?Zqr>;nwlk>0Y2^`3Jl_-mbv%1&&RawYr&y1lIjdnaEeqgN<~t?V+mm<1+j4BnN$`#8>XPT{UXz0Ab=d5Ge^5iZQk3!U zBmRG9=OrhYnNR-r=b8hk$o}VcK2Xa3|Gx5nCHw!IMkD(&0th{_)wT@riHXOw=GFcf zNdWcolh+d*;>%m!AV#AGGJ3LyNPBou4@h z>LB)(?$)iLqjZ;O5YA&U*8taV@lVMl7cx3v390)+EX$^u`z(}%uF@Inw=|ex1U3q3 z2Fb3bdXHaQTd;z2A)sajjnHjb(BV70qlEuF5BlkK+Ti2L^2;fS)r$elU?b!G4fKAV zGL^XB9R;etSL0^fzyCis?3t&)xOwC8R;BCkgBl2i8LMfx-tQ4jp7q z+;bkU3O2OWm%q^*2H#1%#g2D*ep}q{l^%+U=74_hs56Pvv~c&iug}hGQGOnOnYTY^ zCt&A>4bm>1U7zHuW`y-+>1cM-3ckX>I9+83Kq+6ndXDHyN)2|d0p5s1m`9PGN7q3tgUI(4OrG*Epc#OSO=WeS7;L~< z5e+~%iwdZm=4;ptFLrlb1+XQR^h@`L22jVI{cI7F(#c#I<8Ha8lw8Jd6r$(YbxB^CM#BM)|sPln+N)>mcEY>Y5-O!z2Pp%aZhdRz& z==|ts36QJ}_`YgLnS|it;2rjjsyhVomGESNWub`@ z`<9PpP&$+V&D~MV$Mkn&m3tQtSB0$3Uh$u0-wz53I`nROn8ht1S^j0?Tb$kzY0l@* zjvMo!$Lq;~b~>nybYY-a$r9fW^bI`TG!PGco8W!2YvFUoe^zLA;5d&ss5(AS7`#Lg z+|J%!-`6uuTNOA?QBLM63S`A3RDE)euTnZ)7PB@>qHp#){?IU~NS%jWZb*Q*JDrNf zw{Tmxx&;h&PDDe*S?WnIYdlNNBI3^XQ;sIhphaF#3dggMO10dUA2T-JKm6h;qcbYw zS!`bX-5IWnEO3G`SYZuc(|1YC)N3ig)$2o+g}W{|ZIY}2v&m$c<*(H@`+Krwggg|~ zRte_3FMkwX^FCM|=*a1g26}C&T(t~CC>lh?o(iiF3}t-w4<;#0ek8&R`{0BcF1xsTaHzyn7_() zsBAwayo6ZuWl@?%M~EdbR4Ft=%BUhuDmCTKv1lZsehx3)u`NOE0dXw~^f}h8drBW)kww@Il7tRW5tm`iX&P&Ti~h9r6k22@Y#It_p%s zlj-XZO(tj%Z!=NnBscm-DXqn$whm_q; ze%?RwW$S<3)7;;4o*Ip6%5AC*yilCZZS~xqHJBT{1d&n}1-gRkPxDMnVu2e?qTbmL zu+Y06A$0z9c`*LeWqmHQFE`cqPZ!tLax^5|WYRpCzqxIATV7 z;K5p~tRToI$G*y2zu~^sge(24DSM`t{Q{I(m;}xvtM!(P;)58BR*OGFkyji;0x>N= zzG|9)!um)V!q!VrApA$BS)f$?{_@^l_oY_%-=$x+Y(7?j101Td@rj7Sjq5GttbtnQ zfndA7y79-wS3 zs$o)ylAS19ruPNEd4xzpZ_mRY@5k>iKd5us)12W1@|fpK6&5l~wgc%!1>ZSq&%0iU ztjdIvtQUp2!wjk)jSRq~fe}j}`xbB@h^2d46P+&pI!TlPEQSmUBy_yO?&l|Nv7pQ3 z=b%!V*rqRZQ*1*4WY?Rj3&cP`Cr4|h%(S_9Bp1*fo$1#9kQ1~vdYf9DASH3kVSo-H zBApRF97%I23y6>$8%^}Ht>wo;R$Yg7TcFVTLSGrXSm!YPz`ZxFb9kO*m1%Vult-q@ zX0Z}XtB!`P(i?L7_s|xGcq>0JnarSF7kOR_UYM@_wETv z)~2VWhn~7cF2_n(Ba%kCMub#Qqj6IkOtlAhRv-*CR+34M!!-=yNc4{0WY2u_>oL@1 zbJ76n5ZEll9&Jo~oCQgyevpTlq}r+#1kc3V&6#xH*9Jy`RuTt}MtzKvCe)K7eisEjV357kyK_RS2{yZ&v{&w-7v>n zJwU}TTjDK}WK7zHDPcRfu-@LB=8N4HaFoZW#8zFLS9>o3t@^m*{Ub^H5m`?tDG7AAyz|fC1+zvSo1EgXpbeF+ZVS5ig`#tT`PsFxo_PyL}-N2(l% zZ-&Q&k{)TNh#q{n$EIIp{rt!<-##&rb=9IJ2|lKrSgbRiFp-b>z)g+2@>`R*Ks_rg zbwp_Qw_M`!0Uh!%QCYd>(6<(a)+zealv9<9Jm4@dHr2p2$45l@<=% z{M0ELdscQhZ42f?Xl9(NwZlwr{G;sW@%eVh7MYqwC7S1Sy@l4Jj#`MR&Q9FBT&6E3 zD`4bRTQ*~5r;3);CY+@8AxnWtKPRi2)HmehlT%yNk2xU}NJkdIi6pc9w`fxQXC2)4 z&dwaI+(0;VWv5e4Rvh21_DDUqY`N*MhJ58n{D7B{_FjYv) z_Y?}-5$UyiIU2aLltAPwd4^9aLobhg-AQhQ3CZ&Uhp7rbuBX5U#FH=DRi_yt8KZRu=X^4$=u}=(8Qu^!8la(68?n~ObJKJ zDh%XeExrdg%1j!I_fxBnoA+%t;U$y1pxReZjX!IbgU?e7K$!VdgORRL>M`=l?#jjh_(N-<=E%*C{wE==NkJk@70m#d_2G1Pa zB(MkqcL#YQTB4LHUYRpu;Oy97$fVg4<2+rQM|kKnRt^YpUBzrLvrnZwP9M|bag=OC zl?jLmQnF`Py%{K2lelYxaUP^+WW*X|O-vDT0D9GYT?wz zcQTa-sOvyn>xF2T29rWNT!p#@yWdZ>$_jbtxng>7U>8vQswmFE&#m5T@iv)SVQsRx zhFbM{Qt+WoeU$Zp%6dOR0H-q2ZZ7{O37u%+1YRP8eNRJH*MhcxdB&8!(FO3si6V7h z)|{*pk-7Xx?;qU{(pNw5zm#ITf5eWyz1Wb)YXXmXmKfux94M?1qt*v^@fzNu(j@% z6{r2^I3yl^ro8Kjbi7#hu~d!~3+^;86(O)wN!gF=+>fSvss^h==PMdK zRAh3T?-CS6c_RAA4R&75o!z9$$v`dl>-}sp(DE0zXd>M0lDk&uE=EB7{O7NY#K*#~ zk0S{07-{W%Y!d-#?nBn^lW~TIfKgC3m)!W>{i;VBd$+sCeV_Zqw#&`?Wbs#3D+gQe zQOVt75OH79ersS5x?kIiudY=kvG2`iYq+TufH{ifiQ7_*yW(ri zj;C#*>1h!)=p*q`dA!zbfdsK&&q*nNOkqu8jX@6gJ8XuF_wXlOh2rU_Z)?h*^?qoL z9>~w+cu{fXk2xmrRsHcv!X$BE%@eVqV?Bmg&4NbBh2LFFb1AT#+@70iex2Mh&bzKW zUaY6b^n&@>lE*hZV8E&Q){=?fSx@~e{0XnthFre0S6`wsu6;xqUMKC`of%e75Ar9E zO|x;L>}}#cyC}g1|JZKI+xOl{vmH!t12TnieEY?k2`@w~hXJj2pfb~&EHU5gL^j2( z?pLoM{{3tLi~GyU!+|jtcjzf8SM9!@#Kc<5gx=KC8V|%C;Rx)HCM2-%AM)(4a+_DG zKmR%EuU#qdd-OP|r$=;AQA3M-H~AJaN`y`a^JoIjp~c#-J@Z%(CXH;t0v9t&KyNoj zI?TbXBoZ6<&Q(Dv)60UXzB8MAf!Rzs%9(Pp3uqhZL9|}K7Gu(w#B0M_6FJ*q6SmU| z#~8$Tae_z*l|1V5FW-+v1GMwu^HrThyttP^xJ1Kw%6bCgO)B>xw#k}9M{yAklTbes z_5w40TKDahfMV9l@B#YvI;lZ**N(#T{fcjNfo)Y^*UX7U%YvDUn*a2#^e<-v>@LDd0A$3U&BkWvt+CyKXN z*n0AW`<)7u4Hf8&tW}L{=Vk6bJ+*bAc#*i6hFQyreqz1$L_h}|J0Fz@-Yy^2t&F{} z@SEptFOvO8-V^^+C}@XjVkT1gS9`Dy87f-x;?2-bYsr<$b-U7$va;gynOf|foWMNO z8F+5I95NG*{sRfsf6m-NwwggHgihN{CUnG5JJEpQt|dh_T^Hk*c;o;@ zUN)Y+4N|$zY5g!4Cmg*sL&N!#<)PgJlwd#q5btu8&zyT-Y8-iCtY|!z=K1AxgJ*c> z=XO-wLg^t}$~B**54Rjrb(jeFmEN>BiPiFw#>|WyyT!uG(A%fXh$H6Z*+%bj!eXi! z<}YP7O!a~)J6Z0n30A$@JLHTtD~MS0#PcVz@`GtBi2|W{Eq|uUdN=ud!6BCAQ#s}M zbq|>5Vb87cyQ;mUHv&fxDuKce(X>pfV!kna1v!TAOzE?9%1X}?;T+gE?S|!}3JhXj z%eRyFJMc$uHC7#0tL#CP1{DI&-R7+OOho3t$b?$nTxcHj?X5W)F%yKG^K3}CJe(}_ z5Bya34sHzvC8sXB=-TZdza)H6w=ChQP7{R;RFyk@{-Fk+~KRBiyY(%$DAd6mc3*PQF63e1BQ2J`fI@B4P|xT zd-Z`6+7&^q^G&*CDe0DU{zJw`-5lVcuYE=S+NWaE!E||`TpdgOygG=Dyos7zZ0o=~ zIayrG@loy64FL+HqS&gckS$VxHE<(sV20B>KT`N~<|63%D8Uk?jfvIptBMBLPqBNi zqS@(hAE03u#3>Aep|LN50?#EiEb7o%wwb{O6O zl*7T30i8TTzT2=jbQ7SQx7KUUoJaE`mH6U@v;H6&99!wCDDTN3Nvpo4=f!k@Oj;ZS z;Y~$PSFh^B-Gd3K@<$QN?VUspTe<{>Js*^mSFO}qdM@2M{AfkoaR7Lu`Ia%UZ0mCO zmyBWB`A7HV{*rZ#NGb9Z&FLnnY0E2u{-l6tip)%hd*kYoSncJyyma!1Pj}z|pYw#Of-O^44RNh_YFNS7M80pi{4&X2}kxscErU z(&f_aaWwNTBUTF*`&t}-C-3LkP$Z3T4tx@ANNqEqnc^kN1rEkqlIA^ybc+D&F21>R z@dv|^A3XSWl|g5R+$p&siMPzKp1ePqQ>J7BrcwP;l_DZw&T+a)joW@p@;|B^)TX96 zqpkyl>xdm|d`+&r!7G<;8`)Ui_n1j#86g(1aR*rEh66KiM|2LJ#+D7_l=<8F!^4lM zHw@%aeWZ7m0$ZI&gfV=-h7o&b#q^<>f zra+{WH`2$NvpiX5^6s_wPBs8ZQpz#+Xq2%s^!aEptr1E|Yz>7cYFuk_2X#1n$8erW z!GCX+0b2N4t3uany6%vLV5%4HQu^5b9Vn>G>%1i4lN$zz&F-6$#kWSQ7*Yb~Yf6&_ zm7^@SR-=~^1+11OxJTUzhBx&4STN~N0@D!^cDrOcTo!?mX}oifvg+ND`^WPHq|rC< z#}TS$VSD#;bo10~UWPIR>gPq1M{8f*2W;Hp^+;xYrzXnZXHJ6LTGAO>+6?1B7R5HP zo(9{ZN!sp|U)i!m3B2qN*ziPkCmoROQ*&P)$9o>fui81h#M%5!fF5?eBt4uT`LNjU8(oEM(Dn;Zu#3DE8;V&4s+e8G3<`G0$ zf(%h|1@50UVAoF2y7d0RX`z*Yd8E<@ly66kj1;p^V!0i{>+fhW(RlA5^5p6J4gl0^ zF}9|m@mBHvRrWgdIqhAGIRt#F#-7PqHo?E%q})`TB0YgyloR($X+XKZ6lczptk^RNYe8?@f)WqTEt~H2S-p`VI_P-BjvIlC;=h&GysI$+F0MJp+;3+;J4&4ZB=slUv99o0Wz5BCFAGJC zfRQeRY-}Lo+xy+=BH(WGwwnxg_8{C1&-P8P(Jc2vgAS=jN(9ZS{osTTpa4f^*LLkF z%WBRE_~P<0?->5bm2onqw3-9kwUe8rl)S~eFQ!g!3s+z7<_$8zl6_Gz@Ynnjv|&~m zd(c}j9vX3BR^NWR&3pT^-_bqx&lbuvMh{lmm}-{0Z}aM$0Wqhxt2O{VkG4X)B56v@ z6Jw5jGyXiwHqg7=#@~Qd*WO~tO^2>v%g!*1-G%!I0n3xniIOt9ddekH^^8XXfrthj z*fM*Y4O^oLd!yZ-C)paA9| zwq5g#a?T1Y&gfvJ;OAwzdI7|C6K7C~u@W;g6QOc)qsthyAq`oQN0bW#a3D(Qy8u9* zKDL9jcrdKt>q0;GOpzcT?C~j2Z1_ai#l^)&L&8F)zcU@R-pFf~;VUaro;ARccbhPPx-d zpVj=pukLgVcd#`eHNK!@l~js@hWAG2l%AIUr#Um3tb!qxn^~z1!w*4vsh1k>Tu1V~ zeNrl6OSN4sLGtY;llNeV!Z`?;P`uVI&~Mi{UU@9D`j@;t5-VyEJeCi8J+@xNx8|Ip+YzGwxB)|t@vk+uHwTb&PZ zt{SZZ`mn`rOA!m(aSuxKiWdUOK5jxq{OCa#UW%b^eleGBsjzjJ(*vc3h*7TovBQ7p z7S`f4*V=#WW{gsoaM`OL_?RyhV};Kqc{)1KWVM5+tE=9YuCDn0lWJXO0dIW@3z}|q zVwy``eEpGzNJge0)sf4@;kG+<&o-&5apt>a7$4_0TjM3GIqt5SVfG*p7V*drADk@G z*{gwI!(qb?{QLhAX%yQ3vND>?_@^7pQGK7$|5hNTV~lT7m+qHFkEytx=2TmevBDv& zmnUi>W<5eVaTB-PE=LX&Ry~IE^Yadz!#p_(C2&GX?4ecw(Jf|X=*4L$Ax<=%5aq9- zc8zjVtR2e!ANJ93$ut?+AR%7B^X%JK-{OCKB37q35z1)*sI+RKS((<>_#qB6FI#5G z6DRtK+P=Kq&739@m|emyzsSK_`=qGKfwH`I9fL0sp~E!uo6oZ;%x(-y;LnL`=%UoZ zWv49%EjJRVS(BujUl}!4NNm2_RED?sO{Jrye+WI=UsQftY%p$$Oiq}IIi!q%``=tn zbrYj~OA|u9v0swG-EU`OLWQbF>mF3|(K8)?_Nv%XB6cwvuDE2s$>X|bfzv&1tAdkd z9LhFFvjK6aC+#tuXvysO3I7sEY>(OQSP0NTIxC^HOydz70ZL~*N+$-XbF&DE2M?sl z7R2eUr|HS~dY+S?lv>;+Mn?o@hKTZ)!iZ1In;KhOnlBYl{S9{ZhABzMlPKxO>N_bC z_`Kx`RtAR+tUL3RTD3PG7*Av*p__HE@gG<%aQ+|q7iNwBzxo$Y634=w@bRC1b`baO zDgF72#_x-BIkT{9ucr2vzo%kOKev{Yb@|3T1Xbt>N=a^fB8MSjSg&! zP&0XgRurZs66r9V;GGw`Ytp(#0fFffLgLb7oW>mPpGLsva-bJSlZKIBohkr)e;2&bsE%XlZzG-HykeB}fK-_g2X8 z++GRMjMy1OwBc0>5z>`qX((rW0Q+n+1BvT-mWGpOb*lz`ccUgF;wX^xmvN&&sJGw(G2vYL)Sn2WG^4+?2`@|&1yG*aH;=N?26`aw^<|qxkFaF$IV{tR z(q2!(+wlGHAuba@F^fMf%v93(sX>y!gw{vaq9T*VT0=@3kTuei!4jRRBrBh%l-ORo z^>ksg^wKZw??UhGIhR)9 zH-2yP3_>HXtC9!7|30GgTH9PO6(->`=1T)IWaRr>30f~|$zV&bvtKa$nAvdY@qm(c z9UB*I-KStDHoOhrVesDR-jH&x7_Ie*G$uw;?X7g^w~C9)JBwQDr`1Ih(H2Kf%s<7O zQ>JnsV_@zcr)Mhu4N2#iaqO_*Pbnxr5}UbBvR6hlOHNIHCb&P^M0R1q9`L=Nu5 z;_``ajr;Z(=whL>p4#SooVa}WRm?a1{_N(6?pY7jm|nT@F!rf0OdMfYIdbrpQF!R* zhD&^sSxGlcW=`9E;Wr)k%-Rpah~0#5<$Q*mV+X}mD#4=^3^Mfp*%AJF@w1)2Lq@44 zps?7Tkx4Z>B^T*OEW(x}RFX4?4s=szg52zmq8ibiaUsNd60-RCkKa9AKHWzCa-_di zHcwzS{%XX`ZnOWh!e#!3{ZC2;96RVc^y@Yw`5wxx@U{WMPn$FJr!?qi3JP1kYoeQQ zGTft2!Z+!CwNG}Bs0y~n83ei%KMz`;nIC-+X+B2vA))uql3t7WoqBGxQ|kDU$PJJl z-o5vFGIMQ4KNHuYUrPLi%iAn8xuRXQ^r~8+Ik`oh2P~v-f9Z@qJ%;Uz*7Rb4Z{+P= z5lde8$(AeW)u^G!8j10o%If?0rIqC`a8<|npg42Dw7(=7Uvl%rR4Ii}6yddwO{(5{qE1} z4p-Xsb|tU7{L~vC&Cq3SJt4T}p-%)Lke!?5)YnQjgU-9m(}(c}U3Ju@cV7f~Ju>dU z7c`Q;nNCEtZw4()B*Z7=kBEC!tWEsri`Bb3xC_}2A`M&25A3RG!dBGZm{+*6hLB{4 z%8RFJC&USVk*-d*rxT@6-qq+T3(irep}cIUh_s5Lf(414_7~bp-LJ$=d*`;-WMPQ9 zZdIIu)3L}fb$kemSl6f%w z@6kBq3O9Q;#cFlcCqn;Sa0amjf2+t-Q!Kr;N85Paq9Y@NnimU<=|8hl{Ul*3 z;#ls}&+HA}s9Q&C`f}}lgM}l)0*q_a4U86Tggtnn9x3{zrCBtVo$_aKK<$&-k{0PtmZpQP%4Md zcAY`&-!^vNT39=LLbyIv#J=K7_);W3(cMQ3OLI>qqZsf0ogCNFm@d{~qlfL9na_>I*ml-a4WD z*LA}-G`7OMDEXJK21`dxx50k92uy6REy>I@YUie8EBRySPc!}BjW{L8DWwE7?o=MF z1_jre)F378oiS%4q>n4vzdd~KJx-+c@?ICKUeS7f-*4@ z9OXer9M4t?%$h*5=n+GgaJ`QKIZiMl7F+S3trmDBR3#!0sPM#+se&>q^(7%{HAk86 z1Xa5t;`dA09a6YRobvU9^BoY2Z$w5b=W9$lRT+MqNHIVI$4OiACHWP9z0b}&dgfvG z^%ve%!HObN%{vO?weF>iKWKQw&l)B)yLN~trGp=h|H${IY{3_Haa{jxNje!8;u-W# zY*oGl1S_Mm%W(ha)_YI$OP|!DUmZH@-&{6Po$!W@P##2uUbQ#*>8*bq3>2I3i<0L1 zv@1fe`x1^*w4AAWGI@_ef6b0Oxi|Vi;ps_K>B}Buv53Q0@3vxPL%+<4Pd}^P+>b62 zliGDKr4vY14%`wx>i+$V)m+bwzood0G~>ti+qT7$c6tlpCtsp;=R+Kjk;Qtl;V%AU zWr>X#A@N_9o?=s1eGjPfSC26Ak8@~WPpN%+Uuo96EhF@5Z7HOQ-R|PXwEkTZ3h@_O zeN+u3&2uH|z9kl6CKNtYRr*WB46k6?w<2rKIcNL7%;P|iiot|dXW1|1#p7|kmi^2f ztYFCZXXZ)=VH()aavfo;%kxAf+iTSCpi+8}R)JKIb8a8c^TH96beqJHX7iT@a#!X` z+LSi8m+LzJExLWjfQ1pIEwMaWLu&YiiRt4-KUk~iWLj7oTvhp3Zn+U{$We1~k)M5y zutgC3c>HO0c|vE+V9gmj(wZ)vrh8oJ-_!JvtKvSR@fFn;nxIFCM2t|cMZdhFg_u@i z2d~r*<4?th*)RJG9WH9aD?c0Q2;1UFbDb_WmL^17e%--Oe{2`Aebz$0# zkPP~DCAll75>d@y%z>-^_+}gLP>U;^NcvmKv-j4o6&Z4{A%!m-vt7< zhm{^T%J_Uvnq+wEa1%MKUpsu8j?jSarmnFlrvkEXko^r6E!l^s$HxxVCGgE~Avv_O z>aVyH55jJ9Efed~u;G4%oab(MQ^7Zw7Dgb#f@U9V%yc?1ew51W#7Ez&zBpI3Zb!dK zv#1!-qL^ESbeH;7s@{cIM-#pitMs#U)b8DR^8|)eJT1#%bU03lWSBu&efLNj?%Rnt z6e8`wgnCZBUcXQKxUOr`vDV6Z`9!B!_2|LX-#RmupQE1|A57T?JbP^WjR|HlH;isn z)fcRCsJUQ~e6UL;I{qRWfB4LcY!faK&!~ClSxKJbuBVZZu-&9$4>L^iWodA%qu6lW zNbAqGf6hjKUe{o89GW?jmyk1VZmM$pLD3SB-q4bQC`6uEIBJD9(%s6Lfjv#Bacv!_n-D zm!I0d{?G$I^uzG6zrghWUMP?x5d0+>Cm#neMTHf{ODynQU;Vi-FyEDdA>cgLJuk%n zEwE7G`J*xTC?C{jq2BScQJnz@+@Gtf3IlpnM`;RQEW0QBjo^O`1&8?`K{~l=r}|ul z4G@2l6AQ+DcE$R6R$h8D{Lec_#G#;naQ<|a+ZmtQ%`C=j!8F z|N08+e67=-^o$_H70}tmgUS0g4XR7aW`M1^`No)wMvJilfWb&e;gcWj0iss8yd4EN z@gPnzleY11V!U>_4MhS#tnCoF1Rxx#bfomY=aEj91eIhUZKgy(aY5IRN;h ztxr#FNdo8UNIMiFWJmJ{V#MSK0~~+j6TNQ!W^V~RrExRGq4}*<^Byp6Sy{13v(7A> zBo-B_Xc{5l8IapssK3q^&_5%0Z53FlOMwypqvjV+{O@q^{xux@vlfHbGUwx*bv>r1RM>|Ch8Qbtb1SNbglLzancB0oaCIj;rug*%#c6q z{#*8H84|Gka0sGQgv+$)jmPTXx=~#IuI-TP+Rra_?zy&>@mG+b5S-a1r|c{U0xkqlC-a ziV9bO-)R>n(F~F!Sy-W^0n9DJyIc`i40N$M>OXgb^`kPS{j$(A&@UX%0<1#+CRMGH z7Pcz-o#ED~^>Xqd6#Xi&xT5;m$`C?A69s@u5bOx;0%=H30=m3`jc7?GDzCAvO}{RX z&TD(>?dQ*ox$0T;aMYL-+IcQk&_uN400#%hd_Au71W;zjQJ~jy2Q+7-FV0WL9dA)m zhD6dpzXLz&u|k^ztl|?R`BRul^*zwZmfBzH)yPw#@E@Z}T%u6}88x^Hv#_#I%y z6x(}bWMt^LvNC>S0Id=|ty_}*CuC}BYOduvM4W~-vVTm@yrp1uP4D%|gNc{geE3&nM)R?fc5i zmeXUJ&Dr|fCD0Qo-1#(q`!L|FywHrE@3;rcQaS_Kel_me(#Sw;PGZN`X#3HE601_< zUmt;CYcbnr;MX3(-D3A1q&*Zhxh1wW4gPMRw`sPqYK`~fJH|~3n@O;5P7UL{EF8|! zF;S)wIM4oaFV^`XN@8cO@h(UP)tH2_0yn@^0hhN9hGxluY|ERYjme^`E1ZUfV!r{| zacvU)*gt`r;RY!^xd11;6p!Q7M%1O3d-*hQeFSiVL=!IbKo()5Sx@s~sLtc@W;J=C zf3Q1^5o^ysOLC9yW#XF(oLDfqKDxA=-dN|eesLANxnK6{=uCEDt3Iktf3PAM*4gLe zuiv~G5CJ%?pOsg+Hn0;*BK{{&Zjj!?7phYqPc65so_u-kdC2;5ATvjvUHPZoMjf*F z$k_%q!(mWmXVVz=4od%h_ZE}3`Gm)*d#Ne*I+*y;O$-6=LDS0;bo_^_ZOaQ8Q|gIU zhZaYc`@t$H$gW%b9>kHhy=K$={H!g=L40m&rfv~Mu&4n{S$%wb?CjTF&&JqFO&V_i zGHu)U=kYoQ?|rYR1?hv!e3r^@|HNzaYoY%{dN~gxEj?uv=%suq1=bV=M0W?R{?PJG z5ENjtY1#Pe%;^(;CQRWvD`_z+`c`W{gCHl9@ZHZP?0LRmB2TR#7X1yl`+|HsHh4&R z#fpFD9|?lf8X1t3JT5Np@%K9>lQMQDDI+}V1dCndI}Clx?_2)4ilwC*HYqG z1S@f^^e!t5w`8sjF~iSJK(dtnuk|9jR@}G(#j>EOs#<5)T@#K^lBD(U3x50G4?R_> z(0}?Kg~s(^#j8N*Q1qszrsS~IYilM)t6-4b+yV0JL}xO`q*#0ST02<0LN2GP9aQ(Q zt=JHH1pJ{RFAZuu-Tq>0ruGX6N9~DaD)34-R!rtHiFi{{sxAT9sGF*^3N5}n$y-)T zimh6`OHm=1nRD)Av7h@KpNKS^@>4Ryl~<^Vn+$fCOXn31IAsM-K+i(kCqanli2ZV+ z#93P?L-t#R>$yJMxKStcQc8^pYY2E+A9pUYKiXocfnD?aPnLhSd{%73?_~)1Zi9z;x>5$y140btB%l|@>H-NiYcXvbQ<@<_0V6k2V#MM;+7;H-3o%u>SS{oU@lzbNF z#~0@p7occFjkXX|crL^pURUQ`BS_H|@M$t5PlC*dS_SnZ6*WAy^YRZHo$AvLO6Os# zukTWG73uWLheHFHuQ498Rh`O^r-A2RmExPs_?^gnw-5qHh8!kU533Z=+w5~S1A3Rc zGS+p@CQJ+x{#5lK9a<5cDqwZ^c-=ccVmbc&zkBT~x0^u5=2u|S3-`7{`WUz(DNAeUz-?jwZaJX4MkaKaIVvAHO2y4m1P#tUshDthI&Og0zqXcO zcXC3TB;ys}`;{BzsMN>ZE#`Nq7-1h3PU-ovf#f&HnxRFAv@|6xokv0pn*Ac}Y@Q8DcM{G4;E}%fXMoZ&F|PjpoqbJ9!9U>W zj)CJzvEk0xs{t*Ki6w#-n$ii3({Ofu>Net#$D-W_2M?)%daravIsa>-rvqxNEN|i> zQNSWnN|B%p?li8cDzvH5Dgo-m@Yc(Vr-oO0ba{g-Ra(=g+x@c1E6x_)k&=}z*Lz>K zWEN*c>&_D_c9+-}hTdfO5)_mVhMGx1K|x@-hK*q1rD7I6C|6CI19j%UKjPpphKZkx zT8mqys5RO~)31$HG6Cw{q#dT_*q@n^1A1`D4UJ$dZBmOB^LsW=sd*zsQ@A#eb@UPP ztDDTz3ls59vLA^>nP#D-drmF?Kjz*tF3PQa1CF#dnMp`-)loUxx zrE3^KhGr-Q1nCAT0V(Mo>MY#b{qFrgAJ3OFUuN(p!xQUS>t5G=MI4Xs-O1C5?%j@8 zmg*9|xq$vcT`G!G#q>T<9}$AO1hMKnI;DRl=2u{B(RQlWxY~`!{!PBc+rw>m`X?1H zU0s3~D*>AkNtY^xZov7*SgAqFi`Ssg%avPv$SlAj@l2ogG{b8P5GAc#T*F8e{E|I9~SOhG=GqujeLZ1i{VL$zy%#~;L-aVAw zx208Gk_=?zup724)2qi)sn6i>=r*f%9>XU-QqO2lK1kwqoJYsch}r4hf0-!!;(Klr z9f#u`hw`pkZG$bNn=Ei(VpbGf9uzFLFR-dk8*Bx!CVdmA*|=@F?!6IUH($#6B96Brz;d!wC#qd0 zm&8nXv-@E&Xd;>Se?r*kwbKdgd=DWt@$t1GAt7}RT+b%D1)dHu>9P?L@V>LNX}PGP zgxikZP5|NJZDBz&cd%xB;Wa+mv#GsrX>!S4kv`~UG+)Onh+cJ6K~Cm!(+q8Nn1DV|ZWr^$#Iy1<7 zE}>_ypXa6<%yfGmnQwph?J3oF7lF%rF=^UQq@nuj#~f zt8MQQO3hRR29(jdLcVH(IO)lm84FP2Em8C_Yl@|-T(clOoZzxrSa>Uq=4qL}eoiOH zB=J$W-ktVTr6P;0c2gppDK$o+v7yAxW#(8jy6Wp~K<7RF5bZ!p_?nk4_x?<^T@+9Q znoSOV+~s|5KQny*`*O2_;=boDRZqcZ;iW?|&`-EoD~Ea*9k{Q7egJH3YzA_mwagN= z_;iXzOFeuJ1G=H!Rk&r#jW_jy{ld;poQQ#OSIRG4L|Z|OSm#;<7gykUjT57ORbtwY zGbdW49smH)8k{SLT;(0flaf9@a$p7Hx$b+5OX~EKk8<+~!P}rpw777U2=w1Q-#H&k zoE%Px$;fak_Cnlj&pe%kgX+=m5Hi0+5f$A%I2b{g6&DTd0Lf$Aac=ZC1Jm>61l1b_ z66As9#)+(f!S;8m4W@stJV8E5?oc);;pvK`?-1uGrj#Q}Ki|(@l5=$*YDX*5F6C25 zX3j5^VHhblxn30tJU`O)N7zZjYPK+_{9glMRx400=$4OXf_D997fhV#-39-GR>$vlpWCP{H4X3^r6(a$R~BO>NgDzH7l{)pN4+3sHOVtBWYV60 z^85!X{5p_Hv{(&ktW-B{+0jSK@c)T z103E-fUkbC_gloh_5~Wr(e5Rn^V!LtXCFDM-A{DT` zdj%AX8x9~hSA1=$E0y0RFxowF^(JL*AYWNIY^(ppK?xN#2&h!c%vPU^6V(V9@VP8E zS}aD?8g+E4f9}-Bx6G?sC)oXG!Z~~t#gnNDz$`|jBxZeN*=wPK76oCK4S_@+VgKD* zK-C}()a3wzi^x)N31c;Es<;7!GI$kZvI;&g?F1147FOrva|_cm6#PHK1>y3SSFLYh z-oRTVhyhGvgumApBDF(CD$?Y&WdPhel$A~Yu~w2N|Lv}N*w3U{!17)6k|2thRm#@3 zC`%#n@awWTS6_V@>xFc#jJl@W|FDfOH(SPg&F+tGkHZ}Jqbd1C`+4Kvyd%?3s55Cs z*f&2br~Fe_9XiX62JeEhY^cH00bqU_5EOS{!j`(?Ncvq99H)AuG-G5s9$FPo+GCOf1Q8?6LnCzcQ*Lw^Isvv;t~lrTrN5 zXtAd3%|16*yHsZq1gmIq_PQq)SI1R3qd;;n#Z^!vqz<=Ik!jzRkpC~a-|F;8W zj@~05aj*)LgGXFbV$p7-pt!mbkd46vzPq>g1`8d~jf|Cx7kk-Tw9fv($$z~w zEaj#j@YbKekrEI%N{X+zVp%(CjDom{eB;p+YR0YjGBdwjgl$-?>fVY`Ikr*mgD(q3`BrC>JP>Rn ziY@H->!w7}_sNf`9~lM7|L1zVVQxciUmeJnJ^nSN-r!;9f4)`gTM`m|*QCag6n=f> zS8YG0kbic1+In+e)A@Cw|2;fLb70WrGY=17z6*}bs?4w!7ocQAwM~gap7uPBlWHO< zX0D(Y0^ogC-WZRZC!&=33df-nM`ovN+pox+>C{S6h;!)KVh4vsB0f5FL?RkG2#1Q! zIm-5V)2B}hhGlv_+-~Qr#haVWu^|b z(1>y;_YV8@_3r54Y{_g(y@gL{?Y7a86s8Uts^dnGv9$ji9v12^yidz{~k8J#LZsflOrSdamaYYf#1Cr z$7CA~g1I6-KHg_{A;gz0WC7Sy$48~+8zJ$0IiH%ll?|NUVA&I6A<@5QvzzB3;65TtgL+ zk2x=TuXY>CSKmmV?ycJnS(4y>KngE9dK=Mx`Gz>0-!42K$(R16*^V6KBCE}HOISN8 zX#9ggg_zr(RjVPU?83B(EgZQ>NN!(QYBK{#Ppm-Dnt}uKKnAtVPtU2ExkEtNg%!SQ>}rFCf9YdGZN^g{oB5j#K!Lb;^P>jSpeI*&=@7Ak+OJ5F>Y| za^_;8DvImLpqV!Ls1FJt{rIUTg2@ zY26b+&7t2Gp4TEJ6m2sM7N^@RwnvxjdV^gkgojNK`tr6oi|==r1+gCwti9JJO`)zh zw7saae`xTYBB+f|wYukL*dDicNx;l%g40h2;l|c=!rmw6&bU%Z`FC>rA=b5DQl|w7 z+b4Y6y7bo4O;Wi!F;tw0&Cfokc#hfUFj#Aceu@8QC-!@?*a`K)cqto0_6n?zAAs6B z^@(?R7DB_;mT|h;E)2lsrSYv`ZD|8Y(cUJszJCZrOQAGmTUs~Vy^!(c5mGzi-n@n8Bo zC|Wx&W4~C)*k{^%KTW8X(A!Tpx3`fb%^a-!G!-aqKwNz`j5FDc0@Vz#9h@$6s`g@H zU5XCdQ^UKBK{XwQ0xbKSjB_TEmYu$%m*2Rl|L>LKt=xp%4vL@8Ko~G;O1kHuQV^CL z4@O5tG{y1mt{T!JSW0t2f7Q2~AA+5cc~~fOvJILqgjg%QO?)XL>=`gIxb6?J&Qac$ zPx^0%sTGN)+^IviNleo3U?y82EEFX59rzKsb1yrlYs8HbkG!{fK8)Go2~d$n`6gM; z8nK@m*H#ZhUmZ*+SZC{;yD#L3M)ILb*aTnDVYQkx^Ch%n_R|IL22=A=!ahbjGrm=I zifLPv)b^`8jV!KQ(pX%IJG5b+vgymY+%ZR;<7&diIz+;%e;6dwv1zN(t^b$%+27bl zbGjq$ZQ$mv8FNULhLIL5jlovhdK1#9jy(?{G$HpP2YC&D1uw@ zSG);wRb@#e{1eXRey4wvQP4y&!nSO#5$6s<3#Ex6*EloMmQxI2&~iO~*21~2!MO`! zSN`|1>?{a&1tw(`pdbOUStvkmG_Gmd;JKNMg-!*OsWI4B7Y74JtS-e$`qW|8co}c3 zM3&Nt$Ev?+?|+q>NI?#J)*nJauvRJ-)z3dTy!ONOH2WBd;-LNO4>hA!wiw6Tp_vKK zn~e`5rVx!@Dy~k#sGn-KIybJ$Z|i+0b&uPeDYM2ad@A0`8Pw}QE{jUDOR}*116%*i z)SQIJ8m3f6=Yu)~$=O+A9J*m95bL&G;z89&}imc>=BCa&P4eUwOX~V!AT;%d%W~vRg`tbMMq?~3^x2kgb zKp1=e(j;}LnQZz6GUR8p1mV(jwU^bx+*i^?a`c5>%uQGEeP8J3R-LGjX{$q}p%r$@ zm!wCHX2rG1y1hYW9eUNayrh9I3@o&`CC$ciqPI`&qsg7G2hn&NR3jz=JI?bROX-i= zcefCXD^Gy7tB}~*@rct=tnR)dgHi-=DJ{~bNnY%F?rJY^kM^-iSIP0%pl3nKA_Xj< zoNSyTrt`Gj^P8gw2k=ZotUW2@%{Y#e&eiFt=<$g)EX;MttkHWlt|yRF^40gVifj3; zm)8{}iYxv#)b#>Ok)80F03=5+^4+D+H z@YtT0Q(+5?rN=lOAU?K_P^RuD>97gTd2hNtbkgQwWk}$2;35n*Tz927El)8y{<3@d z0VCOoG!zRu*&@x9vB2r{BpC;ScEM+yX)&>#ut4}TvMpaI#WSF{U%J*Xbk=Dg14scAD+l~08dkk7-|GbjvZpcMTkAThvZ1}-oo6rmn z4!#8|-%Vgpt?*da0RCe}^G^?x>$YE&dv>-vU$CcY8{*~MA0nr1o31D{Uz;t& zE2Pf=214fJ-`>k52@wLuK}q4iMs|Gs80||#m^~UhJ3ICRVZBS^I#(Jpe&=Wa9Tms7 zVWW@CFn%7ufV)1e^v6cOe@PC~owICj_(VyUz0d!(xnZOS#;Op*+D=e{jE)Y8_#U=` zrSe7@dNVPA&d-qhy=LjBKzu*+fI1H2`~JEeu#FZ8ybu6x$1+txg1CRcXz>2U@+fgg z%7tBw#i@k|?{SjE`-@onzJ-NSzeV04O8*W(wOoHz-7}E%^34@aRsSCnNV?F!zGNsU z2AtZPITIDe1uRsbfwtgn<3Vk|=*uhAUz>5ARWVuMe1?KRoX5#fjWW68)Q|i^wWpZa z*is;wy{yFW3}+U2X@(R4t2-(hN7d!xo)w?R!XjgPH=L$I_zMkw04q>M0wzhd{S-35 zpMjaiONCFJSt5RFy|a`zOcl+!KoCe6>9w6K9DpF`h``f)aX)f2{!no}8`?2m^RA}m zxUNddNY|X@QFgE2B_eW`$#DOsgYRI_&b1=7$Dh{YZj`Q1CW<- zLxW(%#yJSC}@6sVB@8$0#oI3z+zCoct!vsktjx-Fc zYBbA>lF?NBz)3scqfER0r;T>gpv(NZgWWb1K%k-tNzGRz0_JoBizQ>LL7BigfEJv@ z+E6aTjpOG#Iz@1(vXKN#gC8Yj%M4o{++dEH*8v(tObLm~J+=V)u(#;y&jj9piCH;E z@m+DC*K6eC=eNm}`1Z$)4ix{vgV_0?`M3dQU7hoC0~j+fn>m8Gq*Q~pi19h@WUUK3 zXnL3b^H?++-gHAAR#AiHjG560`27JRHmYVohB@g?wzx##bSH~E3CAOk489d4;{6MF zAcY>RvM+pjQfGNhg@L1N(Ve z5QnJO;@nKeB+Ds3xB|FNGP6RSH%6s^f2LTFwxYEth3+OI9C)Y~bab5HSDT)mjtJ=o zSME^j&;9bo_>Bnhxw*Nuukt#y5A2{i&%+^wGB!rpJ|KKez;ol#jSc7c!z>YpS_ci`zY=qpg_wX_r_wz%xxD^$7EQRa5E>^sBKk2_h&4gwf{Kciu% z_Lc)+Px&0K#b?oaX%t{(Cq|s~XM#|je5d@FR~L-p1;WlJR)#Q_7v1i5#3KM-+tgH~ z%n!;|{`Tr&m&0`4o3tz=M2MX)tG7378)he{bg~C< zEwlEQd%&Cx51ULt9OiAr0!!i;ucR zr@VtHHGa{A4mWMkYUZQc;sy?;V+=}#DJe_6m#vd7`TiRH81yfGZ0J_PlJ@2-%81v+ z{EmM~EJx{PL+u(_P2oz-rm^O~a+A9Qe%`p1Zs=b1I9SZyE+*D@F`E9Cn0Ps&Iy<_j zG?vMzAW9n{S21#Q62SjvcT zr|F_~g_bj~5`(xp9f*Pb`3&n>FO~|@to8K#;2Lqjq2wj7yQL}ADFC3J#f6U~hyC*F zMW5Z>k3Gcc!}&Oy^1TEq~swFY)USB<@SNYlo>E6915-c z0XhpM!uJ_eJ_B~5w4vsN!LS#;xWnY`9f&b~$K0F=r3)}AI6Y2ha`lGh_w38RQXM55 z2T6)!^Jniet`ol|ET)d!ODOaY8_MlkxZyPlS#q%1ZrR)s>;hEEn^Z-6snc5DAgB&R zXnVG$a5Yk;9Ic*h8S!>gYM*?Qmk;DEO3uSgX|AvLEfCS98{Z|LJ{=|42IQk*cT%|z z9*d!8%x?u;2dO>FmYFn)sJFoMe`FNy@cgw`znGt2uHr;_3B@+-JE#8UPNUal*{Uz> zv2M8;KuTRbct#7AxUa#KQ$oerjfb}^EOwTM97`dR)8nYHO^bnhS_JbMvFZL$NLFBM znsf9K{Q(Y#!!ZSq!?=<0{gFcD7|x?g*rmc8{|jKtw^OWHSS~bw(0gu6lzd9fsbihd%mxDW9zy$0d47FKl-)lMun#cQ4cOb_ z>6HhM#E=EoPq?UA)(ZzR#>?yRU0q!(Hbj$vr!4{Sqy=2E%8dx>KMSlp=I{A$?=4_m z-Xs$S5o$JgtZM~#Oihs%8b)qF`9}J3WFA`$W?tH~Uh!dDKIgEI!Pvp3KJsOHYrXnk4pX%p0VhRwni- zfSbpTCykn1CD1y5G{TEe0ah;by2hy`nt7hsl&5`}NpsX=7KFwoiGM_`r&|-yc-)u~ zCM**}1{sgwqkQi8Ci-@YctzP`CnH0HX`N}ko(k_B6VPHH2L@knN@y|5aj7_w0bBA5 zxFLrkq=1iizc0O3+!_NzWGvmI!3mh5_YI7mlFhj(ykFP!9whcI;>PX`jpiEfh0`4XhRo1=X64PE5bHMPo*r{b_9(qLvmBz$U z9Vr)Cx9EiPt)#nH;J6vMEx%?rsCFzyeAtLGAn*00MH*5}K{mIsiLf6lUAkdC`RwIf zv7xNfav|z37_!%x!W|Z($NTp!aO}vZ3agVYQWsN91Jx%Ym>kZN4yP`s&s0x+pHLPT&Es^&_4)c_gluf|S_jp{|kflox8 z-${AaA64L?^KZsKM4?f4T$r| z*#j{zCA88!`0}MpRklKQ0FjNE7+WWo9CgbLG*l8YI#iggqlLsqx?-o$!;nj6DhnK> z-?AEdT@t<(G34WY2&n7t7&YoDvalu{JoP@9AsMviDSTp~rUaEPuZ(AsucJ|wa%01tA zh#AliA2YQ?Z7c>QW!G&5;*nz}ym~Q`6PmJhT`ujzHZeSdU!Q>Mk2vu7JkrIK44uD1 zLb5%T&Lvr;IUy?cJ~NL*ZCUa4e$EsQyho)ktWQI|EV zTJ>j;l5$yVwR!(pV!i*KkzB9m0tnaQ??u(TyR{0o4P(`{$)Psj@&Q^bkx{+BzAEQr zvqNoKTAfv?PLW}4IhHNiSDqg4ZB&b`X&B>@fdS;Boxc`TM_W0;cV(YYq&6hFher%f zasIQ9TzxY{2cm;x)srj@8nA=K7P1$JO(^I1DlbDW8{O`q(4$sbT3;)Iyt2oSC0z9* zMoE5EuK3fbJz7oEf5Pvs5%D#li#^zmrK5`~$nm*{C13}SCQk7?U)<*nfOTil`ZdX_ zkiW0ZRC>ii>$gHP5c5bia+wLlPcD&Y>aO;lJg+t@j+Z3D;6)zs$egZ|6F-<9bEq7b zeERMmN{>$3==)D#=!aKgj1UG?x7HEp&G#FZI8eEgMN z4EHqz0yw{u*F3l3T_y77Wc2n?)5 z-?VHn(9azi?x+i_WVMu<1@L|4vlV866*rB|-WumIuFk~Tf=AtmtXJZ>tdB?-93H#; z$EvXP-Iu6bG(L!k>61n+Ict3JYkv8+L&B%0F0UV-GK5GQhBZRTmjemyyzQ=KOnE+o zJ*d`vBFsfLnxZ}ceM3++wwO4=fPtkVu=bywhLpX4Rgn9^;#9Cxsy35{8fz$y?! za4?7oaNtnS3`6l7AwPP7AEP!O=`6cgnxOYKMPvhkHq!3XS9g|9-z?eVSjw|&)X9y$ z_`E9mr~7!w_FMbZEmP&ZH4ZUcFzKZPH26VH2!lgj4^I&=Ae2hqACr?|LC2VH>$*PA z2DQEBbq}HpaKTbJ1AL>46Gxh}apT!dK6tDT+h?jAM3h~UQsE~u8`W{#)R?f%aa!fH zYP|*z`DmusF^}G+(kbdVohOjwYP^cx#pWk(wh^{*-)XrP1%om&sZ{5q%X}bkw&eud zJ1}D@1en78zy2WT)`&fgeN?UZUgL=>24MylB@!rV^Pqpxyxxeq@rhbmmb|!5I7U37 zzBN^46K7C*rXB4>vq?5nwOs+ZNyz{$`caSdJ47r}prjfb?c#b>ooRegK%e5Jj?@iG zsl=2#wmdwBYG7`a3wnkE9=jh5dUXmyQjTK!cIdc}Cx;Dc@fnlitAIhFQ`WoLNgYtJ ze)4e&7sVaRro)c-hFj;mmDcc+H9mf1Uor(C@x>EURaTOF_;jwnpt&0j3dOKEBQduu zF1lK>v!InKvK5w*-1MrSqDKpD0m8%ED9_QR|8z0mJq#oV>xm_uzW07`9A0M(WmqKP zfGDF=7u1UC)Ve~ym{Jb0AKiFKs^8h7Hs({0L;n@6Q_IqI3z$(g5M!eIYkAn z7=%@nhK?2hS&2%uk}m5?Ah~=%D#k{C=DA@EoHh4Iwb;TzPL%YhVKv3n_17dP$bOv& zGdYf!l;cnh&5MnV9g=C!5)2>fv)^?HTQ844Q%*JN3-Zn~q68O@JHK7zv&t z9_VZ;&eyw>uZW#V%_D{ZYq!#SfPE;?k^0hpXRf(q_Qwb`4`PY1Qk;lE)eo9JPPk$= zmz(|hHIqD@?}}u}#C5fw(i0CzGZNG04CNMd$IV4c$1b7g$HgC@l~g^=>;U_?fM0tP zjwY{9#(-%b&F+##wm-vOit}&4YpC&W;N+1Wjb^>V2aVA1kpdNM&9URn31VO#7%dSN zQS@P}lw_jYsKps#fHyKTV;D1>aP*u`U>f2;?BC*1EEJ1MWOaR0z6FPbRiFGEKEXEz z>jlT+=9|fuAh80atUP2^eCkpVlYrI>5E(L<>WebqzHiYP9c%Duln7*Ke?EO~F_uN|&o%~%{enD}=3CIs7%eQ1VmK#aAT@SnCZAY$5;QsoV zU7ayvB}+Yft9|KF(eJr(Y=<85WkRFLJb=&%&~PEKbX|!J4}@*+X30tw!3>s4LHV-L zg#-jf?Lg)@2G1|E=!zYhw&wCZ+KvHD{9s;xMR|+#Q{;7ZO~B_ zV>tsAKXLAZeQn6p_`GE}n~2>Y?}(RJ#HRh7_^Kb1<}<+cQvVp5 z{-t=8&X!4xgjC4m^@gTK_6;pHdVOTDTA!P65|&i0ohjt0t=0gxW2etM&^_U9nIL%@ z|J5DBad&!b%){f2S=rgr2G1=r?H0GDSjy>A;YcY_I=;<4{=M;^r}(dRhUKkU1*#ITIEbvY=v)9LPHW$m zW|>Jd`sF#0e%&>^Y0Rx1jOhYx2?pY5E6NXHtA&ZKnl37d=GD~1SGp8U{zL~&Ejh47 z2`ymh$Hqn^psE78m2oQHks%>La)3&fFd7aS-)FFg85NDde((~s0*jdJwzjs8ybVdN1}q*r!f~}X z!*EFisO?46XzX6VPS}kqTGjZMIv)aYMk?o0W6`a0*y`hRK+;LI#~_8xe3HcjQV3Mu z+1a5Ybqkn|gTK6){D#HC2Z@rnZa9Yh>R$rP^f)k(^(plNMoK1%VrdL6UFNFg$1+hF z^4VH4g_Or2tXgkPOP8{meWl03sv(Dzc3qQlGalQcq+lkU*vC^B%kbH0J~@O8eTC6@ zW&#aS^aBwE7)Xf1OecF5OfMeGVNa-K_>-SRyp68T|fa=fU`zhvH-q`#66FtfDwt9nk7G1dT&;HCX zX!Uu9k}0d$Qzi|b#h@nY6R!Hgm7bNCOu$rMEn3wA2JWj7fU~Yt`qxt zY;-rfQQd9lxu!Qj$o0m{Sl>PSo%$F)ODqKb&j_iqj4yC!0O&s52Ms#Kg*DT?^rz!Q zfM#ZyZVI^9ziX>~0$yJBW=hLtkLHmSdAKp=o>^biEzECPL_y|R;n5m)9_ z)lN!|+X}NiR?t6X@x9+0^+a1y#2Rgx$*1Eahlls+Jn^W6)qvY$nF(b4(s|@qQ9w{| z-H@rW8&9({mOM@+bE##U>(3M$M0xWSiMAlmAOdtlfMPV_muak|)M3rcFBs{~?3c1N z{n2^0;U@Cte-U_$dyk@)a{|F{%F(N4z5GvCg#r_OAWiUou|{G0TN=ruKd|b}L32I( ztWk&C_Z??yaKJMs z0c1PccTaNxb8-C!syYR;=36lOK+%m3mQLn>oX`Hc=lJsuXfG$Arg1>$U2?B=+mxqs zUX}Ja56@Gl-fSU3g#zW+nG_U|=A`o-Xhs3*XRQWktp9qg;k@w{*DH8qQs?>+3!NA` zaXUAxeeYz1*xnHA0jV2ds`1#GVil5$%ZtoA;K>0h`MXIG|M~*(5ntEs658kX^V=Kn z(6>V*EIi-@M1eLGk$zDzSg6ylb{~QRT zU6i-@Q5-&0!0U!^4G!sV0IXCe7c* zB}7GyduQ&L@WUW*E>?Hm#FPLXyVoJy-VZsZZS4|HBGB9Ye%|6K$!TWO$K{>I>tHs$ z^O!^SC3UNx5IP@F@V-dLYsKCX|McO!Hy|SWq&=}F+&#T=Kur}mA=kEUbRGDQ2zd$>>EmY7Orl9G(4Y&Va!pQVpNi+2y6aOMU{ z`WN&UJ|sKJ#@#uvc6uQDgnYV=tdnZc#HWVWapD1YY^gW?J(2gUgST#_639zQX#MLR z(Y*%O*ZZq=MBLUp($H4+<)B9-j@Vc&t>@GC9u0ulHmxfFrF9Gqsf(y$tH2`6TwhU_ zkv+kHL(_zW9^N*&bjaQOL0#vO9*K59^vwRe>9)~#G*6lBkhHJ-+2k7zUyg+EMRv)5 zc$47w-kJ78E+~B%ks*q0%JV9{G&AcN8>*kIeb*s&xPwgxrwvXC+Bq$;DZ22|;?T$S zHQq}WEWY=z^`}K!oJ%t!Ryl4sZqx_j>jzQ0WaF47u9EX_?o=)`(zte+d|MmF{8 z<%J>k9_Scu(dHScDvcdCn$6i(KgVrHnBxpR4Q=rqXPlUL*7JkI=i5|VZVdI#zd=Soopnp^j>v%_jCN}6GLzGk6m1I#1oLK;&r0W*+*-yoU)Y^IVld0 z$m$!iIopI-PzL%78Ss!6z=BY))mOO*wpE)rn&i1za0a=Xb27ISy@!YCbF^u;Kr*&{ zqp;Ha~u)`2@d4Awv&nseVFH zE}8zYrTJ>QACqk#9{0(XodRcIC4L~4hA-mza6LP^u9o=%qYmsnz3m7GYc{Px-`?j5 zr&*k?vMDlC_RKIWb&JX+n(uh-vSm^}y|45{AiVY^2hU|ArW`n`o>KpOu_3XpTm30B zH%h_1Kd;%9#hNj@sh`mW6bJu%DUd)3@8bI4hp4Pd!n!O7lroX$SL9>v)obLss60{n zmWiGX&!)&_f0eT|9~aCbIGC?UoXBQu5aj(3B*re>bG~gPjIOBCNraF4IqOJNe5s(w ziqCASJdd22_BI1DwuRT7#G~NZBN2h;^3AC2s;v`^x4uvFORiLl?jDVxl;67&Xre6A zsKkDT<30VPm5J5$S&PeId?V9g%id_7KC8g{t&Z|g3?ci~pIhEKszZeKICuy5zA{A%UPe}hK(*if%1nB)+;}_N+uIwPDH5l zrqyox%zg&MJa*bLLFSFF^OSm?&9@8!)X|5IGukoBlVF#=o3x$xi!=XJY`>Ql$9p@$ zyW(u?^`ma@(C(5Uq5i0q3dut$y$__LX8!^Et{Zua__Fa zsQ2?9&r9Z2V|)r zBg_J5@ald(4(5U(?a(q{)5Z@_b;8y7wHWVpt?4#$+44@K^vibUnB?29iHzI{oLD03 za*W~X-f^^(bJG#%{`M`UTsAwl;UzbV@}y(7w#?oGnFZDtRz=x>nx}{BT<99=jtOBy z4$av)4~lgi&W2}kxyDw~I?S+;gup9PM2`HDH+qC<+Ny$rl;a&c~)uz$FrYBrKV z1L`ZucG|(kLlIQrK<7#MXNrr_^cE4VE5k;>QWSm#Wm>hqpF8dnv&T{H?x2fZ&KrV) z5m&k%d>QA{R;<7&(1FXAKO3?Yu}Fo4nt3d(M#E3g>+ECbm{AhfxzRjR@j;ch)sJg> ztoSw2!BWjy0a3k$e?Abe}5Eam%lerSIVu^*vwDn__$3&Qo*Uak8&J!XYotRQ>mg;K%hLEjD|1+$BJ`Eki+(7E1s>S|;rm_6?sgzqhN6w74c= z@pZ>>%xg4$M1od()*t%bsKLKkm|;~k@?CxaADTY-+vkRd_Zn;eb!HMWQu8Huy@3!BD&FY7Nby{SLJ|-T9A~ zL5Hr^r)`vaR3$C1>9IGx5!9bOTGCpTqbeWttG8`3V(?k4zPPMcFTxui*o!b$hOjXE z{))yrG7g@Ns$BN@R$)Krj)Zf%-i-ClVv)4sPZNF+-GBE2SImbfq`;Hp z-fIzZSfEAwKio!&6FE~LGFA96RXy_uWB&b)`REHt%++^hZZ^@+`Gc#>cQaVHhIe%p z`LB{%ceZwk1uoSJ;`kg>?DCWkBAQ=IL4MiMd56}$u%)TVU__5&Te)XZ^K)5WEl&;g zxZfc55}$%)?v`;6shbs(9_mLw8}t7Cc~?4Vp}Zhpya_1U;&S$8#jo^{?&%N9y_e0| zgyx0Gi;Xz&+YXcW!+ObU^Q226S{56}f))d%2&=cDNi^jg=T7X0&RoP->my6ee*D!- zXKjARwUchONWOT`NIXsZn0K@y4+GEcmDZdtBnRN;;nasD_*t8s#@VU!p4esdBlam= zmsDA%@nhZe{dZ?;?k>Cf#QIGjKQ}uw!!~jwqpHb#^BneR^Ao#R$aO#A~g+}@=E zg}lS$$&uz0PI#BzuUOZP3Kzc*saUsB*6$=r90%v8a&KZ#_@!aK-@VHZ+uu&-SJ;~I z{N{!YeLMGds&3~Sy%l%-@f)#Zm#OfB0k>AcFO)vnb#d>mqu#5kuX<1=8H_y*IXU9V zggGTQ2XmJ@>V@vqQb^hsD3z46U&3(jW9Y^VqX(7*b6#Z4nyGNM=O#aol-#h7uxlRS_W!OQS8en=GU=@n+XC+jtQ%)N5kTwm)ld%PB6 zYqS1jaW&bZcijDU?|QTrzxR*jj(6R}im*R?px>pK6$yk62z%(WQq(0Y$Fe1NW!`Oi*bBHeg2`w@Fk za$r9`o|S0B-F_{4JcjgT)OJ$KR^#iJw|VYt>Vzs2VXlqOdFwvIlA+yNx194ko-Z_- zgfHP3V$b9GnoT9s6q!ZG&(wc7|M6^tLgvXfcuhfO*uILS^kvd|uLAWdtoVdSJ%$CBnDuOxUn8QKbNn#{FUS<^YUg}B^zoRd?7;{@e~2Q7(TvTGyx&{+j5W4b zoW4q-@25&96EQ8H1{6*BJE8T^kaI~748s4q4=j+uJ0gpvrPLQw;q|Wc{ zdXE3M(BVqB@xTkpf4j=A<~47%rO(wp^Nub-qIKGo^~)~5udmUWaIetEXvy{%{6HJZ z>{yL06i&BQN1rA)OFNDxU+s=l{~MP)U$t{%{3aN&eRN2Yr_8^f|HFB!k=u(7AGwBg zWv)a~9%e0l;qG`npF;Zzwq-9>!6{PXKd{H~-LcK^Kdb0N1vNgjmv;(OUm*lXNJAU( zmy^t(s3Ex~y{00J7Z-wN@7RYQnO=G9d{iQe#r;q5_E15IPnlHNg+_(ciCcyAA70o)JwZ1sC4%amhPdf)cL z&Yh#Ll3edWL{;WjA)Ef@Ti_LZOIn=d=EGkvWCA4fKc8>ix~+!#66v2Gsm1TzMgQlg z|DXKgU31{smq<2N`ZZlS4aAA2{3`zY5QDpLz`2N5-{|$r^x#Gf9@{MJ+9izAQ3QNY ztbvr2+H^P_0Adn=vT@oS<3>J(u0&z%hBe9RX=-+98k`6556)2LL>m9Jpy=e65zm1X$BOo&UfOF10S}z zsuu_Je$0RUonUeCn?K_O!fNRO%_jkTS?>WMb2nhPSoTeOR_#HRs{%V@^qVY;qp$p< zEx%@bF+qk4x&MszKU*Po+ijKb!@BAPUNqDl5jY8Vh}kDKAIfka24$Un`j*KpyFDLd zri%90pSpYd_HC3~Iej~Kh*Hg5S9+4HT7yI0JvrgV2Ua=<#z2`t2k09b1xloLLsj{o zman7E?_uX(li3W^8b#>wA$A-}J{1MM=k9iL&z%zYJ6?7P%$fm7f zQfjOSKSMZt%9=1OWd*KDi9o>gHHuy9w#oIcsZYOnMLZ6EDs#ijoDElpJOc*vKRHex zrc8;sRI?c9thy0qv9lYCU8s5O%sCA#W&>VRZ{$jEzT#^CzD9ne^=!YdF~|^4U6OZr z;r(lp283JRDc4=C0^Wj0K1$WN3`(a8Wc>EFKgX;*rUt~QD4!`gFtBDP=K>9HLAlY1 zNSP41h<)Pwi4jiMeZIIF-pq0*)fvDB?Xmu8*Mb`9==&H*um4gomv>^z%2}*q|#@EiTzpf%%c_Js_C!n{d{eK&LN-(W?7A^o~vd zaC+oBt=nv&!lAG|=4ZL8HaGs6VrrevRsY}wu=RXJuKx@}E11>67*DH=0lkq&fCE{virY88;#n_0AH?oy z64ZxU2?)W=VBEz2nsQIQ^}Rbj`~5;5`lt4sCDcu?K*YN2{oAABR!ygSk6hsX*2a|< zU3^DnE5mjOg+z|{W{Uh4TrUSd zeqiw`>=POU$VLxPNgJiG$Si<@PF33aoGp1z+7Z*IXtq)h zT~X&Dlu!k-&x|#U6L@+qa5oUZk&r5ZPG3 z+j{Q=pZFNI1mRB?sBxL!z7e*bT>g| zk4r@tYT_A9COE8~~Z;|BE5HbJ%hWvjknhlrNAsLdx=lwojy1vo<{)T4QDO)8&U)Oi1=fo6%Ryfd{g(fJ zyQjXX#@MOj-pcg0r}4H&dczH4L=Y?@&%piNe0Ex4ZhZ#s&x|Hja;ZcZA{PBTr9Ksp4KCM}_t1QHb` zw9p}vP*eyl6e$5A5dIx!=3D2xJr`%4pDSGgro7qj-cQ@^qJC3-vKATA;jDgpxkCS4 z$fd6rCcjQ1%g|4{{8%8NFLhi*1ZC#Te`0$ycveeq;Ne4kYOx$DNZK{V62IvkQJ$4nIf)?YTcYvaOY8h%sT|vV%fs&EWF%kSoF${jq^(RXdxj9uJ8(H?% zk04ura|NeS|7hXkW1F*%`8URtv#DL~EBxm_z|nh`TyWi>tc2cEt(LdUw@pImy0T$lF3kIoSeCY)$cFuTAHak ztMOpR@(q%gq2OGln^3%{x!j@{(SpThM|}n6c3oLIZs8+?@LTlnml%K1H6BnhY`YJiPdni4q?tt# zcZ`@tOG)@&Kc45{{bvVm8@*KGxrSWschZbEZ^>l7UAi5iJ%90G0chLx6br27(RPV` zZkhozg?`WzB#K)ZcI9v)LuIyD)dh1#Gx85`K;*|@Eg9XM9$^zsE$()t*Dm;b{M)5& zo@Fc*%Bq#O^-@Wk%9mUtO2>Q++zI zz|%;npnERbMg|N$cqU>%DUVe{awsC#UhMva?JlwL8Ew5C{;c}2P*mz&GRU0tL=yGQ z&3T@*q@8`vO=M7d3lJ%YKEBdr?Xq{$Sw@~YL9yqq-_b!tE7A`j4_+if&|GkQsOr6U zOOu0oQ@usM`xjNBCeL3z_cN=eO#&cHLpHfkx6If^TC46}pLrm&h$!QPwjQfPEMD=; zL35-rG`1R*lQvA2RL+@KrU_FYy*%Dp{ngNNIDCEeu}fKdyyRTT;CShj7%9$(l5wef zK2NqIe4^v~H+lrYT|p=IjPd(xClA;5`B(T(#%l9j{I|d36Jozw(J%a0EGsN!la<`D zc#^Z+ zEuq+7GVOCV)77(Fe6TjCd&fDG+~pHjea8ziM}$pu)4aAdLj01{rt1~g8@oXE^K6oF z^6&5zwJq1*U;BP-@Ja^k@P;VhGr&m2oais3nrJ@D5QwPo9BP+GI-fzbzGBXJ9`C!q zL?xx@KvYd@q)_^BxLy8@Fr5adxgyX19h81a3JC1m5;*F+?>euZ??mx;!9b;;1&4k- z61Oo!uv-tDKVvxk{y@%}rnKndSPR#zsBP^ljcc5LJdXc9EveczSLuFQ+5c{${BWoq zeq&a7b)?;~^!A9|LU+4#w#DMua@yPMtEhn;LCAO+7h|1+o8JQ~@K3np(Yp;#$&ea) z=RXYMUiR7N_jgg^D}DBjzaKR^ZitA_G#U;Y`yK}$#gtupeDx>IZPB+I!lR;gUHi8I zBpwY=*}7%(57GlMSRXj~$ZWel*t5$CK{7J*rGc6^cR%`0)&?A!Hn`d1RtejYcoLMW zJX1?<`Q0`3wArEk@W)x*#$WSxO##D5{xMNI{QB~r8qmM|rIO%wqZ9oQ%#@A|ejCMZ z@-AQ*=tuj{)Ah^>5$}ecUA%&pBz{bnWFn_}gcm(2GA;%=E8$Q5^NQ@(l;EjgEpdpK zP0o@xs*6?4KihzQ(P1tJCZ?q`-91+6ZRTJKBq8>I2>e?XgXSn8S_W3w?g};hIhA5$I{p3=?YttkRdNnWrI4`>N!(1nJ zR`>PmecV!ChyNaJUuaibN!xv}eSOtQ@mBosVNNYlvNF-3*enqLpy}1ibEL2yiFAw| z0a5p$!O$-|0{8Cn^CoC(XwaK337^aNRU~ceMRp^X$_HpIiH^-Z!ppf&x-V|l;R0ri z4!9HtHvRarocmZN$^2d5?!(u5=W{SNI7IkJIwIaRu~WS@>Gp%#@16I(`b%l8VeGEV zt=MaBNVW8>*$y^eX+Q-l#uKx>qu=f7@Vp}D!N^ZdPN!>v+%uwS!ali9^ zF9eonX|M2=hL9zM&1$PhTT;oPxv^&qL>yZZWRpWj2t1zK>J52r@u{=)q&@ODUVSPB zYYMl5*L}7b4)y1e_pC`GKMm59&PPzOjHzHwht;xLjx^W4e8&e4Y!m{Lpa1?t#pR6` z#1`imLR)oG(yR~~>kAZ;@1qyo1`X3NVPD$WQm)_Y)^lE?GbZEZE9muG+^c32FxGf6 zb=J>F(?sgDu*S$|{MuB3VD)?Ed*)P1cG1>_laafcF1X>o_Y!bB`mhyYG6&UMy0Q*N zOhYnuqc%UM3~?ZxW5Km{y%a1)H&{2ZH-eWYJjMbBoy5tT_|=B#xUT!|b!!aLQrjFs zQZzyGz@gDzY{zUtIujkyW?s0_Cr0+fvnHGF}R9ePSWc zoOq7R^x^{Eiw#2Wtpmw)2Ii$AZheJ+N`{4YGYUEIDTKu+n0$;uog{u*`=yi(ZvkLH zP4~BMII=tmO&=oon_83AQ~jXjm{#$hP6Cleq&{+OIS$f`A5UNvN?SxZbC4H2()2Ub zNIMk#Y-iS%+tP74Ew|Fg+zFC4*fYG8szfL}O%v_JB##%Wof&hUn=9(vs==>UrwcP+ zNd0|n$)tn5Dm?LHq?(*#pMYmyp^?SnmpBOTN6t<66wS8$<;hRL#8HkX_cnq*de%BbStO(9l>F}&}U^p z`l}wj-)eDbYEaMr?t!UN3%W$mvm@SMFX(~=9r{gxm^OJy^^)(<^pELz}>d@=ni9^!cMW?)M`R(7{PqttU)&28wBF(GXG)5G#nO;`Kw zYR!aIyY{+vg@4#0eC^G}_X1`PiRLLm?+2$`xjv^@kk6fjys;I9=&qTurc`rO=ntK^rn{v{MQcHM3wj^zYo=77UL@+qi|Di_ zm5dJ5l)W3lqf~vaK#zaAw}AX=Ry8EX`yhX#~ostb?0>D zbu$I8jpxDfNhZ-y;zCs(!*cfL=)a07vR>M5=`e|Z-tkP9UJkL-#t@hpk|)43QDmH* z@6ep4gSN)sdGM6yNY4i_JWA@o-Aux!G2ap2!oY-3t@0R@o4Fbt$!Bk~$%KQcp+)}S zK`Ecqmn-dS?-e!I-@+`fn6sQE(|cm@NMi%f`9ODpx9TLK&gPdyYyt@Fr%CCD~QBnY&}KgxQaCpZl;dydD^IIXuxPQKfn> z!GitOc_9H*sXgqqv2VXEA4GZ0adyLa7mn)RJs27jrWO1e=`YzN2L+^^rM>4f_O?j!1>W7RD+lAOyBzFyS~|- zdQ^Xh@IQF-mMuFDvY+vPU;n?P9R7Q7{}-?${~tWmpI=i|LlSEHvz`LO(u8_Ie9FhA zsurB~$!Go7J(q#^Z}rm@G-ihho<8Mb1mLEKB#*rMQ!Pkp}@-jF)q_OijcG(7bx>9_z#@MU^4!VV`I=8Pq#33Q2UvcxZ2k7A$c?L4qFL6q!Fip^+)oB}95W>=% z&i&K1-JkonKld3SJ{O`^dX(kv==|_8fn+tB?1YK|600SLAopm(%u-sQ%AG2x=sos& z38o$sz(BV1{`n0Yf3P@4BWSsQ+yNd^&R!S0FHa6>vhQ?M*qTfK(JTHX2pQrF?uBsE zu51Ih((nHis)HAPgHD$sYj}DF@%A`wy)GSMIC#sS-w6DES=hSz>U)oDKb7WmW&f)% z!koGH<1>sfJokq+^X_b?Ad3jLFG)dnH*&? z%P20p_X6;Vh+}Q6B{S$r8MDd3DTjvYtjx=zQB$8yY8VmsVZ~C?{M8D5?A_?u!B0i} zq%`ZY;0nb`ED#)XHn?IxRSwJjsyRTn0zanY<$3tHyoU_a@7srngN&?}iBdH4$J5*m zlUc{!weDry?Tz5Yx`f+gG$ES~S75MD*c=7#mkxMQ0&rpo?2EpjrEEw4K_hciUx7QN z8$YpDG0ijJqu$N}Q}02>=u1>4CA)g@=9JzrecliGv%aD>xYn}bE_bcu&@b;c#fJeb z5xcSex{#_+U;z~oYh5c!B-6lg8!c*88D~XcZjGX(pNhW?CYSypQ)T#dWrSl3OXk43 zLos^Z$dM${6qoy|x4^95=hv0(b%2=fxe(3^)#UPiK80Hkc)*eq_u%24rnj1pFZqfh$68&wU;4g%@K9ecIZk4c#xSu>@r{rRM0f zQSDr#bU7PUQE|d-IB`WO>3*BjX>Hwh+d5juN6oIcNM*&bw@i;**WUbOCGrKGVdt*T zg#gDLzl`4p-W&Su$=^4wUs_wVUXEQ;jdUyJ-cOhR1(!V7sJ{n}Y#n{pzwr zH%JD{Hp;+z)0f?A{AW^B6P=WzT!>L~I_R_-hhI+)_1)tWgF8X?qqw^{dg*OsdtuP* zP>twDq5Xxg`62Fy`NKLc_fa)0%puObJZe5L&$KK-*aVV|^auCz%gKBq>aQTze@SL* zK3-n@wD_uE#}J>0JC0U$v+o83kG3 zW#bF_bjQYT8hwiWM3w2cGj3mtzsH_+Gn)ifjObr%Pu%Y_6uLf7WYhm+Dc@gW#?vIn zF_McD+adb8@)dN3srES-<^jGW7s~U9J#)2-xkw@Xq-#q4Q|Ho$!iOE|m7=X6V@mTy z9_xL(eD>C{qb-Sg0DqkE7^sdt<6tAS!#+=OB{X~F6u&~?2Njvoy@MGU;cGex z5*BxQ=Wq_Y|KSg{UT@!W-?{X5J%@I3S9U953W|4BXQsBIl3!^1y$y;i5w0m-&MC5w zezFQwpQQ~p5e9k&gwZ_(1Sw?_QV(9)4^)@@X3b1^qX?TrlkeA!&k{fHKHTcG;Q=s4 zl%=el-!!$VUEil`&Npad7UGtcdpacSu%pi1ITa)6W26&+Dpuq^s=W0vlz7(7R%ozF zCk_vb3XRVOQsq5|e0}GJNb{kq<0l}^RJQwdo3h{34QksB=MI(oHizfEER zgn%if)XqQ3JMK5pagr!1N%mS_?=~7Mi+l3L2^YG{i(IYfeGE+^C`U*#xwMu9MWAuUZh~)U zb=ta$@3fGSU-{3KVN%ffkmbUI%!w)3s+IGyIxKvuM@Jh1urBqy%ykzr>P{z8H)^j3 zr!55gn~iAAcm*LKndsn{+C9ZwHPmG_kEPNQ+oh5FK36vtau=`AWi`TNLtE?3sr z*7QBB-0gmRJI7K0T#P~kixN^ZR@8TV>Z(y_R^FmPk#$X1;V>g8`#vh4&O+hah z*>mxI{Zpm|C)g5z6Whh3y(>-0iw!y}bet!_uLo_~UE>~$Y@7y6CiKFaC$0|7&s z`p%cnlR@X=y|yGAcX>P?Myy!%@Gz!HM=j_dWam5ws$Ezw#YiIhDKdFYf_{CEy?Gy- z;KcfZpzAt(ifOr02Bc-_<_Ffbe$t_N>(zymQ#MsL`3}NmhD8BJcZg3<=Nacn`Jwy2 z8*11zKiY75Rv8z%%GX!W<#D$=xBZ|9wMJ|HhjH;m4W`LK(jAOtMM~2ve}2HJDyDJ_ zZCtK|bl&-*zg)efM-n6Ns7-rGnX-VdyQQo!h zJB1y3<3tCAc-`axtrA?Mz>D{`-On>raXeHp9GN`sNmt6YpvH@s?YYiH5o9BaAuH3e z;}&p1I#2=v`53D?BRENm(yuRgrzz4G6T~cv{8Ka&#B8T8NL%0($mq5TDjmF-Ngmx9 zrOks?p6WVN-YRvS!(b!MZF+2j)7kH){7+B$L;>c^`_3c#egWY#xZ{Q433Z8G%X9J( zve|}-h}9mI^WX6dE4UrUvh6ZCn9>$)i&D$DXPU$;g%J;j)&9k;h!B9zk`iY z^H!XZ_g8GoYsE6*=gRJfXEj1OpXHQAB`dpQl)|;Pm0M<5Vt5+6zTLf9 zzR{kpO!n1SU#1$6@BkCp1=so&_P+KQf7vyXr7^MCr^02kY=bNJKhUvOI!sYrfWW)D z+1$!-Ui0;yyttDO;$6COcKe}2M*inxFPSFqZdUa@7(Jm!98e1%%CCCPRj)dCsvBRw z_`bagRB$bJ$K`dCA$;M)2=w-iWi(Vg)Td;*X~TctU^gTweWd`>Ge4Kh+MQ4+9=5LX zS^HWi^UwQw=`=86Pvm&6cHLFtyo6HoX>jOtIoKduU_dOb3tcVcw)*vJeguJE-+2jv z%ul+&kHB7$CzW^4JJxkxw1T@a3yBM$eft<`TzpN#g^W(G9jxb}iS%ag!@g|&xV zt`Sh7GF}&x>={#PllVFqCD|e)ZWHi;=5&>rOE#fYeUIH1E7%AOzIxH6GPpMIz;4C+2VhYrGxD-KRX?Buq*fPf3YA>?ZtZtNk*wrW zgBHe`+^`Rpwc$LsVgu&-XG+|xNE6+yYJ(_wo=^qfU&Uz(_XbdZQegSc=+C#BQZOQN zpZ9trI-#cFrls%G@+mQEi2L;GQRz~;?86746X@~fE(f+#u{Y4C) zkp{nR1B|r7$XeIM>wy-9oo8)p1C8O1<=*TyUueqJq^&&M>-hcC@QkOXGDK6gqEz*; zp+Db-&VNblDs>d?wkh#H$&Q^4K|fBj7@Y-9PTU0*YHXZ!)y3#g+-|yXy>VGPnGw+&i)HV>MVhmJn{*i1g0&e!qfA?3m|Y4{@%TQpuiS*+FFvJgofIAx;*h;A@R(EeD`?Mu4lF32k z#I2lrLX^zQ>0YWCX`htlZfH>he4jf9l|OzA0h6hYDmxn?C|w-V*Ag!G1)n-T;cs4Y z=W?=?pXC#e{Qouh=|;NOc++ClSvOrDxIBD*gfqq_FX9O3%FMHPyc!eLGtS)G{g?LN z{(c4AO^ah~@!R_0XnTmXSg1J}2Ui(9A+_1=XArdsOoJC*O+vkM`Lbg_*>tCcuwX zI9id}On%eyRy22ON^(I&N1;V&RWq!LU9|HxV?i*LPb=3 z9f%MPMqJDG%e4=oSGOI?Q#Qw=eDG-md}}88kC{C|-`_oaJJkmBSvp~csza@=WW4|3 z8RR=a^P`hfODa@%Hnsr9-kun43o*Q|!NLEOpbsNw&Fr3U@NKz&j!VeHS}|<8di`hp zzQbajVpln*6T zbuSkiJLpqe7udPLb>5!KC|Sj#4W;NNbz0WSuXQ{lbp}MLM!ym0_r3{6wfNb8U+KQtI{n(&2OD!f*WHzd9W%8=f7d`eKS&AZ6w%pd%u%{U8DO zh32=ByA0A@xgiMXPV*ZLBk@e`@ukoAp1O;NFZ2kPdD?|tuYEysO7II`WsuoOZ@tQ^Y))6HetENdX_#8&kt*<^0Iksd<9e`~%rx=~8#P-0H^4&Kyp=I)8%%D=JFPJ*8jXeLDqT z@!X#CFM7=zYRBS4V@#&^u!uHn)zOT2;7AiR~fC$jLjA|QyhvAiy! z$THbo#I9Z1(?;Aa9XFSYV1zA_$P0s2!@9XE!--BA$Ue34x{Tu}XB>l;*3Ez-?^-NZ z8)R%XqruO&8oD%b&@Y$#C+8VEymvpgZ*<>EZTB+Gh-s!|y9kL|x3Qf@X$moS2eG{l zT68Qw4G8A*z=gpmoA0*~c3KNjE?R`yxfscZ?Gz}J7}vvHzio2>q_*cg>-s-034T`^ z_~%@23DtfCB5aBaA|G+kHK!P{57&ZH#W}PjkaoOAJsaf=C%xyD3;nyNz|IclE@5}e zs#rF3bAR|Vh7j|on!~wc5Tf0HoPWqo_ilXk5y5L`ly(j}nV4U@|4iCqh8aRS5Tj<; za#|n~A^FJC)U~(J5p#0Nfs|sZwiftml2R2;z<1SI$shh>dLY~9$(wY;khQ#AnqI*G zB7?aS2lpwkXBj$h4oNCJ`mlNi(S_OE(q9#T5ynAH`iQkw^syic;F8;q586HtuxyMo z$|-5?G)3rV9Gg`r{NCwzOzg(hFxDz;E*&I5iEA3SZ%DeBCm*bWTbXc?y24zV6bG^P zhaE0B-_?t;XLhIGMq7N?&JlLzxSYp%rpi*ckv_*vQpt!u)hB!F?23|qEC6UNklrQ+ zY8y9RIxkRW7lVkDaI%=Ko%4Nt;`XpA8)XYnx>;n*<{~DiE_Bby-n4}6gWPg=-`6_v za?MQDIJMj6aALb|xz;~=nFU0Y6l@&hUhQ}KQOsJ@8b_|u%txO~5@a&`QZ0#V_t{GU z3^pb!GoPXL$o;g)0}ocpp7$D7;J%lbsk&K|>$9FTDsm06=P=7Q9$DK2C@0BpT*(L2 zWfq<9E8Kqfw{f}ig)-F7Hsx??RhJK;K4dQW@y;Q7$H%Zg&fIZtPgkdPPBYkw#0RyM zy^->e(N~PdoOS%NKok71_n*FjsJ&0yVeQ3^En5O#xSaR=aGw<`XJ9EU=NTw-yu@hE zR%&hW!r0b-tpQtpRh`!Sf9d`>T7SD__&*x}{NLOD;AS&O|9%~O^P4UD_iq>PpMv)A zf4;Up16RTSeC;^*n|k{9@Bdf*;2i}qHuKAuCu%Oy!bYk$ungEEEdk=ea=?G}eh{N2 zK}Qk8Rt?Vo`6U|`xyH)4NQDUh_vF8^X}9~@hT93lp^Fvk=j|WCz+4UUyXl}s5l^jN5{g0XF?}zY)e2d|}aHkqplWPPoO`nASzan?d z1Maeg&JWR9H|OtkmDmgYH`)VJ_~`eKblm!huM2U6fF#6=Tj7&`)z1Y?o$L1*6*%|b z`+ZU24rOy2SY66fok{zm?w-Fnxq#)f$w2>06v9E({w;k4DUEx>zCMq4r;qRR?_x}> z`PN~>RQTANx?dibef{*XP~&gQO{Wtq_cP86mQ@V=`9}2%4g^1X75SzlsXrEsdYeW9 z#bAZj88D!nDsyTt&DBb))O3$-^K%wb`Az8*Seb+3>2A)+V3z}bvaKngGwCpxehVOFv3K#U-J7O*uJTQMflY* zH#UcFXV3BYGC7yt%g~O`Gs#Ix{Tj1-&qm@PbWyWIbxz^IwF7wGzqTg6UxEi2PP?fR z`19iI5Y8?969L}W@hsDpgoPH#GJ}q8?)C8He(zF{!G}o9vHd|6ZoT{Fx3ttTS7@va z;$rY523iO`03*+YN32VQes+q5opa3N3X^`ffh_2POEUY@B8@bB0$>$D!K4>=+@b!l z18$aAYIPw^<|9P)*vCWc=OB>(d&o#-pWXw~2=;OLYVs}tZBE8epNf$hE%0}0YC*VL zdS`Wy&xmBlU|ong$npd?nZxqSuNwhld9Gg-rCo*~oi!`Gx!lvJ96Ip|3?0hG773s< zNVE%Q8az8D?rNmrOMY54vTUb#EO`G!&71MRQOBb#Z=}f|Jp3zJ&OP6uEzJVZ8IcQj zJ{J>qmpaVhkgpAen4ashQsj&6LuGzuLvD-0_*xlH1yFSa04z8Rujc?&0)F)E}an^3O z&=|tS8XkGZf?kuPNwzZ#1PL?3(YgP!UiyfmEL8=MO|dC;*Xe

    +td!#UfWGFZ9P?IQ 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𝔢{AOr6YVDI9p;a{S{ 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 literal 0 HcmV?d00001 diff --git a/docs/media/multi-tenant-app-consent.png b/docs/media/multi-tenant-app-consent.png new file mode 100644 index 0000000000000000000000000000000000000000..17367b36568657cf90e6bfb24da120fc758ca0c5 GIT binary patch literal 48539 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 literal 0 HcmV?d00001 diff --git a/docs/media/multi-tenant-app.png b/docs/media/multi-tenant-app.png new file mode 100644 index 0000000000000000000000000000000000000000..21a8927fd997a3055ecddff58feb1b6aa81c9f70 GIT binary patch literal 40489 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 z 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

    JEBY!=^yM2440qKx) zz~wYW9~)p-`aJ)s_~`drct>3c z(}^e>Py@p!5PV0FWfp;xHh`33nq<2Di`Rtf1uj?0BUMu35rAS95cIn}GgFLOpYLIf z43+yMA7#H;YRBq@eV-hBWdsZz*}`o+Azcq$45F*URDOm|e?DiX4}X1bC}o?;#AJ^! z7G3#sQ(Q51ILroP8bAqChx?I0W?f6bQ1(G%-0tU7-2k-=7olKiiM2grF^%62e;FS9GtHUkJ zU_(pB71i-);0Am6Zg4K+Y|o2ei^S!~LM_i7`;W^#`@Lu}pXF2*++XPxX}?ude=T&` zB2m%&fLX*f*TK7pUw&go!}<94APG*$*ES35O)ECe4gmcA^)Mx+QjhMY`$xaEm?UsW zwUP*6=y!6_7S8qbVk^f!zqpKN)RPN-g5$|z*@gI%^@n#HIO?{J3pyj%Rgk0JBLJ)+ z8Ro%(WV{Pc$Pag49}LA+2gJ>NR=Z;=33c~QLFG$vcNhQI!;}bdB-A29%LoVjqfIKy z1A1*8+Dvi~kBsI_97&!E+c`wmT&3!}%Fq(;&*fnilY2w|np2t)J*S2pQj_RAXj8bY z9+0PO4AgPJwmORL?Eofgz>nsdb|sTT?9BCA9-j!K_Py)af=c+R?qvQr z58kQ`KRjvrEks^~5(TlelKi%Fzxlz9nw7=jKe{m}p_gKteW&l-_uq|+jEg^KN*6Qe zKKCLdLgjfBV9e3v`1M@(mXM%0n zb}Yc!hsLrSy+5MOP$O%@D{MaP7O&8~qD#++8lk2seDDP-@C~lNCCZZ0Q73gV$v#AJ zcj(Fn4ebS#w0v*mS*<x0J|UtS$; ze~xwR2AQfsgW~uoz}4g_g!C`tlE0ntp*uD9r~!8_$!CX5zx!X!{(;}#y#B|EhktK= zDBUziX+B!$?+5|@Nw`Z{kK)un_-v7(|_Fr2Q{_iIxM}9-jT4dg>&AciCTyPtQ KQ^i(3#Qy+2Tzh!{ literal 0 HcmV?d00001 From 5081b6f6c25cd75ff04ef2ce1775968c49e3aed1 Mon Sep 17 00:00:00 2001 From: Toddy Mladenov Date: Thu, 6 May 2021 12:57:17 -0700 Subject: [PATCH 18/51] Unified text for the next steps links --- .../overview-connected-registry-and-iot-edge.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/preview/connected-registry/overview-connected-registry-and-iot-edge.md b/docs/preview/connected-registry/overview-connected-registry-and-iot-edge.md index 2feba8c..a6613ea 100644 --- a/docs/preview/connected-registry/overview-connected-registry-and-iot-edge.md +++ b/docs/preview/connected-registry/overview-connected-registry-and-iot-edge.md @@ -38,9 +38,9 @@ In this architecture, the connected registries deployed on each layer are config In this overview, you learned about the use of the connected registry in hierarchical IoT Edge scenarios. Continue to the one of the following articles to learn how to configure and deploy a connected registry to your IoT Edge device. -> [Quickstart - Create connected registry using the CLI][quickstart-connected-registry-cli] +> [Quickstart: Create connected registry using the CLI][quickstart-connected-registry-cli] -> [Quickstart - Deploy a connected registry to an IoT Edge device][overview-connected-registry-and-iot-edge] +> [Quickstart: Deploy a connected registry to an IoT Edge device][overview-connected-registry-and-iot-edge] > [Quickstart: Deploy connected registry on nested IoT Edge device][quickstart-pull-images-from-connected-registry] From 1774fb6b2f0d739f114caec200ffae2aeb3bf107 Mon Sep 17 00:00:00 2001 From: Toddy Mladenov Date: Thu, 6 May 2021 12:57:38 -0700 Subject: [PATCH 19/51] Removed section for creating the client token for the parent registry --- .../quickstart-deploy-connected-registry-iot-edge-cli.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md b/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md index 78e41dd..d6276c5 100644 --- a/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md +++ b/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md @@ -281,4 +281,4 @@ In this quickstart, you learned how to deploy a connected registry to an IoT Edg [container-registry-intro]: container-registry-intro.md [quickstart-pull-images-from-connected-registry]: quickstart-pull-images-from-connected-registry.md [quickstart-connected-registry-cli]: quickstart-connected-registry-cli.md -[quickstart-connected-registry-nested]: quickstart-connected-registry-nested-iot-edge-cli.md \ No newline at end of file +[quickstart-connected-registry-nested]: quickstart-connected-registry-nested-iot-edge-cli.md From 6a1d97a34c5e3ce85587f30bce64670d345b4610 Mon Sep 17 00:00:00 2001 From: Toddy Mladenov Date: Thu, 6 May 2021 15:07:41 -0700 Subject: [PATCH 20/51] Fixed sync token username and other feedback. --- ...-connected-registry-nested-iot-edge-cli.md | 69 +------------------ 1 file changed, 2 insertions(+), 67 deletions(-) diff --git a/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md b/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md index 1baf096..ae0bee6 100644 --- a/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md +++ b/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md @@ -24,71 +24,6 @@ This tutorial also requires that you have set up a connected registry on a top l Also, make sure that you have created the connected registry resource in Azure as described in the [Create connected registry using the CLI][quickstart-connected-registry-cli] quickstart guide. Only `mirror` mode will work for this scenario. -## Create a client token for access to the parent registry - -The IoT Edge runtime will need to authenticate with the top level registry to pull the connected registry image and deploy it. First, use the following command to create a scope map for the connected registry image repository: - -```azurecli -az acr scope-map create \ - --description "Nested connected registry repo pull scope map." \ - --name nested-connected-registry-pull \ - --registry mycontainerregistry001 \ - --repository "acr/connected-registry" content/read -``` - -Next, use the following command to create a client token for the IoT Edge device and associate it to the scope map: - -```azurecli -az acr token create \ - --name nestedcrimagepulltoken \ - --registry mycontainerregistry001 \ - --scope-map connected-registry-pull -``` - -This command will print a JSON that will include credential information similar to the following: - -```json - ... - "credentials": { - "activeDirectoryObject": null, - "certificates": [], - "passwords": [ - { - "creationTime": "2020-12-10T00:06:15.356846+00:00", - "expiry": null, - "name": "password1", - "value": "$$$0meCoMPL3xP4$$W0rd001!@#$$" - }, - { - "creationTime": "2020-12-10T00:06:15.356846+00:00", - "expiry": null, - "name": "password2", - "value": "#$an0TH3rCoMPL3xP4ssW0rd002!#$" - } - ], - "username": "nestedcrimagepulltoken" - } - ... -``` - -You will need the `username` and one of the `passwords` values for the IoT Edge manifest below. - - > [!IMPORTANT] - > Make sure that you save the generated passwords. Those are one-time passwords and cannot be retrieved. You can generate new passwords using the [az acr token credential generate][az-acr-token-credential-generate] command. - -More details about tokens and scope maps are available in [Create a token with repository-scoped permissions](container-registry-repository-scoped-permissions.md). - -Last, add the client token to the top level connected registry using the following command: - -```azurecli -az acr connected-registry update \ - --name myconnectedregistry \ - --registry mycontainerregistry001 \ - --add-client-tokens nestedcrimagepulltoken -``` - > [!IMPORTANT] - > The client token must be added to the parent connected registry, `myconnectedregistry` in this case. - ## Retrieve connected registry configuration information Before deploying the connected registry to the nested IoT Edge device, you will need to retrieve the configuration from the connected registry resource in Azure. Use the [az acr connected-registry install][az-acr-connected-registry-install] command to retrieve the configuration. @@ -103,7 +38,7 @@ This will return the connection string for the connected registry including the ```json { - "ACR_REGISTRY_CONNECTION_STRING": "ConnectedRegistryName=myconnectedmirror;SyncTokenName=myconnectedmirror-sync-token;SyncTokenPassword=s0meCoMPL3xP4$$W0rd001!@#;ParentGatewayEndpoint=mycontainerregistry001.westus2.data.azurecr.io;ParentEndpointProtocol=https", + "ACR_REGISTRY_CONNECTION_STRING": "ConnectedRegistryName=myconnectedmirror;SyncTokenName=myconnectedmirror-sync-token;SyncTokenPassword=s0meCoMPL3xP4$$W0rd001!@#;ParentGatewayEndpoint=;ParentEndpointProtocol=", "ACR_REGISTRY_LOGIN_SERVER": "" } ``` @@ -182,7 +117,7 @@ To deploy the connected registry module using the Azure CLI, save the following "tsmregistry": { "address": "10.16.7.4", "password": "$$$0meCoMPL3xP4$$W0rd001!@#$$", - "username": "nestedcrimagepulltoken" + "username": "myconnectedmirror-sync-token" } } }, From 8cf2ea1f339a7f887a35afca1ed81cf3caa7fb88 Mon Sep 17 00:00:00 2001 From: Toddy Mladenov Date: Thu, 6 May 2021 15:47:30 -0700 Subject: [PATCH 21/51] Added log config for the container --- ...ickstart-deploy-connected-registry-nested-iot-edge-cli.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md b/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md index ae0bee6..f5e19c3 100644 --- a/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md +++ b/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md @@ -69,7 +69,7 @@ To deploy the connected registry module using the Azure CLI, save the following "connected-registry": { "settings": { "image": "10.16.7.4/acr/connected-registry:0.2.0", - "createOptions": "{\"HostConfig\":{\"Binds\":[\"/home/azureuser/connected-registry:/var/acr/data\",,\"/usr/local/share/ca-certificates:/usr/local/share/ca-certificates\",\"/etc/ssl/certs:/etc/ssl/certs\"]}}" + "createOptions": "{\"HostConfig\":{\"Binds\":[\"/home/azureuser/connected-registry:/var/acr/data\",\"/usr/local/share/ca-certificates:/usr/local/share/ca-certificates\",\"/etc/ssl/certs:/etc/ssl/certs\",\"LogConfig\":{ \"Type\": \"json-file\", \"Config\": {\"max-size\": \"10m\",\"max-file\": \"3\"}}]}}" }, "type": "docker", "env": { @@ -98,9 +98,6 @@ To deploy the connected registry module using the Azure CLI, save the following "NGINX_CONFIG_ENV_VAR_LIST": { "value": "NGINX_DEFAULT_PORT,BLOB_UPLOAD_ROUTE_ADDRESS,CONNECTED_ACR_ROUTE_ADDRESS,IOTEDGE_PARENTHOSTNAME,DOCKER_REQUEST_ROUTE_ADDRESS" }, - "DOCKER_REQUEST_ROUTE_ADDRESS": { - "value": "registry:5000" - }, "BLOB_UPLOAD_ROUTE_ADDRESS": { "value": "AzureBlobStorageonIoTEdge:11002" } From fc1ab964202cd0358baeaf0f6aa52b16987fd726 Mon Sep 17 00:00:00 2001 From: Toddy Mladenov Date: Thu, 6 May 2021 16:11:41 -0700 Subject: [PATCH 22/51] Added bullet points for updated sections --- ...ickstart-deploy-connected-registry-nested-iot-edge-cli.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md b/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md index f5e19c3..a51bcb7 100644 --- a/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md +++ b/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md @@ -161,7 +161,10 @@ To deploy the connected registry module using the Azure CLI, save the following } ``` -Use the information from the previous sections to update the relevant JSON values. +Use the information from the previous sections to update the relevant JSON values: + +- The environment variable `ACR_REGISTRY_CONNECTION_STRING` needs to be updated with the output from the `az acr connected-registry install renew-credentials` command above. You will need to manually add the `ParentGatewayEndpoint` with the IP or host address of the parent registry, `10.16.7.4` in this case. You will also need to select the proper protocol in `ParentEndpointProtocol`. +- For each module in the manifest, you should update the registry endpoint to the IP address or hostname of the parent, `10.16.7.4` in this case. You will use the file path in the next section when you run the command to apply the configuration to your device. From 5f4078cfc21202a401f6c3214f6bfc7467880b14 Mon Sep 17 00:00:00 2001 From: Toddy Mladenov Date: Thu, 6 May 2021 16:16:17 -0700 Subject: [PATCH 23/51] Added response from the show command for the mirror --- ...ckstart-deploy-connected-registry-nested-iot-edge-cli.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md b/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md index a51bcb7..5225669 100644 --- a/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md +++ b/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md @@ -192,6 +192,12 @@ az acr connected-registry show \ You may need to a wait few minutes until the deployment of the connected registry completes. +Successful response from the command will include the following: + +```azurecli +connectionState: Online +``` + ## Next steps In this quickstart, you learned how to deploy a connected registry to an IoT Edge device. Continue to the next guide to learn how to pull images from the newly deployed connected registry. From 0f350f7824156681f73eefc142dddaaada01b8df Mon Sep 17 00:00:00 2001 From: Toddy Mladenov Date: Thu, 6 May 2021 16:20:28 -0700 Subject: [PATCH 24/51] Fixed grammatical errors --- ...uickstart-deploy-connected-registry-nested-iot-edge-cli.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md b/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md index 5225669..c7c53c2 100644 --- a/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md +++ b/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md @@ -1,6 +1,6 @@ --- title: Quickstart - Deploy a connected registry to a nested IoT Edge device -description: Use Azure Container Registry CLI commands and Azure portal to deploy a connected registry to a mested Azure IoT Edge device. +description: Use Azure Container Registry CLI commands and Azure portal to deploy a connected registry to a nested Azure IoT Edge device. ms.topic: quickstart ms.date: 04/28/2021 ms.author: memladen @@ -58,7 +58,7 @@ A deployment manifest is a JSON document that describes which modules to deploy To deploy the connected registry module using the Azure CLI, save the following deployment manifest locally as a `.json` file. -[!IMPORTANT] In the bellow deployment manifest, the IP address `10.16.7.4` is the IP address of the device hosting parent connected registry. Make sure you replace this IP address with the one your parent device uses. +[!IMPORTANT] In the following deployment manifest, the IP address `10.16.7.4` is the IP address of the device hosting parent connected registry. Make sure you replace this IP address with the one your parent device uses. ```json { From 14cd1931d3efa5052a55a0ea171a560653d3c8b5 Mon Sep 17 00:00:00 2001 From: Esteban Rey Date: Mon, 10 May 2021 14:06:20 -0700 Subject: [PATCH 25/51] Create enable/disable teleport command for each repository (#541) --- docs/teleport/edit-teleport-attribute.sh | 61 ++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 docs/teleport/edit-teleport-attribute.sh diff --git a/docs/teleport/edit-teleport-attribute.sh b/docs/teleport/edit-teleport-attribute.sh new file mode 100644 index 0000000..0919d14 --- /dev/null +++ b/docs/teleport/edit-teleport-attribute.sh @@ -0,0 +1,61 @@ +#!/bin/bash +#usage: edit-teleport-attribute.sh acr-name repo enable +#usage: eg: edit-teleport-attribute.sh demo42 /demo42/hello-world 2.1 disable +#usage: eg: edit-teleport-attribute.sh demo42 /demo42/hello-world 2.1 enable --debug +# Assumes ACR_USER and ACR_PWD are set to valid ACRPULL role +# Retrieve the ACR_PWD with the following command, if the Admin account is enabled +# ACR_PWD="$(az acr credential show -n demo42t --query passwords[0].value -o tsv)" +# NOTE: Repo scoped tokens will be coming online in November +ACR_NAME=$1 +ACR_REPO=$2 +STATE=$3 +DEBUG=$4 + +# Troubleshooting +if [[ $DEBUG = '--debug' ]]; then + echo "Parameter Validation:" + echo " ACR_USER: ${ACR_USER}" + echo " ACR_PWD : ${ACR_PWD}" + echo " ACR_NAME: ${ACR_NAME}" + echo " ACR_REPO: ${ACR_REPO}" +fi + +echo "Getting Access Token" + +ACR_ACCESS_TOKEN=$(curl -s -u ${ACR_USER}:${ACR_PWD} "https://${ACR_NAME}.azurecr.io/oauth2/token?service=${ACR_NAME}.azurecr.io&scope=repository:${ACR_REPO}:pull,push" | sed -e 's/[{}]/''/g' | awk -v RS=',"' -F: '/access_token/ {print $2}' | sed 's/^.//;s/.$//') + +if [[ $ACR_ACCESS_TOKEN == '' ]]; then + echo "Could not get access token, make sure credentials are accurate and have pull access" + exit 1 +fi + +if [[ $DEBUG == '--debug' ]]; then + echo " ACR_ACCESS_TOKEN: ${ACR_ACCESS_TOKEN}" +fi + +SET_STATE="" + +if [[ $STATE == 'enable' ]]; then + SET_STATE="{\"teleportEnabled\": true }" +fi + +if [[ $STATE == 'disable' ]]; then + SET_STATE="{\"teleportEnabled\": false }" +fi + +if [[ $DEBUG == '--debug' ]]; then + echo " SET_STATE: ${SET_STATE}" +fi + +echo "Sendng Patch Request for $ACR_REPO" + +RESULT=$(curl -s -S \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer ${ACR_ACCESS_TOKEN}" \ + --request PATCH \ + --data "${SET_STATE}" \ + https://$ACR_NAME.azurecr.io/acr/v1/$ACR_REPO) + +echo " RESULT: ${RESULT}" + + From 8c4987658c10b1dc807c30bfbaaab8d9b31499f9 Mon Sep 17 00:00:00 2001 From: Toddy Mladenov Date: Thu, 13 May 2021 13:15:39 -0700 Subject: [PATCH 26/51] Removed bullet for nested and added link to the doc for nested. --- docs/preview/connected-registry/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/preview/connected-registry/README.md b/docs/preview/connected-registry/README.md index fffd436..4620ecc 100644 --- a/docs/preview/connected-registry/README.md +++ b/docs/preview/connected-registry/README.md @@ -31,7 +31,6 @@ The stamp name is one of the aliases returned by the above command. Currently, c Here is a list of known limitations for the connected registry functionality in limited preview: -- Nested connected registry mode is still under development and requires additional testing. Currently nested registries are blocked and will be released in a few weeks. - Number of tokens and scopemaps is limited to 20K for a single ACR. This indirectly limits the number of connected registries for an ACR registry because every connected registry needs a sync and client token. - Number of repository permissions in a scope map is limited to 500. - Number of clients for the connected registry is currently limited to 20. @@ -58,6 +57,7 @@ In limited preview, the connected registry targets IoT scenarios. Below are link - [Using connected registry with Azure IoT Edge](./overview-connected-registry-and-iot-edge.md) - [Quickstart: Create a connected registry using Azure Container Registry CLI commands](./quickstart-connected-registry-cli.md) - [Quickstart: Deploy a connected registry to an IoT Edge device](./quickstart-deploy-connected-registry-iot-edge-cli.md) +- [Quickstart: Deploy a connected registry to an nested IoT Edge device](./quickstart-deploy-connected-quickstart-deploy-connected-registry-nested-iot-edge-cli.md) - [Quickstart: Pull images from a connected registry](./quickstart-pull-images-from-connected-registry.md) ## Troubleshooting From 7e53f67fe47a8a48ca0fec6f05a147c1555d0ed4 Mon Sep 17 00:00:00 2001 From: Toddy Mladenov Date: Thu, 13 May 2021 13:23:28 -0700 Subject: [PATCH 27/51] Updated the CLI doc with proper repos and added parent to the mirror --- .../quickstart-connected-registry-cli.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/docs/preview/connected-registry/quickstart-connected-registry-cli.md b/docs/preview/connected-registry/quickstart-connected-registry-cli.md index 661f86e..5885d4c 100644 --- a/docs/preview/connected-registry/quickstart-connected-registry-cli.md +++ b/docs/preview/connected-registry/quickstart-connected-registry-cli.md @@ -56,7 +56,10 @@ This and subsequent quickstart guides use two repositories: The easiest way to populate those repositories is to use the `az acr import` command as follows: ```azurecli -az acr import -n mycontainerregistry001 --source mcr.microsoft.com/acr/connected-registry:0.1.0 +az acr import -n mycontainerregistry001 --source mcr.microsoft.com/acr/connected-registry:0.2.0 +az acr import -n mycontainerregistry001 --source mcr.microsoft.com/azureiotedge-agent:1.2 +az acr import -n mycontainerregistry001 --source mcr.microsoft.com/azureiotedge-hub:1.2 +az acr import -n mycontainerregistry001 --source mcr.microsoft.com/azureiotedge-api-proxy:latest az acr import -n mycontainerregistry001 --source mcr.microsoft.com/hello-world:latest ``` @@ -67,7 +70,7 @@ Create a connected registry using the [az acr connected-registry create][az-acr- ```azurecli az acr connected-registry create --registry mycontainerregistry001 \ --name myconnectedregistry \ - --repository "hello-world" "acr/connected-registry" + --repository "hello-world" "acr/connected-registry" "azureiotedge-agent" "azureiotedge-hub" "azureiotedge-api-proxy" ``` The above command will create a connected registry resource in Azure and link it to the *mycontainerregistry001* cloud ACR. The *hello-world* and *acr/connected-registry* repositories will be synchronized between the cloud ACR and the registry on premises. Because no `--mode` option is specified for the connected registry, it will allow _pull_ and _push_ functionality by default. Because there is no synchronization schedule defined for this connected registry, both repositories will be synchronized between the cloud registry and the connected registry without interruptions. @@ -81,8 +84,9 @@ You can use the connected registry [az acr connected-registry create][az-acr-con ```azurecli az acr connected-registry create --registry mycontainerregistry001 \ + --parent myconnectedregistry \ --name myconnectedmirror \ - --repository "hello-world" "acr/connected-registry" \ + --repository "hello-world" "acr/connected-registry" "azureiotedge-agent" "azureiotedge-hub" "azureiotedge-api-proxy" \ --mode mirror ``` From cf77e70c600f33f0d5a4d7d7f4acc880aecded28 Mon Sep 17 00:00:00 2001 From: Toddy Mladenov Date: Thu, 13 May 2021 13:32:03 -0700 Subject: [PATCH 28/51] Updated to connection string --- ...-deploy-connected-registry-iot-edge-cli.md | 39 +++---------------- 1 file changed, 5 insertions(+), 34 deletions(-) diff --git a/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md b/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md index a925ecb..f44dac1 100644 --- a/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md +++ b/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md @@ -119,23 +119,12 @@ az acr connected-registry install renew-credentials \ --name myconnectedregistry \ ``` -This will return the configuration for the connected registry including the newly generated passwords. +This will return the connection string for the connected registry including the newly generated passwords. ```json { - "ACR_PARENT_GATEWAY_ENDPOINT": "mycontainerregistry001.westus2.data.azurecr.io", - "ACR_PARENT_LOGIN_SERVER": "mycontainerregistry001.azurecr.io", - "ACR_PARENT_PROTOCOL": "https", - "ACR_REGISTRY_CERTIFICATE_VOLUME": "", - "ACR_REGISTRY_DATA_VOLUME": "", - "ACR_REGISTRY_LOGIN_SERVER": "", - "ACR_REGISTRY_NAME": "myconnectedregistry", - "ACR_SYNC_TOKEN_NAME": "myconnectedregistry-sync-token", - "ACR_SYNC_TOKEN_PASSWORD": { - "password1": "s0meCoMPL3xP4$$W0rd001!@#", - "password2": "an0TH3rCoMPL3xP4ssW0rd002!" - }, - "ACR_SYNC_TOKEN_USERNAME": "myconnectedregistry-sync-token" + "ACR_REGISTRY_CONNECTION_STRING": "ConnectedRegistryName=myconnectedregistry;SyncTokenName=myconnectedregistry-sync-token;SyncTokenPassword=s0meCoMPL3xP4$$W0rd001!@#;ParentGatewayEndpoint=mycontainerregistry001.westus2.data.azurecr.io;ParentEndpointProtocol=https", + "ACR_REGISTRY_LOGIN_SERVER": "" } ``` @@ -168,26 +157,8 @@ To deploy the connected registry module using the Azure CLI, save the following }, "type": "docker", "env": { - "ACR_REGISTRY_NAME": { - "value": "myconnectedregistry" - }, - "ACR_PARENT_GATEWAY_ENDPOINT": { - "value": "mycontainerregistry001.westus2.data.azurecr.io" - }, - "ACR_SYNC_TOKEN_NAME": { - "value": "myconnectedregistry-sync-token" - }, - "ACR_SYNC_TOKEN_PASSWORD": { - "value": "s0meCoMPL3xP4$$W0rd001!@#" - }, - "ACR_REGISTRY_LOGIN_SERVER": { - "value": "" - }, - "ACR_PARENT_PROTOCOL": { - "value": "https" - }, - "ACR_PARENT_LOGIN_SERVER": { - "value": "mycontainerregistry001.azurecr.io" + "ACR_REGISTRY_CONNECTION_STRING": { + "value": "ConnectedRegistryName=myconnectedregistry;SyncTokenName=myconnectedregistry-sync-token;SyncTokenPassword=s0meCoMPL3xP4$$W0rd001!@#;ParentGatewayEndpoint=mycontainerregistry001.westus2.data.azurecr.io;ParentEndpointProtocol=https" } }, "status": "running", From 1ea33559509888f7276223d2aa3ee826f0eb2c0b Mon Sep 17 00:00:00 2001 From: Toddy Mladenov Date: Thu, 13 May 2021 13:34:51 -0700 Subject: [PATCH 29/51] Changed the version for the agent --- .../quickstart-deploy-connected-registry-iot-edge-cli.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md b/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md index f44dac1..35eda92 100644 --- a/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md +++ b/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md @@ -35,7 +35,7 @@ agent: type: "docker" env: {} config: - image: "mcr.microsoft.com/azureiotedge-agent:1.2.0" + image: "mcr.microsoft.com/azureiotedge-agent:1.2" auth: {} ``` From 26a633c18522b5baa4e48a4972bec9ba463f1c1e Mon Sep 17 00:00:00 2001 From: Toddy Mladenov Date: Thu, 13 May 2021 13:37:48 -0700 Subject: [PATCH 30/51] Fixed another verison of the images --- .../quickstart-deploy-connected-registry-iot-edge-cli.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md b/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md index 35eda92..910176b 100644 --- a/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md +++ b/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md @@ -195,7 +195,7 @@ To deploy the connected registry module using the Azure CLI, save the following }, "edgeHub": { "settings": { - "image": "mcr.microsoft.com/azureiotedge-hub:1.0", + "image": "mcr.microsoft.com/azureiotedge-hub:1.2", "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"443/tcp\":[{\"HostPort\":\"443\"}],\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}]}}}" }, "type": "docker", From 753d414ece01f5d2ee050f30c354f66dd06a32ed Mon Sep 17 00:00:00 2001 From: Toddy Mladenov Date: Thu, 13 May 2021 13:39:18 -0700 Subject: [PATCH 31/51] Fixed link to the nested registry article --- .../quickstart-deploy-connected-registry-iot-edge-cli.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md b/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md index 910176b..c93143d 100644 --- a/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md +++ b/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md @@ -379,7 +379,7 @@ In this quickstart, you learned how to deploy a connected registry to an IoT Edg > [Quickstart: Pull images from a connected registry][quickstart-pull-images-from-connected-registry] -> [Quickstart: Deploy connected registry on nested IoT Edge device][quickstart-pull-images-from-connected-registry] +> [Quickstart: Deploy connected registry on nested IoT Edge device][quickstart-connected-registry-nested] [az-acr-connected-registry-install]: https://docs.microsoft.com/cli/azure/acr/connected-registry/install?view=azure-cli-latest From ffcb018d710442906516581f8bfb5c0ac0682ab0 Mon Sep 17 00:00:00 2001 From: Toddy Mladenov Date: Thu, 13 May 2021 13:44:53 -0700 Subject: [PATCH 32/51] Fixed image versions and link --- ...ickstart-deploy-connected-registry-nested-iot-edge-cli.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md b/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md index c7c53c2..8bfccc8 100644 --- a/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md +++ b/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md @@ -124,7 +124,7 @@ To deploy the connected registry module using the Azure CLI, save the following "systemModules": { "edgeAgent": { "settings": { - "image": "10.16.7.4/azureiotedge-agent:1.0", + "image": "10.16.7.4/azureiotedge-agent:1.2", "createOptions": "" }, "type": "docker", @@ -136,7 +136,7 @@ To deploy the connected registry module using the Azure CLI, save the following }, "edgeHub": { "settings": { - "image": "10.16.7.4/azureiotedge-hub:1.0", + "image": "10.16.7.4/azureiotedge-hub:1.2", "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"443/tcp\":[{\"HostPort\":\"443\"}],\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}]}}}" }, "type": "docker", @@ -202,7 +202,6 @@ connectionState: Online In this quickstart, you learned how to deploy a connected registry to an IoT Edge device. Continue to the next guide to learn how to pull images from the newly deployed connected registry. -> [!div class="nextstepaction"] > [Quickstart: Pull images from a connected registry][quickstart-pull-images-from-connected-registry] From c23751cb462f7ee737ab9850fbbeb53e239d34d3 Mon Sep 17 00:00:00 2001 From: Jeanine Burke <41650461+jaysterp@users.noreply.github.com> Date: Fri, 14 May 2021 09:27:31 -0700 Subject: [PATCH 33/51] ensure data endpoint is enabled before creating connected registry (#543) --- .../quickstart-connected-registry-cli.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/docs/preview/connected-registry/quickstart-connected-registry-cli.md b/docs/preview/connected-registry/quickstart-connected-registry-cli.md index 5885d4c..6c6df99 100644 --- a/docs/preview/connected-registry/quickstart-connected-registry-cli.md +++ b/docs/preview/connected-registry/quickstart-connected-registry-cli.md @@ -47,6 +47,15 @@ az acr create --resource-group myResourceGroup \ This example creates a *Premium* registry. Connected registries are supported only in the *Premium* tier of Azure container registry. For details on available service tiers, see [Container registry service tiers][container-registry-skus]. +## Enable the dedicated data endpoint for the cloud registry + +For the connected registries to communicate with the cloud registry, the dedicated data endpoint for the Azure Container Registry in the cloud should be enabled by using the [az acr update][az-acr-update] command as follows: + +```azurecli +az acr update -n mycontainerregistry001 \ + --data-endpoint-enabled +``` + ## Import images into the container registry This and subsequent quickstart guides use two repositories: @@ -111,15 +120,6 @@ myconnectedregistry registry myconnectedmirror mirror ``` -## Enable the data endpoint for the cloud registry - -For the connected registries to communicate with the cloud registry, the data endpoint for the Azure Container Registry in the cloud should be enabled by using the [az acr update][az-acr-update] command as follows: - -```azurecli -az acr update -n mycontainerregistry001 \ - --data-endpoint-enabled -``` - ## Next steps In this quickstart, you used Azure CLI to create a connected registry resources in Azure. Those new connected registry resources are tied to your Azure Container Registry and allow synchronization of artifact between the cloud registry and the on-premises registry. Continue to the connected registry deployment guides to learn how to deploy the connected registry on your on-premises infrastructure. From d7413498e25adea9b7ec0e0ec6da9f9ebb49aa6e Mon Sep 17 00:00:00 2001 From: Huangli Wu Date: Fri, 14 May 2021 11:10:13 -0700 Subject: [PATCH 34/51] add client_max_body_size in ngninx config. (#544) --- .../quickstart-deploy-connected-registry-iot-edge-cli.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md b/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md index c93143d..328c5f9 100644 --- a/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md +++ b/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md @@ -275,7 +275,7 @@ Update the proxy config for the connected registry following the steps: ``` "desired": { - "proxy_config": "ZXZlbnRzIHsgfQoKCmh0dHAgewogICAgcHJveHlfYnVmZmVycyAzMiAxNjBrOwogICAgcHJveHlfYnVmZmVyX3NpemUgMTYwazsKICAgIHByb3h5X3JlYWRfdGltZW91dCAzNjAwOwogICAgZXJyb3JfbG9nIC9kZXYvc3Rkb3V0IGluZm87CiAgICBhY2Nlc3NfbG9nIC9kZXYvc3Rkb3V0OwoKICAgIHNlcnZlciB7CiAgICAgICAgbGlzdGVuICR7TkdJTlhfREVGQVVMVF9QT1JUfSBzc2wgZGVmYXVsdF9zZXJ2ZXI7CgogICAgICAgIGNodW5rZWRfdHJhbnNmZXJfZW5jb2Rpbmcgb247CgogICAgICAgIHNzbF9jZXJ0aWZpY2F0ZSAgICAgICAgc2VydmVyLmNydDsKICAgICAgICBzc2xfY2VydGlmaWNhdGVfa2V5ICAgIHByaXZhdGVfa2V5X3NlcnZlci5wZW07CiAgICAgICAgc3NsX2NsaWVudF9jZXJ0aWZpY2F0ZSB0cnVzdGVkQ0EuY3J0OwogICAgICAgICNzc2xfdmVyaWZ5X2RlcHRoIDc7CiAgICAgICAgc3NsX3ZlcmlmeV9jbGllbnQgb3B0aW9uYWxfbm9fY2E7CgogICAgICAgICNpZl90YWcgJHtCTE9CX1VQTE9BRF9ST1VURV9BRERSRVNTfQogICAgICAgIGlmICgkaHR0cF94X21zX3ZlcnNpb24pCiAgICAgICAgewogICAgICAgICAgICByZXdyaXRlIF4oLiopJCAvc3RvcmFnZSQxIGxhc3Q7CiAgICAgICAgfQogICAgICAgICNlbmRpZl90YWcgJHtCTE9CX1VQTE9BRF9ST1VURV9BRERSRVNTfQogICAgICAgICNpZl90YWcgISR7QkxPQl9VUExPQURfUk9VVEVfQUREUkVTU30KICAgICAgICBpZiAoJGh0dHBfeF9tc192ZXJzaW9uKQogICAgICAgIHsKICAgICAgICAgICAgcmV3cml0ZSBeKC4qKSQgL3BhcmVudCQxIGxhc3Q7CiAgICAgICAgfQogICAgICAgICNlbmRpZl90YWcgJHtCTE9CX1VQTE9BRF9ST1VURV9BRERSRVNTfQoKICAgICAgICAjaWZfdGFnICR7QkxPQl9VUExPQURfUk9VVEVfQUREUkVTU30KICAgICAgICBsb2NhdGlvbiB+Xi9zdG9yYWdlLyguKil7CiAgICAgICAgICAgIHJlc29sdmVyIDEyNy4wLjAuMTE7CiAgICAgICAgICAgIHByb3h5X2h0dHBfdmVyc2lvbiAxLjE7CiAgICAgICAgICAgIHByb3h5X3Bhc3MgICAgICAgICAgaHR0cDovLyR7QkxPQl9VUExPQURfUk9VVEVfQUREUkVTU30vJDEkaXNfYXJncyRhcmdzOwogICAgICAgIH0KICAgICAgICAjZW5kaWZfdGFnICR7QkxPQl9VUExPQURfUk9VVEVfQUREUkVTU30KCiAgICAgICAgI2lmX3RhZyAke0NPTk5FQ1RFRF9BQ1JfUk9VVEVfQUREUkVTU30KICAgICAgICBsb2NhdGlvbiAvdjIgewogICAgICAgICAgICByZXNvbHZlciAxMjcuMC4wLjExOwogICAgICAgICAgICBwcm94eV9odHRwX3ZlcnNpb24gMS4xOwogICAgICAgICAgICBwcm94eV9wYXNzICAgICAgICAgaHR0cDovLyR7Q09OTkVDVEVEX0FDUl9ST1VURV9BRERSRVNTfTsKICAgICAgICAgICAgcHJveHlfc2V0X2hlYWRlciAgIFgtRm9yd2FyZGVkLUhvc3QgJGh0dHBfaG9zdDsKICAgICAgICAgICAgcHJveHlfc2V0X2hlYWRlciAgIFgtRm9yd2FyZGVkLVByb3RvICRzY2hlbWU7CiAgICAgICAgfQoKICAgICAgICBsb2NhdGlvbiAvYWNyIHsKICAgICAgICAgICAgcmVzb2x2ZXIgMTI3LjAuMC4xMTsKICAgICAgICAgICAgcHJveHlfaHR0cF92ZXJzaW9uIDEuMTsKICAgICAgICAgICAgcHJveHlfcGFzcyAgICAgICAgIGh0dHA6Ly8ke0NPTk5FQ1RFRF9BQ1JfUk9VVEVfQUREUkVTU307CiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgICBYLUZvcndhcmRlZC1Ib3N0ICRodHRwX2hvc3Q7CiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgICBYLUZvcndhcmRlZC1Qcm90byAkc2NoZW1lOwogICAgICAgIH0KICAgICAgICAjZW5kaWZfdGFnICR7Q09OTkVDVEVEX0FDUl9ST1VURV9BRERSRVNTfQoKICAgICAgICAjaWZfdGFnICR7SU9URURHRV9QQVJFTlRIT1NUTkFNRX0KICAgICAgICBsb2NhdGlvbiB+Xi9wYXJlbnQvKC4qKSB7CiAgICAgICAgICAgIHByb3h5X2h0dHBfdmVyc2lvbiAxLjE7CiAgICAgICAgICAgIHJlc29sdmVyIDEyNy4wLjAuMTE7CiAgICAgICAgICAgICNwcm94eV9zc2xfY2VydGlmaWNhdGUgICAgIGlkZW50aXR5LmNydDsKICAgICAgICAgICAgI3Byb3h5X3NzbF9jZXJ0aWZpY2F0ZV9rZXkgcHJpdmF0ZV9rZXlfaWRlbnRpdHkucGVtOwogICAgICAgICAgICBwcm94eV9zc2xfdHJ1c3RlZF9jZXJ0aWZpY2F0ZSB0cnVzdGVkQ0EuY3J0OwogICAgICAgICAgICBwcm94eV9zc2xfdmVyaWZ5X2RlcHRoIDc7CiAgICAgICAgICAgIHByb3h5X3NzbF92ZXJpZnkgICAgICAgb247CiAgICAgICAgICAgIHByb3h5X3Bhc3MgICAgICAgICAgaHR0cHM6Ly8ke0lPVEVER0VfUEFSRU5USE9TVE5BTUV9OiR7TkdJTlhfREVGQVVMVF9QT1JUfS8kMSRpc19hcmdzJGFyZ3M7CiAgICAgICAgfQogICAgICAgICNlbmRpZl90YWcgJHtJT1RFREdFX1BBUkVOVEhPU1ROQU1FfQoKICAgICAgICBsb2NhdGlvbiB+Xi9kZXZpY2VzfHR3aW5zLyB7CiAgICAgICAgICAgIHByb3h5X2h0dHBfdmVyc2lvbiAgMS4xOwogICAgICAgICAgICBwcm94eV9zc2xfdmVyaWZ5ICAgIG9mZjsKICAgICAgICAgICAgcHJveHlfc2V0X2hlYWRlciAgICB4LW1zLWVkZ2UtY2xpZW50Y2VydCAgICAkc3NsX2NsaWVudF9lc2NhcGVkX2NlcnQ7CiAgICAgICAgICAgIHByb3h5X3Bhc3MgICAgICAgICAgaHR0cHM6Ly9lZGdlSHViOwogICAgICAgIH0KICAgIH0KfQ==", + "proxy_config": "ZXZlbnRzIHsgfQoKCmh0dHAgewogICAgcHJveHlfYnVmZmVycyAzMiAxNjBrOwogICAgcHJveHlfYnVmZmVyX3NpemUgMTYwazsKICAgIHByb3h5X3JlYWRfdGltZW91dCAzNjAwOwogICAgZXJyb3JfbG9nIC9kZXYvc3Rkb3V0IGluZm87CiAgICBhY2Nlc3NfbG9nIC9kZXYvc3Rkb3V0OwoKICAgIHNlcnZlciB7CiAgICAgICAgbGlzdGVuICR7TkdJTlhfREVGQVVMVF9QT1JUfSBzc2wgZGVmYXVsdF9zZXJ2ZXI7CgogICAgICAgIGNodW5rZWRfdHJhbnNmZXJfZW5jb2Rpbmcgb247CgogICAgICAgIHNzbF9jZXJ0aWZpY2F0ZSAgICAgICAgc2VydmVyLmNydDsKICAgICAgICBzc2xfY2VydGlmaWNhdGVfa2V5ICAgIHByaXZhdGVfa2V5X3NlcnZlci5wZW07CiAgICAgICAgc3NsX2NsaWVudF9jZXJ0aWZpY2F0ZSB0cnVzdGVkQ0EuY3J0OwogICAgICAgICNzc2xfdmVyaWZ5X2RlcHRoIDc7CiAgICAgICAgc3NsX3ZlcmlmeV9jbGllbnQgb3B0aW9uYWxfbm9fY2E7CgogICAgICAgICNpZl90YWcgJHtCTE9CX1VQTE9BRF9ST1VURV9BRERSRVNTfQogICAgICAgIGlmICgkaHR0cF94X21zX3ZlcnNpb24pCiAgICAgICAgewogICAgICAgICAgICByZXdyaXRlIF4oLiopJCAvc3RvcmFnZSQxIGxhc3Q7CiAgICAgICAgfQogICAgICAgICNlbmRpZl90YWcgJHtCTE9CX1VQTE9BRF9ST1VURV9BRERSRVNTfQogICAgICAgICNpZl90YWcgISR7QkxPQl9VUExPQURfUk9VVEVfQUREUkVTU30KICAgICAgICBpZiAoJGh0dHBfeF9tc192ZXJzaW9uKQogICAgICAgIHsKICAgICAgICAgICAgcmV3cml0ZSBeKC4qKSQgL3BhcmVudCQxIGxhc3Q7CiAgICAgICAgfQogICAgICAgICNlbmRpZl90YWcgJHtCTE9CX1VQTE9BRF9ST1VURV9BRERSRVNTfQoKICAgICAgICAjaWZfdGFnICR7QkxPQl9VUExPQURfUk9VVEVfQUREUkVTU30KICAgICAgICBsb2NhdGlvbiB+Xi9zdG9yYWdlLyguKil7CiAgICAgICAgICAgIHJlc29sdmVyIDEyNy4wLjAuMTE7CiAgICAgICAgICAgIHByb3h5X2h0dHBfdmVyc2lvbiAxLjE7CiAgICAgICAgICAgIHByb3h5X3Bhc3MgICAgICAgICAgaHR0cDovLyR7QkxPQl9VUExPQURfUk9VVEVfQUREUkVTU30vJDEkaXNfYXJncyRhcmdzOwogICAgICAgIH0KICAgICAgICAjZW5kaWZfdGFnICR7QkxPQl9VUExPQURfUk9VVEVfQUREUkVTU30KCiAgICAgICAgI2lmX3RhZyAke0NPTk5FQ1RFRF9BQ1JfUk9VVEVfQUREUkVTU30KICAgICAgICBsb2NhdGlvbiAvdjIgewogICAgICAgICAgICBjbGllbnRfbWF4X2JvZHlfc2l6ZSAxMDAwRzsKICAgICAgICAgICAgcmVzb2x2ZXIgMTI3LjAuMC4xMTsKICAgICAgICAgICAgcHJveHlfaHR0cF92ZXJzaW9uIDEuMTsKICAgICAgICAgICAgcHJveHlfcGFzcyAgICAgICAgIGh0dHA6Ly8ke0NPTk5FQ1RFRF9BQ1JfUk9VVEVfQUREUkVTU307CiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgICBYLUZvcndhcmRlZC1Ib3N0ICRodHRwX2hvc3Q7CiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgICBYLUZvcndhcmRlZC1Qcm90byAkc2NoZW1lOwogICAgICAgIH0KCiAgICAgICAgbG9jYXRpb24gL2FjciB7CiAgICAgICAgICAgIHJlc29sdmVyIDEyNy4wLjAuMTE7CiAgICAgICAgICAgIHByb3h5X2h0dHBfdmVyc2lvbiAxLjE7CiAgICAgICAgICAgIHByb3h5X3Bhc3MgICAgICAgICBodHRwOi8vJHtDT05ORUNURURfQUNSX1JPVVRFX0FERFJFU1N9OwogICAgICAgICAgICBwcm94eV9zZXRfaGVhZGVyICAgWC1Gb3J3YXJkZWQtSG9zdCAkaHR0cF9ob3N0OwogICAgICAgICAgICBwcm94eV9zZXRfaGVhZGVyICAgWC1Gb3J3YXJkZWQtUHJvdG8gJHNjaGVtZTsKICAgICAgICB9CiAgICAgICAgI2VuZGlmX3RhZyAke0NPTk5FQ1RFRF9BQ1JfUk9VVEVfQUREUkVTU30KCiAgICAgICAgI2lmX3RhZyAke0lPVEVER0VfUEFSRU5USE9TVE5BTUV9CiAgICAgICAgbG9jYXRpb24gfl4vcGFyZW50LyguKikgewogICAgICAgICAgICBwcm94eV9odHRwX3ZlcnNpb24gMS4xOwogICAgICAgICAgICByZXNvbHZlciAxMjcuMC4wLjExOwogICAgICAgICAgICAjcHJveHlfc3NsX2NlcnRpZmljYXRlICAgICBpZGVudGl0eS5jcnQ7CiAgICAgICAgICAgICNwcm94eV9zc2xfY2VydGlmaWNhdGVfa2V5IHByaXZhdGVfa2V5X2lkZW50aXR5LnBlbTsKICAgICAgICAgICAgcHJveHlfc3NsX3RydXN0ZWRfY2VydGlmaWNhdGUgdHJ1c3RlZENBLmNydDsKICAgICAgICAgICAgcHJveHlfc3NsX3ZlcmlmeV9kZXB0aCA3OwogICAgICAgICAgICBwcm94eV9zc2xfdmVyaWZ5ICAgICAgIG9uOwogICAgICAgICAgICBwcm94eV9wYXNzICAgICAgICAgIGh0dHBzOi8vJHtJT1RFREdFX1BBUkVOVEhPU1ROQU1FfToke05HSU5YX0RFRkFVTFRfUE9SVH0vJDEkaXNfYXJncyRhcmdzOwogICAgICAgIH0KICAgICAgICAjZW5kaWZfdGFnICR7SU9URURHRV9QQVJFTlRIT1NUTkFNRX0KCiAgICAgICAgbG9jYXRpb24gfl4vZGV2aWNlc3x0d2lucy8gewogICAgICAgICAgICBwcm94eV9odHRwX3ZlcnNpb24gIDEuMTsKICAgICAgICAgICAgcHJveHlfc3NsX3ZlcmlmeSAgICBvZmY7CiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgICAgeC1tcy1lZGdlLWNsaWVudGNlcnQgICAgJHNzbF9jbGllbnRfZXNjYXBlZF9jZXJ0OwogICAgICAgICAgICBwcm94eV9wYXNzICAgICAgICAgIGh0dHBzOi8vZWRnZUh1YjsKICAgICAgICB9CiAgICB9Cn0=", "$metadata": {...} ``` @@ -326,6 +326,7 @@ http { #if_tag ${CONNECTED_ACR_ROUTE_ADDRESS} location /v2 { + client_max_body_size 1000G; resolver 127.0.0.11; proxy_http_version 1.1; proxy_pass http://${CONNECTED_ACR_ROUTE_ADDRESS}; From 2e6e12eccaa5af468865ddfaa815f68cd573dcb7 Mon Sep 17 00:00:00 2001 From: Huangli Wu Date: Fri, 14 May 2021 13:49:23 -0700 Subject: [PATCH 35/51] update link (#545) --- .../quickstart-deploy-connected-registry-iot-edge-cli.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md b/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md index 328c5f9..3708410 100644 --- a/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md +++ b/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md @@ -25,7 +25,7 @@ In this quickstart, you use [Azure Container Registry][container-registry-intro] ## Before you begin -This tutorial requires an Azure IoT Edge device to be set up upfront. You can use the [Deploy your first IoT Edge module to a virtual Linux device](../iot-edge/quickstart-linux.md) quickstart guide to learn how to deploy a virtual IoT Edge device. The connected registry is deployed as a module on the IoT Edge device. +This tutorial requires an Azure IoT Edge device to be set up upfront. You can use the [Deploy your first IoT Edge module to a virtual Linux device](https://github.com/MicrosoftDocs/azure-docs/blob/master/articles/iot-edge/quickstart-linux.md) quickstart guide to learn how to deploy a virtual IoT Edge device. The connected registry is deployed as a module on the IoT Edge device. To install the latest 1.2 version of iotedge agent, login to the IoT device, open `/etc/iotedge/config.yaml`, search the section for `edgeAgent`, update the image version to 1.2.0 as the following. @@ -53,7 +53,7 @@ az acr import \ --source mcr.microsoft.com/acr/connected-registry:0.2.0 ``` -To learn more about nested IoT Edge scenarios, please visit [Tutorial: Create a hierarchy of IoT Edge devices (Preview)](../iot-edge/tutorial-nested-iot-edge.md). +To learn more about nested IoT Edge scenarios, please visit [Tutorial: Create a hierarchy of IoT Edge devices](https://github.com/MicrosoftDocs/azure-docs/blob/master/articles/iot-edge/tutorial-nested-iot-edge.md). ## Create a client token for access to the cloud registry @@ -140,7 +140,7 @@ You will need the information for the IoT Edge manifest below. ## Configure a deployment manifest for IoT Edge -A deployment manifest is a JSON document that describes which modules to deploy to the IoT Edge device. For more information about how deployment manifests work and how to create them, see [Understand how IoT Edge modules can be used, configured, and reused](../iot-edge/module-composition.md). +A deployment manifest is a JSON document that describes which modules to deploy to the IoT Edge device. For more information about how deployment manifests work and how to create them, see [Understand how IoT Edge modules can be used, configured, and reused](https://github.com/MicrosoftDocs/azure-docs/blob/master/articles/iot-edge/module-composition.md). To deploy the connected registry module using the Azure CLI, save the following deployment manifest locally as a `.json` file. @@ -238,7 +238,7 @@ az iot edge set-modules \ --content [file path] ``` -For more details you can refer to the [Deploy Azure IoT Edge modules with Azure CLI](../iot-edge/how-to-deploy-modules-cli.md) article. +For more details you can refer to the [Deploy Azure IoT Edge modules with Azure CLI](https://github.com/MicrosoftDocs/azure-docs/blob/master/articles/iot-edge/how-to-deploy-modules-cli.md) article. To check the status of the connected registry, use the following CLI command: From f56c86c65a5518b37a0032707385f784c886d21d Mon Sep 17 00:00:00 2001 From: savaradh <60020169+savaradh@users.noreply.github.com> Date: Tue, 25 May 2021 14:05:18 -0700 Subject: [PATCH 36/51] Fix broken links and update api proxy config (#546) --- docs/preview/connected-registry/README.md | 2 +- .../overview-connected-registry-and-iot-edge.md | 2 +- .../quickstart-deploy-connected-registry-iot-edge-cli.md | 5 +++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/preview/connected-registry/README.md b/docs/preview/connected-registry/README.md index 4620ecc..badd408 100644 --- a/docs/preview/connected-registry/README.md +++ b/docs/preview/connected-registry/README.md @@ -57,7 +57,7 @@ In limited preview, the connected registry targets IoT scenarios. Below are link - [Using connected registry with Azure IoT Edge](./overview-connected-registry-and-iot-edge.md) - [Quickstart: Create a connected registry using Azure Container Registry CLI commands](./quickstart-connected-registry-cli.md) - [Quickstart: Deploy a connected registry to an IoT Edge device](./quickstart-deploy-connected-registry-iot-edge-cli.md) -- [Quickstart: Deploy a connected registry to an nested IoT Edge device](./quickstart-deploy-connected-quickstart-deploy-connected-registry-nested-iot-edge-cli.md) +- [Quickstart: Deploy a connected registry to an nested IoT Edge device](./quickstart-deploy-connected-registry-nested-iot-edge-cli.md) - [Quickstart: Pull images from a connected registry](./quickstart-pull-images-from-connected-registry.md) ## Troubleshooting diff --git a/docs/preview/connected-registry/overview-connected-registry-and-iot-edge.md b/docs/preview/connected-registry/overview-connected-registry-and-iot-edge.md index a6613ea..48d3e10 100644 --- a/docs/preview/connected-registry/overview-connected-registry-and-iot-edge.md +++ b/docs/preview/connected-registry/overview-connected-registry-and-iot-edge.md @@ -48,4 +48,4 @@ In this overview, you learned about the use of the connected registry in hierarc [quickstart-connected-registry-cli]:quickstart-connected-registry-cli.md [overview-connected-registry-and-iot-edge]:quickstart-deploy-connected-registry-iot-edge-cli.md [tutorial-nested-iot-edge]: https://docs.microsoft.com/azure/iot-edge/tutorial-nested-iot-edge?view=iotedge-2020-11&tabs=azure-portal -[quickstart-connected-registry-nested]: quickstart-connected-registry-nested-iot-edge-cli.md \ No newline at end of file +[quickstart-connected-registry-nested]: quickstart-deploy-connected-registry-nested-iot-edge-cli.md \ No newline at end of file diff --git a/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md b/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md index 3708410..d3832bc 100644 --- a/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md +++ b/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md @@ -275,7 +275,7 @@ Update the proxy config for the connected registry following the steps: ``` "desired": { - "proxy_config": "ZXZlbnRzIHsgfQoKCmh0dHAgewogICAgcHJveHlfYnVmZmVycyAzMiAxNjBrOwogICAgcHJveHlfYnVmZmVyX3NpemUgMTYwazsKICAgIHByb3h5X3JlYWRfdGltZW91dCAzNjAwOwogICAgZXJyb3JfbG9nIC9kZXYvc3Rkb3V0IGluZm87CiAgICBhY2Nlc3NfbG9nIC9kZXYvc3Rkb3V0OwoKICAgIHNlcnZlciB7CiAgICAgICAgbGlzdGVuICR7TkdJTlhfREVGQVVMVF9QT1JUfSBzc2wgZGVmYXVsdF9zZXJ2ZXI7CgogICAgICAgIGNodW5rZWRfdHJhbnNmZXJfZW5jb2Rpbmcgb247CgogICAgICAgIHNzbF9jZXJ0aWZpY2F0ZSAgICAgICAgc2VydmVyLmNydDsKICAgICAgICBzc2xfY2VydGlmaWNhdGVfa2V5ICAgIHByaXZhdGVfa2V5X3NlcnZlci5wZW07CiAgICAgICAgc3NsX2NsaWVudF9jZXJ0aWZpY2F0ZSB0cnVzdGVkQ0EuY3J0OwogICAgICAgICNzc2xfdmVyaWZ5X2RlcHRoIDc7CiAgICAgICAgc3NsX3ZlcmlmeV9jbGllbnQgb3B0aW9uYWxfbm9fY2E7CgogICAgICAgICNpZl90YWcgJHtCTE9CX1VQTE9BRF9ST1VURV9BRERSRVNTfQogICAgICAgIGlmICgkaHR0cF94X21zX3ZlcnNpb24pCiAgICAgICAgewogICAgICAgICAgICByZXdyaXRlIF4oLiopJCAvc3RvcmFnZSQxIGxhc3Q7CiAgICAgICAgfQogICAgICAgICNlbmRpZl90YWcgJHtCTE9CX1VQTE9BRF9ST1VURV9BRERSRVNTfQogICAgICAgICNpZl90YWcgISR7QkxPQl9VUExPQURfUk9VVEVfQUREUkVTU30KICAgICAgICBpZiAoJGh0dHBfeF9tc192ZXJzaW9uKQogICAgICAgIHsKICAgICAgICAgICAgcmV3cml0ZSBeKC4qKSQgL3BhcmVudCQxIGxhc3Q7CiAgICAgICAgfQogICAgICAgICNlbmRpZl90YWcgJHtCTE9CX1VQTE9BRF9ST1VURV9BRERSRVNTfQoKICAgICAgICAjaWZfdGFnICR7QkxPQl9VUExPQURfUk9VVEVfQUREUkVTU30KICAgICAgICBsb2NhdGlvbiB+Xi9zdG9yYWdlLyguKil7CiAgICAgICAgICAgIHJlc29sdmVyIDEyNy4wLjAuMTE7CiAgICAgICAgICAgIHByb3h5X2h0dHBfdmVyc2lvbiAxLjE7CiAgICAgICAgICAgIHByb3h5X3Bhc3MgICAgICAgICAgaHR0cDovLyR7QkxPQl9VUExPQURfUk9VVEVfQUREUkVTU30vJDEkaXNfYXJncyRhcmdzOwogICAgICAgIH0KICAgICAgICAjZW5kaWZfdGFnICR7QkxPQl9VUExPQURfUk9VVEVfQUREUkVTU30KCiAgICAgICAgI2lmX3RhZyAke0NPTk5FQ1RFRF9BQ1JfUk9VVEVfQUREUkVTU30KICAgICAgICBsb2NhdGlvbiAvdjIgewogICAgICAgICAgICBjbGllbnRfbWF4X2JvZHlfc2l6ZSAxMDAwRzsKICAgICAgICAgICAgcmVzb2x2ZXIgMTI3LjAuMC4xMTsKICAgICAgICAgICAgcHJveHlfaHR0cF92ZXJzaW9uIDEuMTsKICAgICAgICAgICAgcHJveHlfcGFzcyAgICAgICAgIGh0dHA6Ly8ke0NPTk5FQ1RFRF9BQ1JfUk9VVEVfQUREUkVTU307CiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgICBYLUZvcndhcmRlZC1Ib3N0ICRodHRwX2hvc3Q7CiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgICBYLUZvcndhcmRlZC1Qcm90byAkc2NoZW1lOwogICAgICAgIH0KCiAgICAgICAgbG9jYXRpb24gL2FjciB7CiAgICAgICAgICAgIHJlc29sdmVyIDEyNy4wLjAuMTE7CiAgICAgICAgICAgIHByb3h5X2h0dHBfdmVyc2lvbiAxLjE7CiAgICAgICAgICAgIHByb3h5X3Bhc3MgICAgICAgICBodHRwOi8vJHtDT05ORUNURURfQUNSX1JPVVRFX0FERFJFU1N9OwogICAgICAgICAgICBwcm94eV9zZXRfaGVhZGVyICAgWC1Gb3J3YXJkZWQtSG9zdCAkaHR0cF9ob3N0OwogICAgICAgICAgICBwcm94eV9zZXRfaGVhZGVyICAgWC1Gb3J3YXJkZWQtUHJvdG8gJHNjaGVtZTsKICAgICAgICB9CiAgICAgICAgI2VuZGlmX3RhZyAke0NPTk5FQ1RFRF9BQ1JfUk9VVEVfQUREUkVTU30KCiAgICAgICAgI2lmX3RhZyAke0lPVEVER0VfUEFSRU5USE9TVE5BTUV9CiAgICAgICAgbG9jYXRpb24gfl4vcGFyZW50LyguKikgewogICAgICAgICAgICBwcm94eV9odHRwX3ZlcnNpb24gMS4xOwogICAgICAgICAgICByZXNvbHZlciAxMjcuMC4wLjExOwogICAgICAgICAgICAjcHJveHlfc3NsX2NlcnRpZmljYXRlICAgICBpZGVudGl0eS5jcnQ7CiAgICAgICAgICAgICNwcm94eV9zc2xfY2VydGlmaWNhdGVfa2V5IHByaXZhdGVfa2V5X2lkZW50aXR5LnBlbTsKICAgICAgICAgICAgcHJveHlfc3NsX3RydXN0ZWRfY2VydGlmaWNhdGUgdHJ1c3RlZENBLmNydDsKICAgICAgICAgICAgcHJveHlfc3NsX3ZlcmlmeV9kZXB0aCA3OwogICAgICAgICAgICBwcm94eV9zc2xfdmVyaWZ5ICAgICAgIG9uOwogICAgICAgICAgICBwcm94eV9wYXNzICAgICAgICAgIGh0dHBzOi8vJHtJT1RFREdFX1BBUkVOVEhPU1ROQU1FfToke05HSU5YX0RFRkFVTFRfUE9SVH0vJDEkaXNfYXJncyRhcmdzOwogICAgICAgIH0KICAgICAgICAjZW5kaWZfdGFnICR7SU9URURHRV9QQVJFTlRIT1NUTkFNRX0KCiAgICAgICAgbG9jYXRpb24gfl4vZGV2aWNlc3x0d2lucy8gewogICAgICAgICAgICBwcm94eV9odHRwX3ZlcnNpb24gIDEuMTsKICAgICAgICAgICAgcHJveHlfc3NsX3ZlcmlmeSAgICBvZmY7CiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgICAgeC1tcy1lZGdlLWNsaWVudGNlcnQgICAgJHNzbF9jbGllbnRfZXNjYXBlZF9jZXJ0OwogICAgICAgICAgICBwcm94eV9wYXNzICAgICAgICAgIGh0dHBzOi8vZWRnZUh1YjsKICAgICAgICB9CiAgICB9Cn0=", + "proxy_config": "ZXZlbnRzIHsgfQoKCmh0dHAgewogICAgcHJveHlfYnVmZmVycyAzMiAxNjBrOwogICAgcHJveHlfYnVmZmVyX3NpemUgMTYwazsKICAgIHByb3h5X3JlYWRfdGltZW91dCAzNjAwOwogICAgZXJyb3JfbG9nIC9kZXYvc3Rkb3V0IGluZm87CiAgICBhY2Nlc3NfbG9nIC9kZXYvc3Rkb3V0OwoKICAgIHNlcnZlciB7CiAgICAgICAgbGlzdGVuICR7TkdJTlhfREVGQVVMVF9QT1JUfSBzc2wgZGVmYXVsdF9zZXJ2ZXI7CgogICAgICAgIGNodW5rZWRfdHJhbnNmZXJfZW5jb2Rpbmcgb247CgogICAgICAgIHNzbF9jZXJ0aWZpY2F0ZSAgICAgICAgc2VydmVyLmNydDsKICAgICAgICBzc2xfY2VydGlmaWNhdGVfa2V5ICAgIHByaXZhdGVfa2V5X3NlcnZlci5wZW07CiAgICAgICAgc3NsX2NsaWVudF9jZXJ0aWZpY2F0ZSB0cnVzdGVkQ0EuY3J0OwogICAgICAgICNzc2xfdmVyaWZ5X2RlcHRoIDc7CiAgICAgICAgc3NsX3ZlcmlmeV9jbGllbnQgb3B0aW9uYWxfbm9fY2E7CgogICAgICAgICNpZl90YWcgJHtCTE9CX1VQTE9BRF9ST1VURV9BRERSRVNTfQogICAgICAgIGlmICgkaHR0cF94X21zX3ZlcnNpb24pCiAgICAgICAgewogICAgICAgICAgICByZXdyaXRlIF4oLiopJCAvc3RvcmFnZSQxIGxhc3Q7CiAgICAgICAgfQogICAgICAgICNlbmRpZl90YWcgJHtCTE9CX1VQTE9BRF9ST1VURV9BRERSRVNTfQogICAgICAgICNpZl90YWcgISR7QkxPQl9VUExPQURfUk9VVEVfQUREUkVTU30KICAgICAgICBpZiAoJGh0dHBfeF9tc192ZXJzaW9uKQogICAgICAgIHsKICAgICAgICAgICAgcmV3cml0ZSBeKC4qKSQgL3BhcmVudCQxIGxhc3Q7CiAgICAgICAgfQogICAgICAgICNlbmRpZl90YWcgJHtCTE9CX1VQTE9BRF9ST1VURV9BRERSRVNTfQoKICAgICAgICAjaWZfdGFnICR7QkxPQl9VUExPQURfUk9VVEVfQUREUkVTU30KICAgICAgICBsb2NhdGlvbiB+Xi9zdG9yYWdlLyguKil7CiAgICAgICAgICAgIHJlc29sdmVyIDEyNy4wLjAuMTE7CiAgICAgICAgICAgIHByb3h5X2h0dHBfdmVyc2lvbiAxLjE7CiAgICAgICAgICAgIHByb3h5X3Bhc3MgICAgICAgICAgaHR0cDovLyR7QkxPQl9VUExPQURfUk9VVEVfQUREUkVTU30vJDEkaXNfYXJncyRhcmdzOwogICAgICAgIH0KICAgICAgICAjZW5kaWZfdGFnICR7QkxPQl9VUExPQURfUk9VVEVfQUREUkVTU30KCiAgICAgICAgI2lmX3RhZyAke0NPTk5FQ1RFRF9BQ1JfUk9VVEVfQUREUkVTU30KICAgICAgICBsb2NhdGlvbiAvdjIgewogICAgICAgICAgICBjbGllbnRfbWF4X2JvZHlfc2l6ZSAxMDAwRzsKICAgICAgICAgICAgcmVzb2x2ZXIgMTI3LjAuMC4xMTsKICAgICAgICAgICAgcHJveHlfaHR0cF92ZXJzaW9uIDEuMTsKICAgICAgICAgICAgcHJveHlfcGFzcyAgICAgICAgIGh0dHA6Ly8ke0NPTk5FQ1RFRF9BQ1JfUk9VVEVfQUREUkVTU307CiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgICBYLUZvcndhcmRlZC1Ib3N0ICRodHRwX2hvc3Q7CiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgICBYLUZvcndhcmRlZC1Qcm90byAkc2NoZW1lOwogICAgICAgIH0KCiAgICAgICAgbG9jYXRpb24gL2FjciB7CiAgICAgICAgICAgIGNsaWVudF9tYXhfYm9keV9zaXplIDEwTTsKICAgICAgICAgICAgcmVzb2x2ZXIgMTI3LjAuMC4xMTsKICAgICAgICAgICAgcHJveHlfaHR0cF92ZXJzaW9uIDEuMTsKICAgICAgICAgICAgcHJveHlfcGFzcyAgICAgICAgIGh0dHA6Ly8ke0NPTk5FQ1RFRF9BQ1JfUk9VVEVfQUREUkVTU307CiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgICBYLUZvcndhcmRlZC1Ib3N0ICRodHRwX2hvc3Q7CiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgICBYLUZvcndhcmRlZC1Qcm90byAkc2NoZW1lOwogICAgICAgIH0KICAgICAgICAjZW5kaWZfdGFnICR7Q09OTkVDVEVEX0FDUl9ST1VURV9BRERSRVNTfQoKICAgICAgICAjaWZfdGFnICR7SU9URURHRV9QQVJFTlRIT1NUTkFNRX0KICAgICAgICBsb2NhdGlvbiB+Xi9wYXJlbnQvKC4qKSB7CiAgICAgICAgICAgIHByb3h5X2h0dHBfdmVyc2lvbiAxLjE7CiAgICAgICAgICAgIHJlc29sdmVyIDEyNy4wLjAuMTE7CiAgICAgICAgICAgICNwcm94eV9zc2xfY2VydGlmaWNhdGUgICAgIGlkZW50aXR5LmNydDsKICAgICAgICAgICAgI3Byb3h5X3NzbF9jZXJ0aWZpY2F0ZV9rZXkgcHJpdmF0ZV9rZXlfaWRlbnRpdHkucGVtOwogICAgICAgICAgICBwcm94eV9zc2xfdHJ1c3RlZF9jZXJ0aWZpY2F0ZSB0cnVzdGVkQ0EuY3J0OwogICAgICAgICAgICBwcm94eV9zc2xfdmVyaWZ5X2RlcHRoIDc7CiAgICAgICAgICAgIHByb3h5X3NzbF92ZXJpZnkgICAgICAgb247CiAgICAgICAgICAgIHByb3h5X3Bhc3MgICAgICAgICAgaHR0cHM6Ly8ke0lPVEVER0VfUEFSRU5USE9TVE5BTUV9OiR7TkdJTlhfREVGQVVMVF9QT1JUfS8kMSRpc19hcmdzJGFyZ3M7CiAgICAgICAgfQogICAgICAgICNlbmRpZl90YWcgJHtJT1RFREdFX1BBUkVOVEhPU1ROQU1FfQoKICAgICAgICBsb2NhdGlvbiB+Xi9kZXZpY2VzfHR3aW5zLyB7CiAgICAgICAgICAgIHByb3h5X2h0dHBfdmVyc2lvbiAgMS4xOwogICAgICAgICAgICBwcm94eV9zc2xfdmVyaWZ5ICAgIG9mZjsKICAgICAgICAgICAgcHJveHlfc2V0X2hlYWRlciAgICB4LW1zLWVkZ2UtY2xpZW50Y2VydCAgICAkc3NsX2NsaWVudF9lc2NhcGVkX2NlcnQ7CiAgICAgICAgICAgIHByb3h5X3Bhc3MgICAgICAgICAgaHR0cHM6Ly9lZGdlSHViOwogICAgICAgIH0KICAgIH0KfQ==", "$metadata": {...} ``` @@ -335,6 +335,7 @@ http { } location /acr { + client_max_body_size 10M; resolver 127.0.0.11; proxy_http_version 1.1; proxy_pass http://${CONNECTED_ACR_ROUTE_ADDRESS}; @@ -389,4 +390,4 @@ In this quickstart, you learned how to deploy a connected registry to an IoT Edg [container-registry-intro]: container-registry-intro.md [quickstart-pull-images-from-connected-registry]: quickstart-pull-images-from-connected-registry.md [quickstart-connected-registry-cli]: quickstart-connected-registry-cli.md -[quickstart-connected-registry-nested]: quickstart-connected-registry-nested-iot-edge-cli.md +[quickstart-connected-registry-nested]: quickstart-deploy-connected-registry-nested-iot-edge-cli.md From 8a313c0652e509c37ca2ba9719b0eb0933360bcf Mon Sep 17 00:00:00 2001 From: Huangli Wu Date: Tue, 8 Jun 2021 12:00:59 -0700 Subject: [PATCH 37/51] Update the connected registry deployment on nest iot. --- ...-connected-registry-nested-iot-edge-cli.md | 56 ++++++++++++++----- 1 file changed, 41 insertions(+), 15 deletions(-) diff --git a/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md b/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md index 8bfccc8..819815a 100644 --- a/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md +++ b/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md @@ -12,18 +12,42 @@ ms.custom: In this quickstart, you use [Azure Container Registry][container-registry-intro] commands to deploy a connected registry to a nested Azure IoT Edge device. You can review the [ACR connected registry introduction](intro-connected-registry.md) for details about the connected registry feature of Azure Container Registry. -[!INCLUDE [quickstarts-free-trial-note](../../includes/quickstarts-free-trial-note.md)] +[!INCLUDE [quickstarts](https://docs.microsoft.com/en-us/azure/iot-edge/quickstart-linux?view=iotedge-2018-06)] -[!INCLUDE [azure-cli-prepare-your-environment.md](../../includes/azure-cli-prepare-your-environment.md)] +[!INCLUDE [azure-cli-prepare-your-environment.md](https://github.com/MicrosoftDocs/azure-docs/blob/master/includes/azure-cli-prepare-your-environment.md)] ## Before you begin -This tutorial requires a nested Azure IoT Edge device to be set up upfront. You can use the [Deploy your first IoT Edge module to a virtual Linux device](../iot-edge/quickstart-linux.md) quickstart guide to learn how to deploy a virtual IoT Edge device. You can also look at [Tutorial: Create a hierarchy of IoT Edge devices](../iot-edge/tutorial-nested-iot-edge.md) to learn how to configure hierarchical IoT edge devices. The connected registry is deployed as a module on the nested IoT Edge device. - -This tutorial also requires that you have set up a connected registry on a top level IoT Edge device by following the [Quickstart: Deploy a connected registry to an IoT Edge device](quickstart-deploy-connected-registry-iot-edge-cli.md). +This tutorial also requires that you have the knowledge about set up a connected registry on a IoT Edge device by following the [Quickstart: Deploy a connected registry to an IoT Edge device](quickstart-deploy-connected-registry-iot-edge-cli.md). Also, make sure that you have created the connected registry resource in Azure as described in the [Create connected registry using the CLI][quickstart-connected-registry-cli] quickstart guide. Only `mirror` mode will work for this scenario. +## Set up nested IOT +This tutorial requires a nested Azure IoT Edge device to be set up upfront. You can use the [Deploy your first IoT Edge module to a virtual Linux device](https://docs.microsoft.com/en-us/azure/iot-edge/quickstart-linux?view=iotedge-2020-11) quickstart guide to learn how to deploy a virtual IoT Edge device. To create a nested IoT Edge devices, follow the instructions [Tutorial: Create a hierarchy of IoT Edge devices](https://docs.microsoft.com/en-us/azure/iot-edge/tutorial-nested-iot-edge?view=iotedge-2020-11) to learn how to configure hierarchical IoT edge devices. The connected registry is deployed as a module on the nested IoT Edge device. The tutorial provided the way to create the VM and set up the IoT Edge from the existing template. You can also use the [Tutorial: Install or uninstall Azure IoT Edge for Linux](https://docs.microsoft.com/en-us/azure/iot-edge/how-to-install-iot-edge?view=iotedge-2020-11) to learn how to manually set up the machine if you need deploy from other kind of devices e.g. Pi. + +### Update lower level config.toml +For connected registry, there's one more step when create the nested iot in addition to the tutorial. Since the lower device need pull the iot edge images from top level connected registry. You need pass the credential info in the config file. After you unzip the files and before run ./install.sh to on the lower device, open the config.toml file, add the following section to pass the client token info. Please refer [Quickstart: Deploy a connected registry to an IoT Edge device](quickstart-deploy-connected-registry-iot-edge-cli.md) if you are not familar how to create a client token. And you also make sure the client token need the permissions to pull all the required images. + +```json +[agent.config.auth] +serveraddress = "$upstream:8000" +username = "huangliconnectedregistryeuap15-client-token" +password = "COkPGJ84ZnClqytxmNSKaP=8ocMEESli" +``` + +### Top level and lower level deployment files + +As part of the nested IOT setup, you need prepare the top level and lower level deployment files (deploymentTopLayer.json and deploymentLowerLayer.json). + +The top level deployment file is the same as the one you used to set up a connected registry on a IoT Edge device. Refer [Quickstart: Deploy a connected registry to an IoT Edge device](quickstart-deploy-connected-registry-iot-edge-cli.md). + +For the lower level deployment file, please refer the following section 'Configure a deployment manifest for the nested IoT Edge' about the difference to the top level deployment file. Overall, the lowever level deployment file is similar as the top level deployment file. The differences are + +1. It need pull all the images required from top level connected registry instead of from cloud registry or MCR. +2. It need configure the parent gateway endpoint with the top level connected registry IP or FQDN instead of cloud registry. + +For #1, when you set up the top level connected registry, you need make sure it will sync up all the IoT agent, hub and connected registry images locally (azureiotedge-agent, azureiotedge-hub, connected-registry). The lower level IoT device need pull these images from the top level connected registry. + ## Retrieve connected registry configuration information Before deploying the connected registry to the nested IoT Edge device, you will need to retrieve the configuration from the connected registry resource in Azure. Use the [az acr connected-registry install][az-acr-connected-registry-install] command to retrieve the configuration. @@ -54,11 +78,11 @@ You will need the information for the IoT Edge manifest below. ## Configure a deployment manifest for the nested IoT Edge -A deployment manifest is a JSON document that describes which modules to deploy to the IoT Edge device. For more information about how deployment manifests work and how to create them, see [Understand how IoT Edge modules can be used, configured, and reused](../iot-edge/module-composition.md). +A deployment manifest is a JSON document that describes which modules to deploy to the IoT Edge device. For more information about how deployment manifests work and how to create them, see [Understand how IoT Edge modules can be used, configured, and reused](https://docs.microsoft.com/en-us/azure/iot-edge/module-composition?view=iotedge-2020-11#:~:text=The%20IoT%20Edge%20agent%20module,should%20be%20created%20and%20managed.). To deploy the connected registry module using the Azure CLI, save the following deployment manifest locally as a `.json` file. -[!IMPORTANT] In the following deployment manifest, the IP address `10.16.7.4` is the IP address of the device hosting parent connected registry. Make sure you replace this IP address with the one your parent device uses. +[!IMPORTANT] In the following deployment manifest, $upstream will be used as the IP or FQDN of the device hosting parent connected registry. However $upstream is not supported in env variable. The connected registry need read env variable ACR_PARENT_GATEWAY_ENDPOINT to get the parent gateway endpoint. Instead of using $upstream, connected registry supports dynamically resolving the IP or FQDN from another env variable. On the nested IoT, there's env variable $IOTEDGE_PARENTHOSTNAME on lower level that is equal to IP or FQDN of the parent device. We can pass this env variable as the value of ACR_PARENT_GATEWAY_ENDPOINT to avoid hardcode the parent IP or FQDN. ```json { @@ -68,13 +92,13 @@ To deploy the connected registry module using the Azure CLI, save the following "modules": { "connected-registry": { "settings": { - "image": "10.16.7.4/acr/connected-registry:0.2.0", + "image": "$upstream/acr/connected-registry:0.2.0", "createOptions": "{\"HostConfig\":{\"Binds\":[\"/home/azureuser/connected-registry:/var/acr/data\",\"/usr/local/share/ca-certificates:/usr/local/share/ca-certificates\",\"/etc/ssl/certs:/etc/ssl/certs\",\"LogConfig\":{ \"Type\": \"json-file\", \"Config\": {\"max-size\": \"10m\",\"max-file\": \"3\"}}]}}" }, "type": "docker", "env": { "ACR_REGISTRY_CONNECTION_STRING": { - "value": "ConnectedRegistryName=myconnectedmirror;SyncTokenName=myconnectedmirror-sync-token;SyncTokenPassword=s0meCoMPL3xP4$$W0rd001!@#;ParentGatewayEndpoint=10.16.7.4;ParentEndpointProtocol=https" + "value": "ConnectedRegistryName=myconnectedmirror;SyncTokenName=myconnectedmirror-sync-token;SyncTokenPassword=s0meCoMPL3xP4$$W0rd001!@#;ParentGatewayEndpoint=$IOTEDGE_PARENTHOSTNAME;ParentEndpointProtocol=https" } }, "status": "running", @@ -83,7 +107,7 @@ To deploy the connected registry module using the Azure CLI, save the following }, "IoTEdgeApiProxy": { "settings": { - "image": "10.16.7.4/azureiotedge-api-proxy:latest", + "image": "$upstream/azureiotedge-api-proxy:latest", "createOptions": "{\"HostConfig\": {\"PortBindings\": {\"443/tcp\": [{\"HostPort\": \"443\"}]}}}" }, "type": "docker", @@ -112,7 +136,7 @@ To deploy the connected registry module using the Azure CLI, save the following "minDockerVersion": "v1.25", "registryCredentials": { "tsmregistry": { - "address": "10.16.7.4", + "address": "$upstream", "password": "$$$0meCoMPL3xP4$$W0rd001!@#$$", "username": "myconnectedmirror-sync-token" } @@ -124,7 +148,7 @@ To deploy the connected registry module using the Azure CLI, save the following "systemModules": { "edgeAgent": { "settings": { - "image": "10.16.7.4/azureiotedge-agent:1.2", + "image": "$upstream/azureiotedge-agent:1.2", "createOptions": "" }, "type": "docker", @@ -163,13 +187,15 @@ To deploy the connected registry module using the Azure CLI, save the following Use the information from the previous sections to update the relevant JSON values: -- The environment variable `ACR_REGISTRY_CONNECTION_STRING` needs to be updated with the output from the `az acr connected-registry install renew-credentials` command above. You will need to manually add the `ParentGatewayEndpoint` with the IP or host address of the parent registry, `10.16.7.4` in this case. You will also need to select the proper protocol in `ParentEndpointProtocol`. -- For each module in the manifest, you should update the registry endpoint to the IP address or hostname of the parent, `10.16.7.4` in this case. +- The environment variable `ACR_REGISTRY_CONNECTION_STRING` needs to be updated with the output from the `az acr connected-registry install renew-credentials` command above. You will need to manually replace the `ParentGatewayEndpoint` with the $IOTEDGE_PARENTHOSTNAME. You will also need to select the proper protocol in `ParentEndpointProtocol`. +- For each module in the manifest, you should update the registry endpoint to the $upstream. You will use the file path in the next section when you run the command to apply the configuration to your device. ## Deploy the connected registry module on IoT Edge +The following step might be covered during nested iot setup after you run install.sh on top and lower level devices. However, it is also possible the previous deployment doesn't success and you can use the following way to redeploy it. + Use the following command to deploy the connected registry module on the IoT Edge device: ```azurecli @@ -179,7 +205,7 @@ az iot edge set-modules \ --content [file path] ``` -For more details you can refer to the [Deploy Azure IoT Edge modules with Azure CLI](../iot-edge/how-to-deploy-modules-cli.md) article. +For more details you can refer to the [Deploy Azure IoT Edge modules with Azure CLI](https://docs.microsoft.com/en-us/azure/iot-edge/how-to-deploy-modules-cli?view=iotedge-2020-11) article. To check the status of the connected registry, use the following CLI command: From 3396703bbfd93f93d64790cc6b32f79034d53d9b Mon Sep 17 00:00:00 2001 From: Huangli Wu Date: Tue, 8 Jun 2021 12:41:50 -0700 Subject: [PATCH 38/51] add more steps. --- ...-connected-registry-nested-iot-edge-cli.md | 80 ++++++++++++------- 1 file changed, 53 insertions(+), 27 deletions(-) diff --git a/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md b/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md index 819815a..0adf1d4 100644 --- a/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md +++ b/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md @@ -22,32 +22,6 @@ This tutorial also requires that you have the knowledge about set up a connected Also, make sure that you have created the connected registry resource in Azure as described in the [Create connected registry using the CLI][quickstart-connected-registry-cli] quickstart guide. Only `mirror` mode will work for this scenario. -## Set up nested IOT -This tutorial requires a nested Azure IoT Edge device to be set up upfront. You can use the [Deploy your first IoT Edge module to a virtual Linux device](https://docs.microsoft.com/en-us/azure/iot-edge/quickstart-linux?view=iotedge-2020-11) quickstart guide to learn how to deploy a virtual IoT Edge device. To create a nested IoT Edge devices, follow the instructions [Tutorial: Create a hierarchy of IoT Edge devices](https://docs.microsoft.com/en-us/azure/iot-edge/tutorial-nested-iot-edge?view=iotedge-2020-11) to learn how to configure hierarchical IoT edge devices. The connected registry is deployed as a module on the nested IoT Edge device. The tutorial provided the way to create the VM and set up the IoT Edge from the existing template. You can also use the [Tutorial: Install or uninstall Azure IoT Edge for Linux](https://docs.microsoft.com/en-us/azure/iot-edge/how-to-install-iot-edge?view=iotedge-2020-11) to learn how to manually set up the machine if you need deploy from other kind of devices e.g. Pi. - -### Update lower level config.toml -For connected registry, there's one more step when create the nested iot in addition to the tutorial. Since the lower device need pull the iot edge images from top level connected registry. You need pass the credential info in the config file. After you unzip the files and before run ./install.sh to on the lower device, open the config.toml file, add the following section to pass the client token info. Please refer [Quickstart: Deploy a connected registry to an IoT Edge device](quickstart-deploy-connected-registry-iot-edge-cli.md) if you are not familar how to create a client token. And you also make sure the client token need the permissions to pull all the required images. - -```json -[agent.config.auth] -serveraddress = "$upstream:8000" -username = "huangliconnectedregistryeuap15-client-token" -password = "COkPGJ84ZnClqytxmNSKaP=8ocMEESli" -``` - -### Top level and lower level deployment files - -As part of the nested IOT setup, you need prepare the top level and lower level deployment files (deploymentTopLayer.json and deploymentLowerLayer.json). - -The top level deployment file is the same as the one you used to set up a connected registry on a IoT Edge device. Refer [Quickstart: Deploy a connected registry to an IoT Edge device](quickstart-deploy-connected-registry-iot-edge-cli.md). - -For the lower level deployment file, please refer the following section 'Configure a deployment manifest for the nested IoT Edge' about the difference to the top level deployment file. Overall, the lowever level deployment file is similar as the top level deployment file. The differences are - -1. It need pull all the images required from top level connected registry instead of from cloud registry or MCR. -2. It need configure the parent gateway endpoint with the top level connected registry IP or FQDN instead of cloud registry. - -For #1, when you set up the top level connected registry, you need make sure it will sync up all the IoT agent, hub and connected registry images locally (azureiotedge-agent, azureiotedge-hub, connected-registry). The lower level IoT device need pull these images from the top level connected registry. - ## Retrieve connected registry configuration information Before deploying the connected registry to the nested IoT Edge device, you will need to retrieve the configuration from the connected registry resource in Azure. Use the [az acr connected-registry install][az-acr-connected-registry-install] command to retrieve the configuration. @@ -192,7 +166,59 @@ Use the information from the previous sections to update the relevant JSON value You will use the file path in the next section when you run the command to apply the configuration to your device. -## Deploy the connected registry module on IoT Edge +## Setup and deploy the connected registry module on nested IoT Edge +This tutorial requires a nested Azure IoT Edge device to be set up upfront. You can use the [Deploy your first IoT Edge module to a virtual Linux device](https://docs.microsoft.com/en-us/azure/iot-edge/quickstart-linux?view=iotedge-2020-11) quickstart guide to learn how to deploy a virtual IoT Edge device. To create a nested IoT Edge devices, follow the instructions [Tutorial: Create a hierarchy of IoT Edge devices](https://docs.microsoft.com/en-us/azure/iot-edge/tutorial-nested-iot-edge?view=iotedge-2020-11) to learn how to configure hierarchical IoT edge devices. The connected registry is deployed as a module on the nested IoT Edge device. + +Based on the tutorial, it overall includes the following steps: +1. Create top level and lower level vms from existing template. The template will also install the iot agent on it. You can use the [Tutorial: Install or uninstall Azure IoT Edge for Linux](https://docs.microsoft.com/en-us/azure/iot-edge/how-to-install-iot-edge?view=iotedge-2020-11) to learn how to manually set up the machine if you need deploy from your own devices. + +2. Use the iotedge-config tool to create and configure your hierarchy, follow the steps below in the Azure CLI: + +mkdir nestedIotEdgeTutorial +cd ~/nestedIotEdgeTutorial +wget -O iotedge_config.tar "https://github.com/Azure-Samples/iotedge_config_cli/releases/download/latest/iotedge_config_cli.tar.gz" +tar -xvf iotedge_config.tar + +This will create the iotedge_config_cli_release folder in your tutorial directory. The template file used to create your device hierarchy is the iotedge_config.yaml file found in ~/nestedIotEdgeTutorial/iotedge_config_cli_release/templates/tutorial. In the same directory, there're two deployment manifests for top and lower level deploymentTopLayer.json and deploymentLowerLayer.json files. Refer the #4 below on how to prepare them. + +3. Edit iotedge_config.yaml with your information. This include the iothub_hostname, iot_name, deployment template file for both top layer and child. + +4. Prepare the top level and lower level deployment files (deploymentTopLayer.json and deploymentLowerLayer.json). + +The top level deployment file is the same as the one you used to set up a connected registry on a IoT Edge device. Refer [Quickstart: Deploy a connected registry to an IoT Edge device](quickstart-deploy-connected-registry-iot-edge-cli.md). + +For the lower level deployment file, please refer the following section 'Configure a deployment manifest for the nested IoT Edge' about the difference to the top level deployment file. Overall, the lowever level deployment file is similar as the top level deployment file. The differences are + +a. It need pull all the images required from top level connected registry instead of from cloud registry or MCR. +b. It need configure the parent gateway endpoint with the top level connected registry IP or FQDN instead of cloud registry. + +For a, when you set up the top level connected registry, you need make sure it will sync up all the IoT agent, hub and connected registry images locally (azureiotedge-agent, azureiotedge-hub, connected-registry). The lower level IoT device need pull these images from the top level connected registry. + +5. Install in the top and lower level devices +cd ~/nestedIotEdgeTutorial/iotedge_config_cli_release +./iotedge_config --config ~/nestedIotEdgeTutorial/iotedge_config_cli_release/templates/tutorial/iotedge_config.yaml --output ~/nestedIotEdgeTutorial/iotedge_config_cli_release/outputs -f + +Copy the top-layer.zip and lower-layer.zip to the corresponding top and lower vms using scp + +scp @:~ + +Go each device, unzip the configuration bundle. You'll need to install zip first. +sudo apt install zip +unzip ~//.zip (unzip top-layer.zip) + +For lower level device, update config.toml. The lower device need pull the IoT edge images from top level connected registry and you need provide the token info in the config file. After you unzip the installation files and before run ./install.sh on the lower device, open the config.toml file, and add the following section to pass the client token info. Please refer [Quickstart: Deploy a connected registry to an IoT Edge device](quickstart-deploy-connected-registry-iot-edge-cli.md) if you are not familar how to create a client token. And you also make sure the client token get the permissions to pull all the required images. + +```json +[agent.config.auth] +serveraddress = "$upstream:8000" +username = "huangliconnectedregistryeuap15-client-token" +password = "COkPGJ84ZnClqytxmNSKaP=8ocMEESli" +``` + +Run ./install.sh, input the ip and host name and parent hostname. +All done for upper and lower layer deployment. Double check if all modules are running well on both devices. If there're any problem or any mistake during the deployment. Refer the next session on how to make a deployment manually on top or lower device. + +## Manully Deploy the connected registry module on IoT Edge The following step might be covered during nested iot setup after you run install.sh on top and lower level devices. However, it is also possible the previous deployment doesn't success and you can use the following way to redeploy it. From f6999f74134d7d39b169cbd5f81282de5eb7084d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Jun 2021 12:45:40 -0700 Subject: [PATCH 39/51] Bump httpclient from 4.5.3 to 4.5.13 in /samples/java/task (#550) Bumps httpclient from 4.5.3 to 4.5.13. --- updated-dependencies: - dependency-name: org.apache.httpcomponents:httpclient dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- samples/java/task/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/java/task/pom.xml b/samples/java/task/pom.xml index d842ea2..d7d10a6 100644 --- a/samples/java/task/pom.xml +++ b/samples/java/task/pom.xml @@ -74,7 +74,7 @@ org.apache.httpcomponents httpclient - 4.5.3 + 4.5.13 From 4cba23fac9424eafca1940e007fa619795c423eb Mon Sep 17 00:00:00 2001 From: Huangli Wu Date: Tue, 8 Jun 2021 12:49:40 -0700 Subject: [PATCH 40/51] more steps. --- ...-connected-registry-nested-iot-edge-cli.md | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md b/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md index 0adf1d4..61260d8 100644 --- a/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md +++ b/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md @@ -187,22 +187,24 @@ This will create the iotedge_config_cli_release folder in your tutorial director The top level deployment file is the same as the one you used to set up a connected registry on a IoT Edge device. Refer [Quickstart: Deploy a connected registry to an IoT Edge device](quickstart-deploy-connected-registry-iot-edge-cli.md). -For the lower level deployment file, please refer the following section 'Configure a deployment manifest for the nested IoT Edge' about the difference to the top level deployment file. Overall, the lowever level deployment file is similar as the top level deployment file. The differences are +For the lower level deployment file, please refer the above section 'Configure a deployment manifest for the nested IoT Edge' about the difference to the top level deployment file. Overall, the lowever level deployment file is similar as the top level deployment file. The differences are: -a. It need pull all the images required from top level connected registry instead of from cloud registry or MCR. -b. It need configure the parent gateway endpoint with the top level connected registry IP or FQDN instead of cloud registry. +- It need pull all the images required from top level connected registry instead of from cloud registry or MCR. +When you set up the top level connected registry, you need make sure it will sync up all the IoT agent, hub and connected registry images locally (azureiotedge-agent, azureiotedge-hub, connected-registry). The lower level IoT device need pull these images from the top level connected registry. +- It need configure the parent gateway endpoint with the top level connected registry IP or FQDN instead of cloud registry. -For a, when you set up the top level connected registry, you need make sure it will sync up all the IoT agent, hub and connected registry images locally (azureiotedge-agent, azureiotedge-hub, connected-registry). The lower level IoT device need pull these images from the top level connected registry. - -5. Install in the top and lower level devices +5. Install in the top and lower level devices. +Navigate to your iotedge_config_cli_releae directory and run the tool to create your hierarchy of IoT Edge devices. cd ~/nestedIotEdgeTutorial/iotedge_config_cli_release ./iotedge_config --config ~/nestedIotEdgeTutorial/iotedge_config_cli_release/templates/tutorial/iotedge_config.yaml --output ~/nestedIotEdgeTutorial/iotedge_config_cli_release/outputs -f -Copy the top-layer.zip and lower-layer.zip to the corresponding top and lower vms using scp +With the --output flag, the toos creates the device certificates, certificate bundles, and a log file in a directory of your choice. With the -f flag set, the tool will automatically look for existing IoT Edge devices in your IoT Hub and remove them, to avoid errors and keep your hub clean. + +Copy the generated top-layer.zip and lower-layer.zip in above steps to the corresponding top and lower vms using scp scp @:~ -Go each device, unzip the configuration bundle. You'll need to install zip first. +Go to each device, unzip the configuration bundle. You'll need to install zip first. sudo apt install zip unzip ~//.zip (unzip top-layer.zip) @@ -216,7 +218,7 @@ password = "COkPGJ84ZnClqytxmNSKaP=8ocMEESli" ``` Run ./install.sh, input the ip and host name and parent hostname. -All done for upper and lower layer deployment. Double check if all modules are running well on both devices. If there're any problem or any mistake during the deployment. Refer the next session on how to make a deployment manually on top or lower device. +All are done for upper and lower layer deployment. Double check if all modules are running well on both devices. If there're any problems e.g. invalid deployment manifest during the deployment. Refer the next session on how to make a deployment manually on top or lower device. ## Manully Deploy the connected registry module on IoT Edge From fc3caf9e598dd2401ffdcab5c64573a989e75e3d Mon Sep 17 00:00:00 2001 From: Huangli Wu Date: Tue, 8 Jun 2021 13:11:24 -0700 Subject: [PATCH 41/51] format udpate. --- ...-connected-registry-nested-iot-edge-cli.md | 68 +++++++++++-------- 1 file changed, 38 insertions(+), 30 deletions(-) diff --git a/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md b/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md index 61260d8..057dadb 100644 --- a/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md +++ b/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md @@ -134,7 +134,7 @@ To deploy the connected registry module using the Azure CLI, save the following }, "edgeHub": { "settings": { - "image": "10.16.7.4/azureiotedge-hub:1.2", + "image": "$upstream/azureiotedge-hub:1.2", "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"443/tcp\":[{\"HostPort\":\"443\"}],\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}]}}}" }, "type": "docker", @@ -174,51 +174,59 @@ Based on the tutorial, it overall includes the following steps: 2. Use the iotedge-config tool to create and configure your hierarchy, follow the steps below in the Azure CLI: -mkdir nestedIotEdgeTutorial -cd ~/nestedIotEdgeTutorial -wget -O iotedge_config.tar "https://github.com/Azure-Samples/iotedge_config_cli/releases/download/latest/iotedge_config_cli.tar.gz" -tar -xvf iotedge_config.tar + ```json + mkdir nestedIotEdgeTutorial + cd ~/nestedIotEdgeTutorial + wget -O iotedge_config.tar "https://github.com/Azure-Samples/iotedge_config_cli/releases/download/latest/iotedge_config_cli.tar.gz" + tar -xvf iotedge_config.tar + ``` -This will create the iotedge_config_cli_release folder in your tutorial directory. The template file used to create your device hierarchy is the iotedge_config.yaml file found in ~/nestedIotEdgeTutorial/iotedge_config_cli_release/templates/tutorial. In the same directory, there're two deployment manifests for top and lower level deploymentTopLayer.json and deploymentLowerLayer.json files. Refer the #4 below on how to prepare them. + This will create the iotedge_config_cli_release folder in your tutorial directory. The template file used to create your device hierarchy is the iotedge_config.yaml file found in ~/nestedIotEdgeTutorial/iotedge_config_cli_release/templates/tutorial. In the same directory, there're two deployment manifests for top and lower level deploymentTopLayer.json and deploymentLowerLayer.json files. Refer the #4 below on how to prepare them. 3. Edit iotedge_config.yaml with your information. This include the iothub_hostname, iot_name, deployment template file for both top layer and child. 4. Prepare the top level and lower level deployment files (deploymentTopLayer.json and deploymentLowerLayer.json). -The top level deployment file is the same as the one you used to set up a connected registry on a IoT Edge device. Refer [Quickstart: Deploy a connected registry to an IoT Edge device](quickstart-deploy-connected-registry-iot-edge-cli.md). + The top level deployment file is the same as the one you used to set up a connected registry on a IoT Edge device. Refer [Quickstart: Deploy a connected registry to an IoT Edge device](quickstart-deploy-connected-registry-iot-edge-cli.md). -For the lower level deployment file, please refer the above section 'Configure a deployment manifest for the nested IoT Edge' about the difference to the top level deployment file. Overall, the lowever level deployment file is similar as the top level deployment file. The differences are: + For the lower level deployment file, please refer the above section 'Configure a deployment manifest for the nested IoT Edge' about the difference to the top level deployment file. Overall, the lowever level deployment file is similar as the top level deployment file. The differences are: -- It need pull all the images required from top level connected registry instead of from cloud registry or MCR. -When you set up the top level connected registry, you need make sure it will sync up all the IoT agent, hub and connected registry images locally (azureiotedge-agent, azureiotedge-hub, connected-registry). The lower level IoT device need pull these images from the top level connected registry. -- It need configure the parent gateway endpoint with the top level connected registry IP or FQDN instead of cloud registry. + - It need pull all the images required from top level connected registry instead of from cloud registry or MCR. + When you set up the top level connected registry, you need make sure it will sync up all the IoT agent, hub and connected registry images locally (azureiotedge-agent, azureiotedge-hub, connected-registry). The lower level IoT device need pull these images from the top level connected registry. + - It need configure the parent gateway endpoint with the top level connected registry IP or FQDN instead of cloud registry. 5. Install in the top and lower level devices. -Navigate to your iotedge_config_cli_releae directory and run the tool to create your hierarchy of IoT Edge devices. -cd ~/nestedIotEdgeTutorial/iotedge_config_cli_release -./iotedge_config --config ~/nestedIotEdgeTutorial/iotedge_config_cli_release/templates/tutorial/iotedge_config.yaml --output ~/nestedIotEdgeTutorial/iotedge_config_cli_release/outputs -f + Navigate to your iotedge_config_cli_releae directory and run the tool to create your hierarchy of IoT Edge devices. + ```json + cd ~/nestedIotEdgeTutorial/iotedge_config_cli_release + ./iotedge_config --config ~/nestedIotEdgeTutorial/iotedge_config_cli_release/templates/tutorial/iotedge_config.yaml --output ~/nestedIotEdgeTutorial/iotedge_config_cli_release/outputs -f + ``` -With the --output flag, the toos creates the device certificates, certificate bundles, and a log file in a directory of your choice. With the -f flag set, the tool will automatically look for existing IoT Edge devices in your IoT Hub and remove them, to avoid errors and keep your hub clean. + With the --output flag, the toos creates the device certificates, certificate bundles, and a log file in a directory of your choice. With the -f flag set, the tool will automatically look for existing IoT Edge devices in your IoT Hub and remove them, to avoid errors and keep your hub clean. -Copy the generated top-layer.zip and lower-layer.zip in above steps to the corresponding top and lower vms using scp + Copy the generated top-layer.zip and lower-layer.zip in above steps to the corresponding top and lower vms using scp -scp @:~ + ```json + scp @:~ + ``` -Go to each device, unzip the configuration bundle. You'll need to install zip first. -sudo apt install zip -unzip ~//.zip (unzip top-layer.zip) + Go to each device, unzip the configuration bundle. You'll need to install zip first. + ```json + sudo apt install zip + unzip ~//.zip (unzip top-layer.zip) + ··· + + For lower level device, update config.toml. The lower device need pull the IoT edge images from top level connected registry and you need provide the token info in the config file. After you unzip the installation files and before run ./install.sh on the lower device, open the config.toml file, and add the following section to pass the client token info. Please refer [Quickstart: Deploy a connected registry to an IoT Edge device](quickstart-deploy-connected-registry-iot-edge-cli.md) if you are not familar how to create a client token. And you also make sure the client token get the permissions to pull all the required images. -For lower level device, update config.toml. The lower device need pull the IoT edge images from top level connected registry and you need provide the token info in the config file. After you unzip the installation files and before run ./install.sh on the lower device, open the config.toml file, and add the following section to pass the client token info. Please refer [Quickstart: Deploy a connected registry to an IoT Edge device](quickstart-deploy-connected-registry-iot-edge-cli.md) if you are not familar how to create a client token. And you also make sure the client token get the permissions to pull all the required images. + ```json + [agent.config.auth] + serveraddress = "$upstream:8000" + username = "huangliconnectedregistryeuap15-client-token" + password = "COkPGJ84ZnClqytxmNSKaP=8ocMEESli" + ``` -```json -[agent.config.auth] -serveraddress = "$upstream:8000" -username = "huangliconnectedregistryeuap15-client-token" -password = "COkPGJ84ZnClqytxmNSKaP=8ocMEESli" -``` - -Run ./install.sh, input the ip and host name and parent hostname. -All are done for upper and lower layer deployment. Double check if all modules are running well on both devices. If there're any problems e.g. invalid deployment manifest during the deployment. Refer the next session on how to make a deployment manually on top or lower device. + Run ./install.sh, input the ip and host name and parent hostname. + All are done for upper and lower layer deployment. Double check if all modules are running well on both devices. If there're any problems e.g. invalid deployment manifest during the deployment. Refer the next session on how to make a deployment manually on top or lower device. ## Manully Deploy the connected registry module on IoT Edge From 0f0b6fabb9e901ac0df03320dd7ef812ad786934 Mon Sep 17 00:00:00 2001 From: Huangli Wu Date: Tue, 8 Jun 2021 13:13:45 -0700 Subject: [PATCH 42/51] update format. --- ...ckstart-deploy-connected-registry-nested-iot-edge-cli.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md b/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md index 057dadb..150abeb 100644 --- a/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md +++ b/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md @@ -204,7 +204,7 @@ Based on the tutorial, it overall includes the following steps: With the --output flag, the toos creates the device certificates, certificate bundles, and a log file in a directory of your choice. With the -f flag set, the tool will automatically look for existing IoT Edge devices in your IoT Hub and remove them, to avoid errors and keep your hub clean. - Copy the generated top-layer.zip and lower-layer.zip in above steps to the corresponding top and lower vms using scp + Copy the generated top-layer.zip and lower-layer.zip in above steps to the corresponding top and lower vms using scp。 ```json scp @:~ @@ -214,8 +214,8 @@ Based on the tutorial, it overall includes the following steps: ```json sudo apt install zip unzip ~//.zip (unzip top-layer.zip) - ··· - + ``` + For lower level device, update config.toml. The lower device need pull the IoT edge images from top level connected registry and you need provide the token info in the config file. After you unzip the installation files and before run ./install.sh on the lower device, open the config.toml file, and add the following section to pass the client token info. Please refer [Quickstart: Deploy a connected registry to an IoT Edge device](quickstart-deploy-connected-registry-iot-edge-cli.md) if you are not familar how to create a client token. And you also make sure the client token get the permissions to pull all the required images. ```json From 1580d476a45430508ae1321220fae200e37a07d3 Mon Sep 17 00:00:00 2001 From: Huangli Wu Date: Wed, 9 Jun 2021 12:22:30 -0700 Subject: [PATCH 43/51] udpate api proxy and add iotedge api proxy images import. --- ...-deploy-connected-registry-iot-edge-cli.md | 163 ++++-------------- 1 file changed, 34 insertions(+), 129 deletions(-) diff --git a/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md b/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md index d3832bc..1be537e 100644 --- a/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md +++ b/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md @@ -55,16 +55,20 @@ az acr import \ To learn more about nested IoT Edge scenarios, please visit [Tutorial: Create a hierarchy of IoT Edge devices](https://github.com/MicrosoftDocs/azure-docs/blob/master/articles/iot-edge/tutorial-nested-iot-edge.md). +## Import the IotEdge and API Proxy images into your registry + +Import the images azureiotedge-api-proxy, azureiotedge-agent, azureiotedge-hub from mcr into your private registry using the same command as above. For security purpose, for top level device, you can pull those images from MCR but it is recommended to import those images into your private registry so your deployment can pull the images from your own repo. + ## Create a client token for access to the cloud registry -The IoT Edge runtime will need to authenticate with the cloud registry to pull the connected registry image and deploy it. First, use the following command to create a scope map for the connected registry image repository: +The IoT Edge runtime will need to authenticate with the cloud registry to pull the images and deploy it. First, use the following command to create a scope map for the iotedge, api proxy and connected registry image repository: ```azurecli az acr scope-map create \ --description "Connected registry repo pull scope map." \ --name conected-registry-pull \ --registry mycontainerregistry001 \ - --repository "acr/connected-registry" content/read + --repository "acr/connected-registry" "azureiotedge-api-proxy" "azureiotedge-agent" "azureiotedge-hub" content/read ``` Next, use the following command to create a client token for the IoT Edge device and associate it to the scope map: @@ -142,7 +146,7 @@ You will need the information for the IoT Edge manifest below. A deployment manifest is a JSON document that describes which modules to deploy to the IoT Edge device. For more information about how deployment manifests work and how to create them, see [Understand how IoT Edge modules can be used, configured, and reused](https://github.com/MicrosoftDocs/azure-docs/blob/master/articles/iot-edge/module-composition.md). -To deploy the connected registry module using the Azure CLI, save the following deployment manifest locally as a `.json` file. +To deploy the connected registry and api proxy module using the Azure CLI, save the following deployment manifest locally as a `.json` file. ```json { @@ -164,6 +168,27 @@ To deploy the connected registry module using the Azure CLI, save the following "status": "running", "restartPolicy": "always", "version": "1.0" + }, + "IoTEdgeAPIProxy": { + "settings": { + "image": "mycontainerregistry001.azurecr.io/azureiotedge-api-proxy:1.0", + "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"8000/tcp\":[{\"HostPort\":\"8000\"}]}}}" + }, + "type": "docker", + "env": { + "NGINX_DEFAULT_PORT": { + "value": "8000" + }, + "CONNECTED_ACR_ROUTE_ADDRESS": { + "value": "connected-registry:8080" + }, + "BLOB_UPLOAD_ROUTE_ADDRESS": { + "value": "AzureBlobStorageonIoTEdge:11002" + } + }, + "status": "running", + "restartPolicy": "always", + "version": "1.0" } }, "runtime": { @@ -183,7 +208,7 @@ To deploy the connected registry module using the Azure CLI, save the following "systemModules": { "edgeAgent": { "settings": { - "image": "mcr.microsoft.com/azureiotedge-agent:1.2", + "image": "mycontainerregistry001.azurecr.io/azureiotedge-agent:1.2", "createOptions": "" }, "type": "docker", @@ -195,7 +220,7 @@ To deploy the connected registry module using the Azure CLI, save the following }, "edgeHub": { "settings": { - "image": "mcr.microsoft.com/azureiotedge-hub:1.2", + "image": "mycontainerregistry001.azurecr.io/azureiotedge-hub:1.2", "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"443/tcp\":[{\"HostPort\":\"443\"}],\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}]}}}" }, "type": "docker", @@ -227,9 +252,9 @@ Use the information from the previous sections to update the relevant JSON value You will use the file path in the next section when you run the command to apply the configuration to your device. -## Deploy the connected registry module on IoT Edge +## Deploy the connected registry and api proxy modules on IoT Edge -Use the following command to deploy the connected registry module on the IoT Edge device: +Use the following command to deploy the connected registry and api proxy modules on the IoT Edge device: ```azurecli az iot edge set-modules \ @@ -249,129 +274,9 @@ az acr connected-registry show \ --output table ``` -You may need to a wait few minutes until the deployment of the connected registry completes. +You may need to a wait few minutes until the deployment of the connected registry and api proxy complete. -## Deploy the api proxy module on IoT Edge - -Add api proxy module from Azure Marketplace `IoT Edge API Proxy` as described in the [https://docs.microsoft.com/en-us/azure/iot-edge/how-to-configure-api-proxy-module?view=iotedge-2020-11] - -Remove the existing env DOCKER_REQUEST_ROUTE_ADDRESS. - -Add the following two environment variables: - -``` -"CONNECTED_ACR_ROUTE_ADDRESS": { - "value": "connected-registry:8080" -}, -"NGINX_CONFIG_ENV_VAR_LIST": { - "value": "NGINX_DEFAULT_PORT,BLOB_UPLOAD_ROUTE_ADDRESS,CONNECTED_ACR_ROUTE_ADDRESS,IOTEDGE_PARENTHOSTNAME" -} -``` - -Update the proxy config for the connected registry following the steps: -- Click into the api proxy module from the portal. -- Click `Module Identity Twin` -- Add `proxy_config` in the desired propeties as the following. - -``` -"desired": { - "proxy_config": "ZXZlbnRzIHsgfQoKCmh0dHAgewogICAgcHJveHlfYnVmZmVycyAzMiAxNjBrOwogICAgcHJveHlfYnVmZmVyX3NpemUgMTYwazsKICAgIHByb3h5X3JlYWRfdGltZW91dCAzNjAwOwogICAgZXJyb3JfbG9nIC9kZXYvc3Rkb3V0IGluZm87CiAgICBhY2Nlc3NfbG9nIC9kZXYvc3Rkb3V0OwoKICAgIHNlcnZlciB7CiAgICAgICAgbGlzdGVuICR7TkdJTlhfREVGQVVMVF9QT1JUfSBzc2wgZGVmYXVsdF9zZXJ2ZXI7CgogICAgICAgIGNodW5rZWRfdHJhbnNmZXJfZW5jb2Rpbmcgb247CgogICAgICAgIHNzbF9jZXJ0aWZpY2F0ZSAgICAgICAgc2VydmVyLmNydDsKICAgICAgICBzc2xfY2VydGlmaWNhdGVfa2V5ICAgIHByaXZhdGVfa2V5X3NlcnZlci5wZW07CiAgICAgICAgc3NsX2NsaWVudF9jZXJ0aWZpY2F0ZSB0cnVzdGVkQ0EuY3J0OwogICAgICAgICNzc2xfdmVyaWZ5X2RlcHRoIDc7CiAgICAgICAgc3NsX3ZlcmlmeV9jbGllbnQgb3B0aW9uYWxfbm9fY2E7CgogICAgICAgICNpZl90YWcgJHtCTE9CX1VQTE9BRF9ST1VURV9BRERSRVNTfQogICAgICAgIGlmICgkaHR0cF94X21zX3ZlcnNpb24pCiAgICAgICAgewogICAgICAgICAgICByZXdyaXRlIF4oLiopJCAvc3RvcmFnZSQxIGxhc3Q7CiAgICAgICAgfQogICAgICAgICNlbmRpZl90YWcgJHtCTE9CX1VQTE9BRF9ST1VURV9BRERSRVNTfQogICAgICAgICNpZl90YWcgISR7QkxPQl9VUExPQURfUk9VVEVfQUREUkVTU30KICAgICAgICBpZiAoJGh0dHBfeF9tc192ZXJzaW9uKQogICAgICAgIHsKICAgICAgICAgICAgcmV3cml0ZSBeKC4qKSQgL3BhcmVudCQxIGxhc3Q7CiAgICAgICAgfQogICAgICAgICNlbmRpZl90YWcgJHtCTE9CX1VQTE9BRF9ST1VURV9BRERSRVNTfQoKICAgICAgICAjaWZfdGFnICR7QkxPQl9VUExPQURfUk9VVEVfQUREUkVTU30KICAgICAgICBsb2NhdGlvbiB+Xi9zdG9yYWdlLyguKil7CiAgICAgICAgICAgIHJlc29sdmVyIDEyNy4wLjAuMTE7CiAgICAgICAgICAgIHByb3h5X2h0dHBfdmVyc2lvbiAxLjE7CiAgICAgICAgICAgIHByb3h5X3Bhc3MgICAgICAgICAgaHR0cDovLyR7QkxPQl9VUExPQURfUk9VVEVfQUREUkVTU30vJDEkaXNfYXJncyRhcmdzOwogICAgICAgIH0KICAgICAgICAjZW5kaWZfdGFnICR7QkxPQl9VUExPQURfUk9VVEVfQUREUkVTU30KCiAgICAgICAgI2lmX3RhZyAke0NPTk5FQ1RFRF9BQ1JfUk9VVEVfQUREUkVTU30KICAgICAgICBsb2NhdGlvbiAvdjIgewogICAgICAgICAgICBjbGllbnRfbWF4X2JvZHlfc2l6ZSAxMDAwRzsKICAgICAgICAgICAgcmVzb2x2ZXIgMTI3LjAuMC4xMTsKICAgICAgICAgICAgcHJveHlfaHR0cF92ZXJzaW9uIDEuMTsKICAgICAgICAgICAgcHJveHlfcGFzcyAgICAgICAgIGh0dHA6Ly8ke0NPTk5FQ1RFRF9BQ1JfUk9VVEVfQUREUkVTU307CiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgICBYLUZvcndhcmRlZC1Ib3N0ICRodHRwX2hvc3Q7CiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgICBYLUZvcndhcmRlZC1Qcm90byAkc2NoZW1lOwogICAgICAgIH0KCiAgICAgICAgbG9jYXRpb24gL2FjciB7CiAgICAgICAgICAgIGNsaWVudF9tYXhfYm9keV9zaXplIDEwTTsKICAgICAgICAgICAgcmVzb2x2ZXIgMTI3LjAuMC4xMTsKICAgICAgICAgICAgcHJveHlfaHR0cF92ZXJzaW9uIDEuMTsKICAgICAgICAgICAgcHJveHlfcGFzcyAgICAgICAgIGh0dHA6Ly8ke0NPTk5FQ1RFRF9BQ1JfUk9VVEVfQUREUkVTU307CiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgICBYLUZvcndhcmRlZC1Ib3N0ICRodHRwX2hvc3Q7CiAgICAgICAgICAgIHByb3h5X3NldF9oZWFkZXIgICBYLUZvcndhcmRlZC1Qcm90byAkc2NoZW1lOwogICAgICAgIH0KICAgICAgICAjZW5kaWZfdGFnICR7Q09OTkVDVEVEX0FDUl9ST1VURV9BRERSRVNTfQoKICAgICAgICAjaWZfdGFnICR7SU9URURHRV9QQVJFTlRIT1NUTkFNRX0KICAgICAgICBsb2NhdGlvbiB+Xi9wYXJlbnQvKC4qKSB7CiAgICAgICAgICAgIHByb3h5X2h0dHBfdmVyc2lvbiAxLjE7CiAgICAgICAgICAgIHJlc29sdmVyIDEyNy4wLjAuMTE7CiAgICAgICAgICAgICNwcm94eV9zc2xfY2VydGlmaWNhdGUgICAgIGlkZW50aXR5LmNydDsKICAgICAgICAgICAgI3Byb3h5X3NzbF9jZXJ0aWZpY2F0ZV9rZXkgcHJpdmF0ZV9rZXlfaWRlbnRpdHkucGVtOwogICAgICAgICAgICBwcm94eV9zc2xfdHJ1c3RlZF9jZXJ0aWZpY2F0ZSB0cnVzdGVkQ0EuY3J0OwogICAgICAgICAgICBwcm94eV9zc2xfdmVyaWZ5X2RlcHRoIDc7CiAgICAgICAgICAgIHByb3h5X3NzbF92ZXJpZnkgICAgICAgb247CiAgICAgICAgICAgIHByb3h5X3Bhc3MgICAgICAgICAgaHR0cHM6Ly8ke0lPVEVER0VfUEFSRU5USE9TVE5BTUV9OiR7TkdJTlhfREVGQVVMVF9QT1JUfS8kMSRpc19hcmdzJGFyZ3M7CiAgICAgICAgfQogICAgICAgICNlbmRpZl90YWcgJHtJT1RFREdFX1BBUkVOVEhPU1ROQU1FfQoKICAgICAgICBsb2NhdGlvbiB+Xi9kZXZpY2VzfHR3aW5zLyB7CiAgICAgICAgICAgIHByb3h5X2h0dHBfdmVyc2lvbiAgMS4xOwogICAgICAgICAgICBwcm94eV9zc2xfdmVyaWZ5ICAgIG9mZjsKICAgICAgICAgICAgcHJveHlfc2V0X2hlYWRlciAgICB4LW1zLWVkZ2UtY2xpZW50Y2VydCAgICAkc3NsX2NsaWVudF9lc2NhcGVkX2NlcnQ7CiAgICAgICAgICAgIHByb3h5X3Bhc3MgICAgICAgICAgaHR0cHM6Ly9lZGdlSHViOwogICAgICAgIH0KICAgIH0KfQ==", - - "$metadata": {...} -``` -The value of the proxy_config is the base64 encoded string of the following nginx config. - -``` nginx -events { } - - -http { - proxy_buffers 32 160k; - proxy_buffer_size 160k; - proxy_read_timeout 3600; - error_log /dev/stdout info; - access_log /dev/stdout; - - server { - listen ${NGINX_DEFAULT_PORT} ssl default_server; - - chunked_transfer_encoding on; - - ssl_certificate server.crt; - ssl_certificate_key private_key_server.pem; - ssl_client_certificate trustedCA.crt; - #ssl_verify_depth 7; - ssl_verify_client optional_no_ca; - - #if_tag ${BLOB_UPLOAD_ROUTE_ADDRESS} - if ($http_x_ms_version) - { - rewrite ^(.*)$ /storage$1 last; - } - #endif_tag ${BLOB_UPLOAD_ROUTE_ADDRESS} - #if_tag !${BLOB_UPLOAD_ROUTE_ADDRESS} - if ($http_x_ms_version) - { - rewrite ^(.*)$ /parent$1 last; - } - #endif_tag ${BLOB_UPLOAD_ROUTE_ADDRESS} - - #if_tag ${BLOB_UPLOAD_ROUTE_ADDRESS} - location ~^/storage/(.*){ - resolver 127.0.0.11; - proxy_http_version 1.1; - proxy_pass http://${BLOB_UPLOAD_ROUTE_ADDRESS}/$1$is_args$args; - } - #endif_tag ${BLOB_UPLOAD_ROUTE_ADDRESS} - - #if_tag ${CONNECTED_ACR_ROUTE_ADDRESS} - location /v2 { - client_max_body_size 1000G; - resolver 127.0.0.11; - proxy_http_version 1.1; - proxy_pass http://${CONNECTED_ACR_ROUTE_ADDRESS}; - proxy_set_header X-Forwarded-Host $http_host; - proxy_set_header X-Forwarded-Proto $scheme; - } - - location /acr { - client_max_body_size 10M; - resolver 127.0.0.11; - proxy_http_version 1.1; - proxy_pass http://${CONNECTED_ACR_ROUTE_ADDRESS}; - proxy_set_header X-Forwarded-Host $http_host; - proxy_set_header X-Forwarded-Proto $scheme; - } - #endif_tag ${CONNECTED_ACR_ROUTE_ADDRESS} - - #if_tag ${IOTEDGE_PARENTHOSTNAME} - location ~^/parent/(.*) { - proxy_http_version 1.1; - resolver 127.0.0.11; - #proxy_ssl_certificate identity.crt; - #proxy_ssl_certificate_key private_key_identity.pem; - proxy_ssl_trusted_certificate trustedCA.crt; - proxy_ssl_verify_depth 7; - proxy_ssl_verify on; - proxy_pass https://${IOTEDGE_PARENTHOSTNAME}:${NGINX_DEFAULT_PORT}/$1$is_args$args; - } - #endif_tag ${IOTEDGE_PARENTHOSTNAME} - - location ~^/devices|twins/ { - proxy_http_version 1.1; - proxy_ssl_verify off; - proxy_set_header x-ms-edge-clientcert $ssl_client_escaped_cert; - proxy_pass https://edgeHub; - } - } -} -``` - -- Click 'Save' - -Make sure you open the the ports `8000`, `5671`, `8883`. - -The api proxy will now listen on port 8000 configued as `NGINX_DEFAULT_PORT`. +Make sure you open the the ports `8000`, `5671`, `8883`. The api proxy will listen on port 8000 configued as `NGINX_DEFAULT_PORT`. You can find more information about API Proxy in the [https://github.com/Azure/iotedge/tree/master/edge-modules/api-proxy-module] From 3187088ffd30e12182d4499f8a33544184352c04 Mon Sep 17 00:00:00 2001 From: Huangli Wu Date: Wed, 9 Jun 2021 19:24:37 -0700 Subject: [PATCH 44/51] Update. --- ...-deploy-connected-registry-iot-edge-cli.md | 4 ++-- ...-connected-registry-nested-iot-edge-cli.md | 24 +++++++++++++++---- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md b/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md index 1be537e..9b6a061 100644 --- a/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md +++ b/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md @@ -50,7 +50,7 @@ To support nested IoT Edge scenarios, the container image for the connected regi ```azurecli az acr import \ --name mycontainerregistry001 \ - --source mcr.microsoft.com/acr/connected-registry:0.2.0 + --source mcr.microsoft.com/acr/connected-registry:0.3.0 ``` To learn more about nested IoT Edge scenarios, please visit [Tutorial: Create a hierarchy of IoT Edge devices](https://github.com/MicrosoftDocs/azure-docs/blob/master/articles/iot-edge/tutorial-nested-iot-edge.md). @@ -156,7 +156,7 @@ To deploy the connected registry and api proxy module using the Azure CLI, save "modules": { "connected-registry": { "settings": { - "image": "mycontainerregistry001.azurecr.io/acr/connected-registry:0.2.0", + "image": "mycontainerregistry001.azurecr.io/acr/connected-registry:0.3.0", "createOptions": "{\"HostConfig\":{\"Binds\":[\"/home/azureuser/connected-registry:/var/acr/data\"],\"PortBindings\":{\"8080/tcp\":[{\"HostPort\":\"8080\"}]}}}" }, "type": "docker", diff --git a/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md b/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md index 150abeb..0a71446 100644 --- a/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md +++ b/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md @@ -66,7 +66,7 @@ To deploy the connected registry module using the Azure CLI, save the following "modules": { "connected-registry": { "settings": { - "image": "$upstream/acr/connected-registry:0.2.0", + "image": "$upstream/acr/connected-registry:0.3.0", "createOptions": "{\"HostConfig\":{\"Binds\":[\"/home/azureuser/connected-registry:/var/acr/data\",\"/usr/local/share/ca-certificates:/usr/local/share/ca-certificates\",\"/etc/ssl/certs:/etc/ssl/certs\",\"LogConfig\":{ \"Type\": \"json-file\", \"Config\": {\"max-size\": \"10m\",\"max-file\": \"3\"}}]}}" }, "type": "docker", @@ -187,7 +187,7 @@ Based on the tutorial, it overall includes the following steps: 4. Prepare the top level and lower level deployment files (deploymentTopLayer.json and deploymentLowerLayer.json). - The top level deployment file is the same as the one you used to set up a connected registry on a IoT Edge device. Refer [Quickstart: Deploy a connected registry to an IoT Edge device](quickstart-deploy-connected-registry-iot-edge-cli.md). + The top level deployment file is the same as the one you used to set up a connected registry on a IoT Edge device. Refer [Quickstart: Deploy a connected registry to an IoT Edge device](quickstart-deploy-connected-registry-iot-edge-cli.md). Make sure you do have API proxy module deployed on top layer and open the port `8000`, `5671`, `8883`. For the lower level deployment file, please refer the above section 'Configure a deployment manifest for the nested IoT Edge' about the difference to the top level deployment file. Overall, the lowever level deployment file is similar as the top level deployment file. The differences are: @@ -216,7 +216,21 @@ Based on the tutorial, it overall includes the following steps: unzip ~//.zip (unzip top-layer.zip) ``` - For lower level device, update config.toml. The lower device need pull the IoT edge images from top level connected registry and you need provide the token info in the config file. After you unzip the installation files and before run ./install.sh on the lower device, open the config.toml file, and add the following section to pass the client token info. Please refer [Quickstart: Deploy a connected registry to an IoT Edge device](quickstart-deploy-connected-registry-iot-edge-cli.md) if you are not familar how to create a client token. And you also make sure the client token get the permissions to pull all the required images. + Update config.toml in top level device as the following. After you unzip the installation files and before run ./install.sh on the top level device, open the config.toml file, update the image url and add the client token info (this is only required if the url is for a private repo). Please refer [Quickstart: Deploy a connected registry to an IoT Edge device](quickstart-deploy-connected-registry-iot-edge-cli.md) if you are not familar how to create a client token. And you also make sure the client token get the permissions to pull all the required images. + + ```json + [agent.config] + image = "mycontainerregistry001.azurecr.io/azureiotedge-agent:1.2" + + [agent.config.auth] + serveraddress = "mycontainerregistry001.azurecr.io" + username = "huangliconnectedregistryeuap15-client-token" + password = "COkPGJ84ZnClqytxmNSKaP=8ocMEESli" + ``` + + Run ./install.sh, input the ip and host name. All are done for top layer device deployment. Run iotedge list to double check if all modules are running well. + + Update config.toml in lower level device as the following. The lower device need pull the IoT edge images from top level connected registry and it is required to provide the token info in the config file. After you unzip the installation files and before run ./install.sh on the lower device, open the config.toml file, and add the following section to pass the client token info. And you also make sure the client token get the permissions to pull all the required images. ```json [agent.config.auth] @@ -226,7 +240,9 @@ Based on the tutorial, it overall includes the following steps: ``` Run ./install.sh, input the ip and host name and parent hostname. - All are done for upper and lower layer deployment. Double check if all modules are running well on both devices. If there're any problems e.g. invalid deployment manifest during the deployment. Refer the next session on how to make a deployment manually on top or lower device. + All are done for lower layer deployment. Run iotedge list to double check if all modules are running well. + + If there're any problems e.g. invalid deployment manifest. You need manually redeploy the modules. Refer the next session on how to make a deployment manually on top or lower device. ## Manully Deploy the connected registry module on IoT Edge From 2b16937afaf4dbca2aa129bcf651b69cfeded3da Mon Sep 17 00:00:00 2001 From: Esteban Rey Date: Mon, 14 Jun 2021 10:49:17 -0700 Subject: [PATCH 45/51] Added information on how to collect logs from AKS instance's of Teleportd (#554) --- .../teleport/collecting-teleportd-logs-aks.md | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 docs/teleport/collecting-teleportd-logs-aks.md diff --git a/docs/teleport/collecting-teleportd-logs-aks.md b/docs/teleport/collecting-teleportd-logs-aks.md new file mode 100644 index 0000000..2a8d5ea --- /dev/null +++ b/docs/teleport/collecting-teleportd-logs-aks.md @@ -0,0 +1,45 @@ +# Collecting Logs for Teleport on AKS +This guide goes over how to collect logs for the teleportd daemon running in an AKS cluster. The steps in this guide have to be carried out by customers in order to collect log information for debugging purposes. + +## Teleportd logs +We can get teleportd logs from each node independently to verify that a teleport enabled image succesfully teleported. Because Teleportd is run as a daemon in the node, its logs are only available from journald in a node. To get these a user can either connect to their node which ran the specific pod being debugged (using ssh or lens) and run `journalctl -n all -u teleportd`. Alternatively you can collect logs by creating sidecar container on the corresponding nodes like we do. The sidecar mounts the filesystem of the nodepool and uses this to obtain journald logs. These are created using the following configuration: + +```yaml +apiVersion: v1 +kind: Pod +metadata: + name: teleport-logs +spec: + containers: + - name: log-reader + image: busybox + args: [/bin/sh, -c, '/bin/journalctl -n all -u teleportd -f'] + volumeMounts: + - name: rootfs + mountPath: / +# Add if customer needs to specify node +# nodeSelector: +# teleport: "true" + volumes: + - name: rootfs + hostPath: + path: / + type: Directory +``` + +You can run a pod with the above configuration (make sure to edit the nodeSelector field to set the log collection to the specific node that needs its instance of teleportd to be debugged) and then get the logs from it by calling: +`kubectl logs teleport-logs > ./teleport-daemon.log` + + +## Other options +### Kubernetes Events (Aside) +If the affected pod was just ran (events have a short timespan) you can use the following to gather some extra information and even confirm the image teleported: + +For event collection we are looking at two methods: +- Running `kubectl describe pod ` + Teleportd events try to associate with the pod that first pulled a specific image within a node, nonetheless this can fail, in such a scenario events are not associated with a node but are still reported as general events and will still be visible when running kubectl get events. If everything goes rights the output of this command will include the teleport events, otherwise: + +- Running `kubectl get events` + In cases when teleportd fails to associate events with a pod or when multiple pods experienced issues, check all the kubectl get events, they are all sourced from the teleportd client and are marked as such, some will have the image and tag that was teleport or if it failed to teleport. + +Events include overall failure information for teleportd but do not currently give information on individual layer failures. If an image took too long to teleport for example and the events still indicate success there could be individual layer mount failures, refer to the logs in that scenario. From c292b2d69f9798bbc576d18a2e622af9eb78b267 Mon Sep 17 00:00:00 2001 From: Huangli Wu Date: Mon, 14 Jun 2021 13:09:27 -0700 Subject: [PATCH 46/51] Update the steps and add the crediential info in iotedge_config. --- ...-connected-registry-nested-iot-edge-cli.md | 69 ++++++++++++------- 1 file changed, 45 insertions(+), 24 deletions(-) diff --git a/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md b/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md index 0a71446..223fa10 100644 --- a/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md +++ b/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md @@ -8,6 +8,8 @@ author: toddysm ms.custom: --- +[[_TOC_]] + # Quickstart: Deploy a connected registry to a nested IoT Edge device In this quickstart, you use [Azure Container Registry][container-registry-intro] commands to deploy a connected registry to a nested Azure IoT Edge device. You can review the [ACR connected registry introduction](intro-connected-registry.md) for details about the connected registry feature of Azure Container Registry. @@ -183,7 +185,47 @@ Based on the tutorial, it overall includes the following steps: This will create the iotedge_config_cli_release folder in your tutorial directory. The template file used to create your device hierarchy is the iotedge_config.yaml file found in ~/nestedIotEdgeTutorial/iotedge_config_cli_release/templates/tutorial. In the same directory, there're two deployment manifests for top and lower level deploymentTopLayer.json and deploymentLowerLayer.json files. Refer the #4 below on how to prepare them. -3. Edit iotedge_config.yaml with your information. This include the iothub_hostname, iot_name, deployment template file for both top layer and child. +3. Edit iotedge_config.yaml with your information. This include the iothub_hostname, iot_name, deployment template file for both top layer and child as well as the credentials used to pull the image from upstream. Please refer [Quickstart: Deploy a connected registry to an IoT Edge device](quickstart-deploy-connected-registry-iot-edge-cli.md) if you are not familar how to create a client token. And you also make sure the client token get the permissions to pull all the required images. Below is a sample config. + + ```json + config_version: "1.0" + + iothub: + iothub_hostname: myiothub.azure-devices.net + iothub_name: myiothub + ## Authentication method used by IoT Edge devices: symmetric_key or x509_certificate + authentication_method: symmetric_key + + ## Root certificate used to generate device CA certificates. Optional. If not provided a self-signed CA will be generated + # certificates: + # root_ca_cert_path: "" + # root_ca_cert_key_path: "" + + ## IoT Edge configuration template to use + configuration: + template_config_path: "./templates/tutorial/device_config.toml" + default_edge_agent: "$upstream:8000/azureiotedge-agent:1.2" + + ## Hierarchy of IoT Edge devices to create + edgedevices: + device_id: top-layerx + edge_agent: "mycontainerregistry001.azurecr.io/azureiotedge-agent:1.2" ## Optional. If not provided, default_edge_agent will be used + deployment: "./templates/tutorial/deploymentTopLayer.json" ## Optional. If provided, the given deployment file will be applied to the newly created device + # hostname: "FQDN or IP" ## Optional. If provided, install.sh will not prompt user for this value nor the parent_hostname value + container_auth: // The token used to pull the image from cloud registry + serveraddress: "mycontainerregistry001.azurecr.io" + username: "crimagepulltokentop" + password: "HwBU+ZhB+X9AOmeAq6ZG2G/y2QD=8sfT" + child: + - device_id: lower-layerx + deployment: "./templates/tutorial/deploymentLowerLayer.json" ## Optional. If provided, the given deployment file will be applied to the newly created device + # hostname: "FQDN or IP" ## Optional. If provided, install.sh will not prompt user for this value nor the parent_hostname value + container_auth: //The token used to pull the image from parent connected registry + serveraddress: "$upstream:8000" + username: "crimagepulltokenlower" + password: "$$$0meCoMPL3xP4$$W0rd001!@#$$" + ``` + 4. Prepare the top level and lower level deployment files (deploymentTopLayer.json and deploymentLowerLayer.json). @@ -216,30 +258,9 @@ Based on the tutorial, it overall includes the following steps: unzip ~//.zip (unzip top-layer.zip) ``` - Update config.toml in top level device as the following. After you unzip the installation files and before run ./install.sh on the top level device, open the config.toml file, update the image url and add the client token info (this is only required if the url is for a private repo). Please refer [Quickstart: Deploy a connected registry to an IoT Edge device](quickstart-deploy-connected-registry-iot-edge-cli.md) if you are not familar how to create a client token. And you also make sure the client token get the permissions to pull all the required images. + Unzip the installation files and run ./install.sh, input the ip and host name. All are done for top layer device deployment. Run iotedge list to double check if all modules are running well. - ```json - [agent.config] - image = "mycontainerregistry001.azurecr.io/azureiotedge-agent:1.2" - - [agent.config.auth] - serveraddress = "mycontainerregistry001.azurecr.io" - username = "huangliconnectedregistryeuap15-client-token" - password = "COkPGJ84ZnClqytxmNSKaP=8ocMEESli" - ``` - - Run ./install.sh, input the ip and host name. All are done for top layer device deployment. Run iotedge list to double check if all modules are running well. - - Update config.toml in lower level device as the following. The lower device need pull the IoT edge images from top level connected registry and it is required to provide the token info in the config file. After you unzip the installation files and before run ./install.sh on the lower device, open the config.toml file, and add the following section to pass the client token info. And you also make sure the client token get the permissions to pull all the required images. - - ```json - [agent.config.auth] - serveraddress = "$upstream:8000" - username = "huangliconnectedregistryeuap15-client-token" - password = "COkPGJ84ZnClqytxmNSKaP=8ocMEESli" - ``` - - Run ./install.sh, input the ip and host name and parent hostname. + Repeat the same steps in lower level device. Unzip files and run ./install.sh. Input the ip, host name and parent hostname. All are done for lower layer deployment. Run iotedge list to double check if all modules are running well. If there're any problems e.g. invalid deployment manifest. You need manually redeploy the modules. Refer the next session on how to make a deployment manually on top or lower device. From 1aa0909b05ceca9b1b5215013f10ca522cc8b3ad Mon Sep 17 00:00:00 2001 From: Huangli Wu Date: Mon, 14 Jun 2021 13:13:54 -0700 Subject: [PATCH 47/51] Remove TOC --- .../quickstart-deploy-connected-registry-nested-iot-edge-cli.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md b/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md index 223fa10..9f3dee7 100644 --- a/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md +++ b/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md @@ -8,8 +8,6 @@ author: toddysm ms.custom: --- -[[_TOC_]] - # Quickstart: Deploy a connected registry to a nested IoT Edge device In this quickstart, you use [Azure Container Registry][container-registry-intro] commands to deploy a connected registry to a nested Azure IoT Edge device. You can review the [ACR connected registry introduction](intro-connected-registry.md) for details about the connected registry feature of Azure Container Registry. From 2d80b0a787e87cca0453d7fad739e7190b0a575a Mon Sep 17 00:00:00 2001 From: Huangli Wu Date: Fri, 18 Jun 2021 15:54:05 -0700 Subject: [PATCH 48/51] Using private iot and api proxy images. --- ...-deploy-connected-registry-iot-edge-cli.md | 28 +++++++------------ ...-connected-registry-nested-iot-edge-cli.md | 10 +++---- 2 files changed, 15 insertions(+), 23 deletions(-) diff --git a/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md b/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md index 9b6a061..e0d559d 100644 --- a/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md +++ b/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md @@ -27,20 +27,6 @@ In this quickstart, you use [Azure Container Registry][container-registry-intro] This tutorial requires an Azure IoT Edge device to be set up upfront. You can use the [Deploy your first IoT Edge module to a virtual Linux device](https://github.com/MicrosoftDocs/azure-docs/blob/master/articles/iot-edge/quickstart-linux.md) quickstart guide to learn how to deploy a virtual IoT Edge device. The connected registry is deployed as a module on the IoT Edge device. -To install the latest 1.2 version of iotedge agent, login to the IoT device, open `/etc/iotedge/config.yaml`, search the section for `edgeAgent`, update the image version to 1.2.0 as the following. - -``` -agent: - name: "edgeAgent" - type: "docker" - env: {} - config: - image: "mcr.microsoft.com/azureiotedge-agent:1.2" - auth: {} -``` - -Save the config and restart the module using command `sudo systemctl restart iotedge`. - Also, make sure that you have created the connected registry resource in Azure as described in the [Create connected registry using the CLI][quickstart-connected-registry-cli] quickstart guide. Both, `registry` and `mirror` modes will work for this scenario. ## Import the connected registry image to your registry @@ -57,7 +43,13 @@ To learn more about nested IoT Edge scenarios, please visit [Tutorial: Create a ## Import the IotEdge and API Proxy images into your registry -Import the images azureiotedge-api-proxy, azureiotedge-agent, azureiotedge-hub from mcr into your private registry using the same command as above. For security purpose, for top level device, you can pull those images from MCR but it is recommended to import those images into your private registry so your deployment can pull the images from your own repo. +Import the images azureiotedge-api-proxy, azureiotedge-agent, azureiotedge-hub to your private registry using the same command as above. + +You can import those images from MCR. But if you'll create nested connected registry, you need import the images from the following locations. The following images will be referenced in the sample manifest below. + +acronpremiot.azurecr.io/acr/microsoft/azureiotedge-agent:20210609.5 +acronpremiot.azurecr.io/acr/microsoft/azureiotedge-hub:20210609.5 +acronpremiot.azurecr.io/acr/microsoft/azureiotedge-api-proxy:9.9.9-dev ## Create a client token for access to the cloud registry @@ -171,7 +163,7 @@ To deploy the connected registry and api proxy module using the Azure CLI, save }, "IoTEdgeAPIProxy": { "settings": { - "image": "mycontainerregistry001.azurecr.io/azureiotedge-api-proxy:1.0", + "image": "mycontainerregistry001.azurecr.io/acr/microsoft/azureiotedge-api-proxy:9.9.9-dev", "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"8000/tcp\":[{\"HostPort\":\"8000\"}]}}}" }, "type": "docker", @@ -208,7 +200,7 @@ To deploy the connected registry and api proxy module using the Azure CLI, save "systemModules": { "edgeAgent": { "settings": { - "image": "mycontainerregistry001.azurecr.io/azureiotedge-agent:1.2", + "image": "mycontainerregistry001.azurecr.io/acr/microsoft/azureiotedge-agent:20210609.5", "createOptions": "" }, "type": "docker", @@ -220,7 +212,7 @@ To deploy the connected registry and api proxy module using the Azure CLI, save }, "edgeHub": { "settings": { - "image": "mycontainerregistry001.azurecr.io/azureiotedge-hub:1.2", + "image": "mycontainerregistry001.azurecr.io/acr/microsoft/azureiotedge-hub:20210609.5", "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"443/tcp\":[{\"HostPort\":\"443\"}],\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}]}}}" }, "type": "docker", diff --git a/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md b/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md index 9f3dee7..b1b1785 100644 --- a/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md +++ b/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md @@ -81,7 +81,7 @@ To deploy the connected registry module using the Azure CLI, save the following }, "IoTEdgeApiProxy": { "settings": { - "image": "$upstream/azureiotedge-api-proxy:latest", + "image": "$upstream/acr/microsoft/azureiotedge-api-proxy:9.9.9-dev", "createOptions": "{\"HostConfig\": {\"PortBindings\": {\"443/tcp\": [{\"HostPort\": \"443\"}]}}}" }, "type": "docker", @@ -122,7 +122,7 @@ To deploy the connected registry module using the Azure CLI, save the following "systemModules": { "edgeAgent": { "settings": { - "image": "$upstream/azureiotedge-agent:1.2", + "image": "$upstream/acr/microsoft/azureiotedge-agent:20210609.5", "createOptions": "" }, "type": "docker", @@ -134,7 +134,7 @@ To deploy the connected registry module using the Azure CLI, save the following }, "edgeHub": { "settings": { - "image": "$upstream/azureiotedge-hub:1.2", + "image": "$upstream/acr/microsoft/azureiotedge-hub:20210609.5", "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"443/tcp\":[{\"HostPort\":\"443\"}],\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}]}}}" }, "type": "docker", @@ -202,12 +202,12 @@ Based on the tutorial, it overall includes the following steps: ## IoT Edge configuration template to use configuration: template_config_path: "./templates/tutorial/device_config.toml" - default_edge_agent: "$upstream:8000/azureiotedge-agent:1.2" + default_edge_agent: "$upstream:8000/acr/microsoft/azureiotedge-agent:20210609.5" ## Hierarchy of IoT Edge devices to create edgedevices: device_id: top-layerx - edge_agent: "mycontainerregistry001.azurecr.io/azureiotedge-agent:1.2" ## Optional. If not provided, default_edge_agent will be used + edge_agent: "mycontainerregistry001.azurecr.io/acr/microsoft/azureiotedge-agent:20210609.5" ## Optional. If not provided, default_edge_agent will be used deployment: "./templates/tutorial/deploymentTopLayer.json" ## Optional. If provided, the given deployment file will be applied to the newly created device # hostname: "FQDN or IP" ## Optional. If provided, install.sh will not prompt user for this value nor the parent_hostname value container_auth: // The token used to pull the image from cloud registry From 18d7473116cb378c807777177a258748f3bacdc1 Mon Sep 17 00:00:00 2001 From: Huangli Wu Date: Mon, 21 Jun 2021 13:58:35 -0700 Subject: [PATCH 49/51] Address comments --- ...-deploy-connected-registry-iot-edge-cli.md | 25 +++++++++++++------ ...-connected-registry-nested-iot-edge-cli.md | 10 ++++---- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md b/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md index e0d559d..677924b 100644 --- a/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md +++ b/docs/preview/connected-registry/quickstart-deploy-connected-registry-iot-edge-cli.md @@ -43,14 +43,23 @@ To learn more about nested IoT Edge scenarios, please visit [Tutorial: Create a ## Import the IotEdge and API Proxy images into your registry -Import the images azureiotedge-api-proxy, azureiotedge-agent, azureiotedge-hub to your private registry using the same command as above. +To support the connected registry on nested IoT Edge, you need import and set up the IoT and API proxy using the private images from acronpremiot registry. -You can import those images from MCR. But if you'll create nested connected registry, you need import the images from the following locations. The following images will be referenced in the sample manifest below. +Notes: You can import those images from MCR if you don't need create nested connected registry. -acronpremiot.azurecr.io/acr/microsoft/azureiotedge-agent:20210609.5 -acronpremiot.azurecr.io/acr/microsoft/azureiotedge-hub:20210609.5 -acronpremiot.azurecr.io/acr/microsoft/azureiotedge-api-proxy:9.9.9-dev +```azurecli +az acr import \ + --name mycontainerregistry001 \ + --source acronpremiot.azurecr.io/acr/microsoft/azureiotedge-agent:20210609.5 -t azureiotedge-agent:20210609.5 +az acr import \ + --name mycontainerregistry001 \ + --source acronpremiot.azurecr.io/acr/microsoft/azureiotedge-hub:20210609.5 -t azureiotedge-hub:20210609.5 + +az acr import \ + --name mycontainerregistry001 \ + --source acronpremiot.azurecr.io/acr/microsoft/azureiotedge-api-proxy:9.9.9-dev -t azureiotedge-api-proxy:9.9.9-dev +``` ## Create a client token for access to the cloud registry The IoT Edge runtime will need to authenticate with the cloud registry to pull the images and deploy it. First, use the following command to create a scope map for the iotedge, api proxy and connected registry image repository: @@ -163,7 +172,7 @@ To deploy the connected registry and api proxy module using the Azure CLI, save }, "IoTEdgeAPIProxy": { "settings": { - "image": "mycontainerregistry001.azurecr.io/acr/microsoft/azureiotedge-api-proxy:9.9.9-dev", + "image": "mycontainerregistry001.azurecr.io/azureiotedge-api-proxy:9.9.9-dev", "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"8000/tcp\":[{\"HostPort\":\"8000\"}]}}}" }, "type": "docker", @@ -200,7 +209,7 @@ To deploy the connected registry and api proxy module using the Azure CLI, save "systemModules": { "edgeAgent": { "settings": { - "image": "mycontainerregistry001.azurecr.io/acr/microsoft/azureiotedge-agent:20210609.5", + "image": "mycontainerregistry001.azurecr.io/azureiotedge-agent:20210609.5", "createOptions": "" }, "type": "docker", @@ -212,7 +221,7 @@ To deploy the connected registry and api proxy module using the Azure CLI, save }, "edgeHub": { "settings": { - "image": "mycontainerregistry001.azurecr.io/acr/microsoft/azureiotedge-hub:20210609.5", + "image": "mycontainerregistry001.azurecr.io/azureiotedge-hub:20210609.5", "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"443/tcp\":[{\"HostPort\":\"443\"}],\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}]}}}" }, "type": "docker", diff --git a/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md b/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md index b1b1785..f6b5482 100644 --- a/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md +++ b/docs/preview/connected-registry/quickstart-deploy-connected-registry-nested-iot-edge-cli.md @@ -81,7 +81,7 @@ To deploy the connected registry module using the Azure CLI, save the following }, "IoTEdgeApiProxy": { "settings": { - "image": "$upstream/acr/microsoft/azureiotedge-api-proxy:9.9.9-dev", + "image": "$upstream/azureiotedge-api-proxy:9.9.9-dev", "createOptions": "{\"HostConfig\": {\"PortBindings\": {\"443/tcp\": [{\"HostPort\": \"443\"}]}}}" }, "type": "docker", @@ -122,7 +122,7 @@ To deploy the connected registry module using the Azure CLI, save the following "systemModules": { "edgeAgent": { "settings": { - "image": "$upstream/acr/microsoft/azureiotedge-agent:20210609.5", + "image": "$upstream/azureiotedge-agent:20210609.5", "createOptions": "" }, "type": "docker", @@ -134,7 +134,7 @@ To deploy the connected registry module using the Azure CLI, save the following }, "edgeHub": { "settings": { - "image": "$upstream/acr/microsoft/azureiotedge-hub:20210609.5", + "image": "$upstream/azureiotedge-hub:20210609.5", "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"443/tcp\":[{\"HostPort\":\"443\"}],\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}]}}}" }, "type": "docker", @@ -202,12 +202,12 @@ Based on the tutorial, it overall includes the following steps: ## IoT Edge configuration template to use configuration: template_config_path: "./templates/tutorial/device_config.toml" - default_edge_agent: "$upstream:8000/acr/microsoft/azureiotedge-agent:20210609.5" + default_edge_agent: "$upstream:8000/azureiotedge-agent:20210609.5" ## Hierarchy of IoT Edge devices to create edgedevices: device_id: top-layerx - edge_agent: "mycontainerregistry001.azurecr.io/acr/microsoft/azureiotedge-agent:20210609.5" ## Optional. If not provided, default_edge_agent will be used + edge_agent: "mycontainerregistry001.azurecr.io/azureiotedge-agent:20210609.5" ## Optional. If not provided, default_edge_agent will be used deployment: "./templates/tutorial/deploymentTopLayer.json" ## Optional. If provided, the given deployment file will be applied to the newly created device # hostname: "FQDN or IP" ## Optional. If provided, install.sh will not prompt user for this value nor the parent_hostname value container_auth: // The token used to pull the image from cloud registry From 289b5cb07b4feeb775dc904e84570cfa5780f76c Mon Sep 17 00:00:00 2001 From: Bin Du <2686301+northtyphoon@users.noreply.github.com> Date: Sun, 18 Jul 2021 22:52:01 -0700 Subject: [PATCH 50/51] replace jwt.io with jwt.ms (#558) --- docs/AAD-OAuth.md | 8 ++++---- docs/Token-BasicAuth.md | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/AAD-OAuth.md b/docs/AAD-OAuth.md index 7f2bf2a..057bac9 100644 --- a/docs/AAD-OAuth.md +++ b/docs/AAD-OAuth.md @@ -30,7 +30,7 @@ The Azure Container Registry allows users to manage a private Docker registry on The integration of Azure Container Registry with Azure Active Directory is crucial in order to enable transparent authentication and authorization of users and headless services using AAD credentials. In this scenario, a user will only have to use their AAD credentials to log-in to their private registry, and the Azure Container Service will take care of the authorization validation of each operation using the provided credentials. -Under the hood Azure Container Service utilizes the [oauth2](https://oauth.net/2/) authorization protocol, as described by the [Docker Registry v2 authentication via central service documentation](https://docs.docker.com/registry/spec/auth/token/) as well as the [Docker Registry v2 Bearer token specification](https://docs.docker.com/registry/spec/auth/jwt/). The JWT tokens generated by the Azure Container Registry are easy to observe in [jwt.io](https://jwt.io/). +Under the hood Azure Container Service utilizes the [oauth2](https://oauth.net/2/) authorization protocol, as described by the [Docker Registry v2 authentication via central service documentation](https://docs.docker.com/registry/spec/auth/token/) as well as the [Docker Registry v2 Bearer token specification](https://docs.docker.com/registry/spec/auth/jwt/). The JWT tokens generated by the Azure Container Registry are easy to observe in [jwt.ms](https://jwt.ms/). ## Authenticating to a registry with Azure CLI @@ -175,7 +175,7 @@ The outcome of this operation will be a response with status 200 OK and a body w {"refresh_token":"eyJ...L7a"} ``` -This response is the ACR refresh token which you can inspect with [jwt.io](https://jwt.io/). You can now use it to obtain an ACR access token programmatically or simply send it to the `docker login` command to get docker talking to the Azure Container Registry. +This response is the ACR refresh token which you can inspect with [jwt.ms](https://jwt.ms/). You can now use it to obtain an ACR access token programmatically or simply send it to the `docker login` command to get docker talking to the Azure Container Registry. ## Authenticating docker with an ACR refresh token @@ -250,7 +250,7 @@ The outcome of this operation will be a response with status 200 OK and a body w ```json {"access_token":"eyJ...xcg"} ``` -This response is the ACR access token which you can inspect with [jwt.io](https://jwt.io/). You can now use it to call APIs exposed by the Azure Container Registry +This response is the ACR access token which you can inspect with [jwt.ms](https://jwt.ms/). You can now use it to call APIs exposed by the Azure Container Registry ## Calling `POST /oauth2/token` to get an ACR access token for Helm repository @@ -307,7 +307,7 @@ The outcome of this operation will be a response with status 200 OK and a body w {"access_token":"eyJ...xcg"} ``` -This response is the ACR access token which you can inspect with [jwt.io](https://jwt.io/). You can now use it to call APIs exposed by the Azure Container Registry. Refer the full script to [fetch the helm index.yaml](#fetch-helm-indexyaml). +This response is the ACR access token which you can inspect with [jwt.ms](https://jwt.ms/). You can now use it to call APIs exposed by the Azure Container Registry. Refer the full script to [fetch the helm index.yaml](#fetch-helm-indexyaml). ## Calling an Azure Container Registry API diff --git a/docs/Token-BasicAuth.md b/docs/Token-BasicAuth.md index 49def3c..48d19ac 100644 --- a/docs/Token-BasicAuth.md +++ b/docs/Token-BasicAuth.md @@ -83,7 +83,7 @@ The outcome of this operation will be a response with status 200 OK and a body w {"access_token":"eyJ...xcg"} ``` -This response is the ACR access token which you can inspect with [jwt.io](https://jwt.io/). You can now use it to call APIs exposed by the Azure Container Registry. +This response is the ACR access token which you can inspect with [jwt.ms](https://jwt.ms/). You can now use it to call APIs exposed by the Azure Container Registry. ### Calling an Azure Container Registry API From 01563310f4d81c216f495877259fb7bb16947af3 Mon Sep 17 00:00:00 2001 From: Bin Du <2686301+northtyphoon@users.noreply.github.com> Date: Thu, 22 Jul 2021 10:44:26 -0700 Subject: [PATCH 51/51] deprecate AAD refresh token support (#560) * deprecate AAD refresh token support * address review comments --- docs/AAD-OAuth.md | 48 ++++++++++++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 19 deletions(-) diff --git a/docs/AAD-OAuth.md b/docs/AAD-OAuth.md index 057bac9..9d254fb 100644 --- a/docs/AAD-OAuth.md +++ b/docs/AAD-OAuth.md @@ -7,15 +7,22 @@ title: "AAD Integration" -- [Overview](#overview) -- [Authenticating to a registry with Azure CLI](#authenticating-to-a-registry-with-azure-cli) -- [Listing a repository with Azure CLI](#listing-a-repository-with-azure-cli) -- [Calling `POST /oauth2/exchange` to get an ACR refresh token](#calling-post-oauth2exchange-to-get-an-acr-refresh-token) -- [Authenticating docker with an ACR refresh token](#authenticating-docker-with-an-acr-refresh-token) -- [Calling `POST /oauth2/token` to get an ACR access token](#calling-post-oauth2token-to-get-an-acr-access-token) -- [Calling `POST /oauth2/token` to get an ACR access token for Helm repository](#calling-post-oauth2token-to-get-an-acr-access-token-for-helm-repository) -- [Calling an Azure Container Registry API](#calling-an-azure-container-registry-api) -- [Samples API Call scripts](#samples-api-call-scripts) +- [Azure Container Registry integration with Azure Active Directory](#azure-container-registry-integration-with-azure-active-directory) + - [Overview](#overview) + - [Authenticating to a registry with Azure CLI](#authenticating-to-a-registry-with-azure-cli) + - [Listing a repository with Azure CLI](#listing-a-repository-with-azure-cli) +- [Azure Container Registry token claim sets](#azure-container-registry-token-claim-sets) +- [Getting credentials programmatically](#getting-credentials-programmatically) + - [Calling `POST /oauth2/exchange` to get an ACR refresh token](#calling-post-oauth2exchange-to-get-an-acr-refresh-token) + - [Authenticating docker with an ACR refresh token](#authenticating-docker-with-an-acr-refresh-token) + - [Calling `POST /oauth2/token` to get an ACR access token](#calling-post-oauth2token-to-get-an-acr-access-token) + - [Calling `POST /oauth2/token` to get an ACR access token for Helm repository](#calling-post-oauth2token-to-get-an-acr-access-token-for-helm-repository) + - [Calling an Azure Container Registry API](#calling-an-azure-container-registry-api) + - [Catalog Listing](#catalog-listing) + - [Pagination](#pagination) + - [Tag Listing](#tag-listing) + - [Pagination](#pagination-1) + - [Samples API Call scripts](#samples-api-call-scripts) - [Catalog Listing with AAD refresh token](#catalog-listing-with-aad-refresh-token) - [Catalog listing using SP/Admin with Basic Auth](#catalog-listing-using-spadmin-with-basic-auth) - [Catalog listing using Admin Keys with Bearer Auth](#catalog-listing-using-admin-keys-with-bearer-auth) @@ -128,19 +135,21 @@ Followed by an access token at step 7 with the following claim set: } ``` -# Getting credentials programatically +# Getting credentials programmatically In order to sign in to a container you'll need to exchange AAD credentials for ACR credentials. The accepted form of credential exchange are: - AAD access token. - - AAD refresh token. - - AAD access token and refresh token. + - [Deprecated] AAD refresh token. + - [Deprecated] AAD access token and refresh token. -Ideally you'll present both the AAD access token and the AAD refresh token. The AAD access token is used to talk to the Azure Resource Manager and query for the set of permissions that the user has for the container registry resource. The AAD refresh token is used in two ways: + The AAD access token is used to talk to the Azure Resource Manager and query for the set of permissions that the user has for the container registry resource. + + [Deprecated] The AAD refresh token is used in two ways: 1. If no AAD access token was presented, the AAD refresh token is used to obtain an AAD access token. 2. The AAD refresh token is sent back to the user so they can initiate a token refresh cycle against AAD. If no AAD refresh token is sent, then the client won't have this credential at hand to initiate a credential refresh. The cycle to get credentials looks as follows: - 1. Call `POST /oauth2/exchange` presenting the AAD refresh token and the AAD access token. The service will return you an ACR refresh token. + 1. Call `POST /oauth2/exchange` presenting the AAD access token or the AAD refresh token [Deprecated]. The service will return you an ACR refresh token. 2. Call `POST /oauth2/token` presenting the ACR refresh token. The service will return you an ACR access token which you can use to call the Azure Container Registry's APIs. ## Calling `POST /oauth2/exchange` to get an ACR refresh token @@ -148,9 +157,9 @@ The cycle to get credentials looks as follows: In this example, we'll try to obtain an ACR refresh token from existing AAD tokens. Assume you have the following: 1. A valid container registry, which here we'll call `contosoregistry.azurecr.io`. 2. The AAD tenant identifier associated to the credentials, which here we'll take to be `409520d4-8100-4d1d-ad47-72432ddcc120`. - 3. Valid AAD access token and AAD refresh token credentials with access to the aforementioned container registry. + 3. Valid AAD access token credential with access to the aforementioned container registry. -The AAD access token and AAD refresh token can be obtained from the Azure CLI. After running `az login` check file `$HOME/.azure/accessTokens.json` (`%HOMEDRIVE%%HOMEPATH%\.azure\accessTokens.json` in Windows) for the token values. +The AAD access token can be obtained from the Azure CLI. After running `az login` check file `$HOME/.azure/accessTokens.json` (`%HOMEDRIVE%%HOMEPATH%\.azure\accessTokens.json` in Windows) for the token values. We'll now call `POST /oauth2/exchange` to exchange the AAD tokens for an ACR refresh token. Here's how such a call looks when done via `curl`: ```bash @@ -163,11 +172,12 @@ curl -v -X POST -H "Content-Type: application/x-www-form-urlencoded" -d \ ``` The body of the POST message is a querystring-like text that specifies the following values: - - `grant_type`, which can take a value of `access_token_refresh_token`, or `access_token`, or `refresh_token`. + - `grant_type`, which can take a value of `access_token`, or `access_token_refresh_token` [Deprecated], or `refresh_token` [Deprecated]. - `service`, which must indicate the name of your Azure container registry. - `tenant`, which is the AAD tenant associated to the AAD credentials. - - `refresh_token`, the AAD refresh token, mandatory when `grant_type` is `access_token_refresh_token` or `refresh_token`. - - `access_token`, the AAD access token, mandatory when `grant_type` is `access_token_refresh_token` or `access_token`. + - `access_token`, the AAD access token, mandatory when `grant_type` is `access_token` or `access_token_refresh_token` [Deprecated]. + - [Deprecated] `refresh_token`, the AAD refresh token, mandatory when `grant_type` is `access_token_refresh_token` or `refresh_token`. + The outcome of this operation will be a response with status 200 OK and a body with the following JSON payload: