Exercício – Melhorar a aplicação com configmaps
Você implantou o back-end do aplicativo e agora precisa implantar o front-end do aplicativo usando um ConfigMap.
Antes de começar
Nota
Este exercício é opcional. Se quiser concluir este exercício, terá de criar uma subscrição do Azure antes de começar. Se você não tiver uma conta do Azure ou não quiser criar uma no momento, leia as instruções para entender as informações que estão sendo apresentadas.
Criar um ConfigMap
Crie um novo arquivo YAML chamado
configmap.yaml
e cole no código a seguir para criar a especificação ConfigMap:apiVersion: v1 kind: ConfigMap metadata: name: ship-manager-config namespace: default data: config.js: | const config = (() => { return { 'VUE_APP_BACKEND_BASE_URL': 'http://ship-manager-backend.{your-dns-zone}.aksapp.io', } })()
Substitua
{your-dns-zone}
pelo valor da variável ZONE_NAME criada anteriormente.Guarde e feche o ficheiro.
Aplique as alterações ao cluster usando o
kubectl apply
comando.kubectl apply -f configmap.yaml
Verifique o resultado consultando o ConfigMap usando o
kubectl get configmap
comando.kubectl get configmap ship-manager-config
Criar a aplicação
Crie um novo arquivo YAML nomeado
frontend.yaml
e cole no código a seguir para criar a especificação de implantação:apiVersion: apps/v1 kind: Deployment metadata: name: contoso-ship-manager-frontend namespace: default spec: replicas: 1 selector: matchLabels: app: contoso-ship-manager-frontend template: metadata: labels: app: contoso-ship-manager-frontend spec: containers: - image: mcr.microsoft.com/mslearn/samples/contoso-ship-manager:frontend name: contoso-ship-manager-frontend ports: - containerPort: 80 name: http volumeMounts: - name: config mountPath: /usr/src/app/dist/config.js subPath: config.js volumes: - name: config configMap: name: ship-manager-config ---
Observe como o ConfigMap é montado no objeto Deployment. Não especificamos nenhuma chave, o que significa que precisamos especificar uma
subPath
chave. Osubpath
é o nome do arquivo dentro do contêiner.Abaixo dos três traços, cole o código a seguir para criar as especificações de Serviço e Ingresso:
apiVersion: v1 kind: Service metadata: name: contoso-ship-manager-frontend namespace: default spec: selector: app: contoso-ship-manager-frontend ports: - name: http port: 80 targetPort: 80 --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: contoso-ship-manager-frontend namespace: default annotations: spec.ingressClassName: webapprouting.kubernetes.azure.com spec: rules: - host: contoso-ship-manager.{your-dns-zone}.aksapp.io http: paths: - path: / pathType: Prefix backend: service: name: contoso-ship-manager-frontend port: name: http
Substitua
{your-dns-zone}
no Ingress pelo valor da variável ZONE_NAME que você criou anteriormente.Guarde e feche o ficheiro.
Implante o aplicativo usando o
kubectl apply
comando.kubectl apply -f frontend.yaml
Verifique o resultado consultando a API do Kubernetes usando o
kubectl get deployment
comando.kubectl get deployment contoso-ship-manager-frontend
Quando a API estiver disponível, você deverá obter uma saída semelhante ao exemplo a seguir:
NAME READY UP-TO-DATE AVAILABLE AGE contoso-ship-manager-frontend 1/1 1 1 18s