Azure Kubernetes Service (AKS) es un servicio administrado de Kubernetes que le permite distribuir y gestionar clústeres. En esta sección se incluyen los procedimientos siguientes:
En esta sección, se describen los siguientes procedimientos para distribuir Identity Console en un clúster de AKS:
Un registro de contenedor de Azure (ACR) es un registro privado basado en Azure para las imágenes del contenedor de Docker.
Para obtener más información, consulte Create an Azure container registry using the Azure portal (Crear un registro de contenedor de Azure mediante el portal de Azure) en la sección "Create container registry - Portal" (Crear registro de contenedor - Portal) o realice los siguientes pasos para crear un registro de contenedor de Azure (ACR):
Inicie sesión en el portal de Azure.
Vaya a Crear un recurso > Contenedores > Registro de contenedor.
En la pestaña Básico, especifique los valores de Grupo de recursos y Nombre del registro. El nombre del registro debe ser exclusivo en Azure y contener un mínimo de 5 caracteres alfanuméricos y un máximo de 50.
Acepte los valores por defecto para los ajustes restantes.
Haga clic en Revisar y crear.
Haga clic en Crear.
Entre en la CLI de Azure y ejecute el comando siguiente para entrar en el registro de contenedor de Azure.
az acr login --name registryname
Por ejemplo:
az acr login --name < idconsole >
Recupere el servidor de entrada a la sesión del registro de contenedor de Azure mediante el siguiente comando:
az acr show --name registryname --query loginServer --output table
Por ejemplo:
az acr show --name < idconsole > --query loginServer --output table
Etiquete la imagen local de Identity Console con el nombre del servidor de entrada a la sesión de ACR (registryname.azureacr.io) mediante el siguiente comando:
docker tag idconsole-image <login server>/idconsole-image
Por ejemplo:
docker tag identityconsole:<version> registryname.azurecr.io/identityconsole:<version>
Envíe la imagen etiquetada al registro.
docker push <login server>/idconsole: <version>
Por ejemplo:
docker push registryname.azurecr.io/identityconsole:<version>
Recupere la lista de imágenes del registro mediante el siguiente comando:
az acr show --name registryname --query loginServer --output table
Cree un recurso de servicio de Kubernetes mediante el portal o la CLI de Azure.
Para obtener pasos más detallados para la creación de un recurso de servicio de Kubernetes en Azure con un nodo, consulte Create an AKS Cluster (Crear un clúster de AKS) en Azure Quickstart.
NOTA:
Asegúrese de seleccionar Azure CNI como red.
Seleccione la red virtual existente (en la que se ha distribuido el servidor de eDirectory en la subred).
Seleccione el registro de contenedor existente en el que está disponible la imagen de Identity Console.
Un recurso de dirección IP pública en el grupo de recursos del clúster de Kubernetes actúa como IP del equilibrador de carga para la aplicación.
Para ver los pasos detallados, consulte la sección Create a public IP address using the Azure portal (Crear una dirección IP pública mediante el portal de Azure) en "Create public IP address – Portal" (Crear dirección IP pública - Portal).
Utilice Cloud Shell, disponible en el portal de Azure, para todas las operaciones.
Para iniciar Cloud Shell en el portal de Azure, consulte Start Cloud Shell (Iniciar Cloud Shell) en Bash – Quickstart o lleve a cabo los siguientes pasos para configurar Cloud Shell y conectarse al clúster de Kubernetes:
En el portal de Azure, haga clic en el botón para abrir Cloud Shell.
NOTA:Para gestionar un clúster de Kubernetes, utilice el cliente de línea de comandos de Kubernetes, kubectl. Si se utiliza Azure Cloud Shell, kubectl ya estará instalado.
Configure kubectl para conectarse al clúster de Kubernetes mediante el siguiente comando:
az aks get-credentials --resource-group "resource group name" --name "Kubernetes cluster name"
Por ejemplo:
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Compruebe la lista de nodos del clúster mediante el siguiente comando:
kubectl get nodes
Para distribuir Identity Console, puede utilizar los archivos de ejemplo idc-services.yaml, idc-statefulset.yaml, idc-storageclass.yaml y idc-pvc.yaml.
También puede crear sus propios archivos yaml según sea necesario.
Cree un recurso de clase de almacenamiento mediante el comando siguiente:
kubectl apply -f <location of the YAML file>
Por ejemplo:
kubectl apply -f idc-storageclass.yaml
(Opcional) Para obtener más información sobre cómo crear y utilizar dinámicamente un volumen persistente con un recurso compartido de archivos de Azure, consulte Dynamically create and use a persistent volume with Azure Files in Azure Kubernetes Service (AKS) (Crear y utilizar dinámicamente un volumen persistente con archivos de Azure en Azure Kubernetes Service).
A continuación, se muestra un archivo de recursos de clase de almacenamiento de ejemplo:
kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: azurefilesc provisioner: kubernetes.io/azure-file mountOptions: - dir_mode=0777 - file_mode=0777 - uid=0 - gid=0 - mfsymlinks - cache=strict - actimeo=30 parameters: skuName: Standard_LRS shareName: fileshare ~
Un recurso de clase de almacenamiento permite el aprovisionamiento dinámico de almacenamiento. Se utiliza para definir cómo se crea un recurso compartido de archivo de Azure.
Consulte la información de la clase de almacenamiento mediante el comando siguiente:
kubectl get sc
Cree un recurso de PVC mediante el archivo idc-pvc.yaml:
kubectl apply -f <location of the YAML file>
Por ejemplo:
kubectl apply -f idc.pvc.yaml
A continuación, se muestra un archivo de recursos de PVC de ejemplo:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvcforsc spec: accessModes: - ReadWriteMany storageClassName: azurefilesc resources: requests: storage: 5Gi
Un recurso de reclamación de volumen persistente crea el recurso compartido de archivo. Una reclamación de volumen persistente (PVC) utiliza el objeto de clase de almacenamiento para aprovisionar dinámicamente un recurso compartido de archivo de Azure.
Cargue el archivo edirapi.conf, el certificado de CA y el certificado del servidor en Cloud Shell.
Haga clic en el icono del botón para cargar/descargar archivos en Cloud Shell y cargue los archivos edirapi.conf, SSCert.pem y keys.pfx.
NOTA:edirapi.conf presenta un parámetro "origin" (origen). Aquí es necesario proporcionar la dirección IP con la que se accederá a la aplicación de Identity Console. (Utilice la dirección IP creada en la sección Creación de una dirección IP pública de SKU estándar).
La distribución de Identity Console requiere el certificado de servidor (keys.pfx).
Al crear el certificado de servidor, asegúrese de proporcionar un nombre DNS válido en el nombre alternativo del sujeto.
Pasos para crear un nombre DNS válido:
Un pod típico distribuido mediante StatefulSet presenta un nombre DNS como el siguiente: {statefulsetname}-{ordinal}.{servicename}.{namespace}.svc.cluster.local
Si el nombre de StatefulSet del archivo "idconsole-statefulset.yaml" es "idconsole-app", "statefulsetname" es igual a "idconsole-app".
Si es el primer pod, "ordinal" es igual a 0.
Si se define serviceName en el archivo "idconsole -statefulset.yaml" como "idconsole", serviceName es igual a "idconsole".
Si es el espacio de nombres por defecto, "namespace" es igual a "default".
Salida: idconsole-app-0.idcosole.default.svc.cluster.local
Cree un recurso configmap en el clúster de Kubernetes que almacenará los archivos de configuración junto con los certificados.
Antes de ejecutar el comando, asegúrese de que los archivos (edirapi.conf, SSCert.pem y keys.pfx) estén presentes en el directorio.
kubectl create configmap <confgimapName> --from-file= "path where the files are present"
Por ejemplo:
kubectl create configmap config-data --from-file=/data
Vea los detalles del objeto configmap mediante el comando kuitemtl describe:
kubectl describe configmap <configmapName>
Por ejemplo:
kubectl describe configmap confg-data
Cree un recurso StatefulSet para distribuir el contenedor.
Ejecute el siguiente comando para distribuir el contenedor:
kubectl apply -f <location of the YAML file>
Por ejemplo:
kubectl apply -f idc-statefulset.yaml
A continuación, se muestra un archivo de recursos StatefulSet de ejemplo:
apiVersion: apps/v1 kind: StatefulSet metadata: name: idconsole-app spec: serviceName: idconsole selector: matchLabels: app: idconsole replicas: 1 template: metadata: labels: app: idconsole spec: containers: - name: idconsole-container image: registryname.azurecr.io/identityconsole:<version> env: - name: ACCEPT_EULA value: "Y" ports: - containerPort: 9000 volumeMounts: - name: configfiles mountPath: /config/data - name: datapersistenceandlog mountPath: /config subPath: log volumes: - name: configfiles configMap: name: config-data - name: datapersistenceandlog persistentVolumeClaim: claimName: pvcforsc
Ejecute el siguiente comando para verificar el estado del pod distribuido:
kubectl get pods -o wide
Cree un recurso de servicio de tipo loadBalancer.
El tipo de servicio especificado en el archivo yaml es loadBalancer.
Cree un recurso de servicio mediante el siguiente comando:
kubectl apply -f <location of the YAML file>
Por ejemplo:
kubectl apply -f ids-service.yaml
A continuación, se muestra un archivo de recursos de servicio de ejemplo:
apiVersion: v1 kind: Service metadata: name: idconsole-service labels: run: idconsole-service spec: type: LoadBalancer loadBalancerIP: xx.xx.xx.xx selector: app: idconsole ports: - port: 9000 targetPort: 9000 protocol: TCP
Compruebe la dirección EXTERNAL-IP (o loadBalancerIP) mediante el siguiente comando:
kubectl get svc -o wide
Inicie la dirección URL mediante EXTERNAL-IP (o la dirección de loadBalancerIP).
Por ejemplo:
https://<EXTERNAL-IP>:9000/identityconsole