Упражнение — Усовершенствуйте приложение с помощью ConfigMap.
Серверная часть приложения развернута, и теперь необходимо развернуть интерфейс приложения с помощью ConfigMap.
Прежде чем начать
Заметка
Это упражнение является необязательным. Если вы хотите выполнить это упражнение, перед началом работы необходимо создать подписку Azure. Если у вас нет учетной записи Azure или вы не хотите создавать ее в данный момент, вы можете ознакомиться с инструкциями, чтобы понять информацию, представленную.
Создать ConfigMap
Создайте файл YAML с именем
configmap.yaml
и вставьте следующий код, чтобы создать спецификацию 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', } })()
Замените
{your-dns-zone}
значением созданной ранее переменной ZONE_NAME.Сохраните и закройте файл.
Примените изменения к кластеру с помощью команды
kubectl apply
.kubectl apply -f configmap.yaml
Проверьте результат, запросив ConfigMap с помощью команды
kubectl get configmap
.kubectl get configmap ship-manager-config
Создание приложения
Создайте файл YAML с именем
frontend.yaml
и вставьте следующий код, чтобы создать спецификацию развертывания: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 ---
Обратите внимание, как ConfigMap встроен в объект Deployment. Мы не указываем никаких ключей, то есть необходимо указать ключ
subPath
.subpath
— это имя файла в контейнере.Под тремя дефисами вставьте следующий код, чтобы создать спецификации Service и Ingress:
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
Замените
{your-dns-zone}
в Ingress значением переменной ZONE_NAME, которую вы создали ранее.Сохраните и закройте файл.
Разверните приложение с помощью команды
kubectl apply
.kubectl apply -f frontend.yaml
Проверьте результат, запросив API Kubernetes с помощью команды
kubectl get deployment
.kubectl get deployment contoso-ship-manager-frontend
Если API доступен, вы должны получить выходные данные, аналогичные следующему примеру:
NAME READY UP-TO-DATE AVAILABLE AGE contoso-ship-manager-frontend 1/1 1 1 18s