练习 - 通过 configmap 增强应用程序
你已部署应用程序后端,现在需要使用 ConfigMap 部署应用程序前端。
准备工作
注意
本练习为选做练习。 若要完成本练习,需要在开始之前创建 Azure 订阅。 如果没有 Azure 帐户,或者现在不想创建帐户,则可以通读说明,以便了解所提供的信息。
创建 ConfigMap
创建一个名为
configmap.yaml
的新 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', } })()
使用前面创建的 ZONE_NAME 变量的值替换
{your-dns-zone}
。保存并关闭该文件。
使用
kubectl apply
命令将更改应用于群集。kubectl apply -f configmap.yaml
使用
kubectl get configmap
命令查询 ConfigMap 以检查结果。kubectl get configmap ship-manager-config
创建应用程序
创建一个名为
frontend.yaml
的新 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
是容器内的文件名。在三条短划线的下方,粘贴以下代码以创建服务和入口规范:
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
使用前面创建的 ZONE_NAME 变量的值替换 Ingress 中的
{your-dns-zone}
。保存并关闭该文件。
使用
kubectl apply
命令部署应用程序。kubectl apply -f frontend.yaml
使用
kubectl get deployment
命令查询 Kubernetes API 以检查结果。kubectl get deployment contoso-ship-manager-frontend
如果该 API 可用,应该会出现如下所示的输出:
NAME READY UP-TO-DATE AVAILABLE AGE contoso-ship-manager-frontend 1/1 1 1 18s