diff --git a/WebDisplay/Dockerfile b/WebDisplay/Dockerfile index 2da9ead..0f9ef2a 100644 --- a/WebDisplay/Dockerfile +++ b/WebDisplay/Dockerfile @@ -13,4 +13,7 @@ COPY nginx/default.conf /etc/nginx/conf.d/ RUN rm -rf /usr/share/nginx/html/* COPY --from=build-stage /app/dist /usr/share/nginx/html EXPOSE 80 +COPY ./entrypoint.sh ./entrypoint.sh +RUN chmod +x ./entrypoint.sh +ENTRYPOINT ["./entrypoint.sh"] CMD ["nginx", "-g", "daemon off;"] \ No newline at end of file diff --git a/WebDisplay/deploy/azure-pipelines.yml b/WebDisplay/deploy/azure-pipelines.yml index a4a9022..9596fdf 100644 --- a/WebDisplay/deploy/azure-pipelines.yml +++ b/WebDisplay/deploy/azure-pipelines.yml @@ -43,6 +43,15 @@ stages: PathtoPublish: 'WebDisplay/deploy/manifest.yaml' ArtifactName: 'Manifest' publishLocation: 'Container' + - task: Bash@3 + inputs: + targetType: 'inline' + script: 'sed -i s/#BUILD_BUILDNUMBER#/$BUILD_BUILDNUMBER/ WebDisplay/deploy/manifest-internal.yaml' + - task: PublishBuildArtifacts@1 + inputs: + PathtoPublish: 'WebDisplay/deploy/manifest-internal.yaml' + ArtifactName: 'Manifest-Internal' + publishLocation: 'Container' - stage: Deploy jobs: @@ -66,3 +75,23 @@ stages: configuration: '$(System.ArtifactsDirectory)/Manifest/manifest.yaml' secretType: 'dockerRegistry' containerRegistryType: 'Container Registry' + - job: Deploy Internal + pool: + vmImage: 'ubuntu-latest' + steps: + - task: DownloadBuildArtifacts@0 + inputs: + artifactName: 'Manifest-Internal' + buildType: 'current' + downloadType: 'single' + downloadPath: '$(System.ArtifactsDirectory)' + - task: Kubernetes@1 + inputs: + connectionType: 'Kubernetes Service Connection' + kubernetesServiceEndpoint: 'Kubernetes' + namespace: 'home-monitor' + command: 'apply' + useConfigurationFile: true + configuration: '$(System.ArtifactsDirectory)/Manifest/manifest-internal.yaml' + secretType: 'dockerRegistry' + containerRegistryType: 'Container Registry' diff --git a/WebDisplay/deploy/manifest-internal.yaml b/WebDisplay/deploy/manifest-internal.yaml new file mode 100644 index 0000000..9578b6e --- /dev/null +++ b/WebDisplay/deploy/manifest-internal.yaml @@ -0,0 +1,100 @@ +--- +kind: Deployment +apiVersion: apps/v1 +metadata: + name: display-internal + namespace: home-monitor + labels: + app: display-internal +spec: + replicas: 1 + selector: + matchLabels: + app: display-internal + template: + metadata: + labels: + app: display-internal + spec: + containers: + - name: display-internal + image: ckaczor/home-monitor-web-display:15 + terminationMessagePath: "/dev/termination-log" + terminationMessagePolicy: File + imagePullPolicy: Always + securityContext: + privileged: true + env: + - name: API_PREFIX + value: http://172.23.10.3 + - name: HOME_ASSISTANT_URL + valueFrom: + secretKeyRef: + name: display-internal-config + key: HOME_ASSISTANT_URL + - name: HOME_ASSISTANT_TOKEN + valueFrom: + secretKeyRef: + name: display-internal-config + key: HOME_ASSISTANT_TOKEN + - name: GARAGE_DEVICE + valueFrom: + secretKeyRef: + name: display-internal-config + key: GARAGE_DEVICE + - name: ALARM_DEVICE + valueFrom: + secretKeyRef: + name: display-internal-config + key: ALARM_DEVICE + restartPolicy: Always + terminationGracePeriodSeconds: 30 + dnsPolicy: ClusterFirst + nodeSelector: + kubernetes.io/hostname: kubernetes + schedulerName: default-scheduler +--- +kind: Service +apiVersion: v1 +metadata: + name: display-internal +spec: + ports: + - name: client + port: 9001 + targetPort: 80 + selector: + app: display-internal + type: ClusterIP +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: IngressRoute +metadata: + annotations: + kubernetes.io/ingress.class: traefik + creationTimestamp: null + name: display-internal + namespace: home-monitor +spec: + entryPoints: + - display + routes: + - kind: Rule + match: PathPrefix(`/`) + priority: 101 + services: + - kind: Service + name: display-internal + namespace: home-monitor + port: 9001 +--- +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + creationTimestamp: null + name: display-internal + namespace: home-monitor +spec: + stripPrefix: + prefixes: + - / \ No newline at end of file diff --git a/WebDisplay/deploy/manifest.yaml b/WebDisplay/deploy/manifest.yaml index abcd807..1e39b98 100644 --- a/WebDisplay/deploy/manifest.yaml +++ b/WebDisplay/deploy/manifest.yaml @@ -24,6 +24,17 @@ spec: imagePullPolicy: Always securityContext: privileged: true + env: + - name: API_PREFIX + value: + - name: HOME_ASSISTANT_URL + value: + - name: HOME_ASSISTANT_TOKEN + value: + - name: GARAGE_DEVICE + value: + - name: ALARM_DEVICE + value: restartPolicy: Always terminationGracePeriodSeconds: 30 dnsPolicy: ClusterFirst diff --git a/WebDisplay/nginx/entrypoint.sh b/WebDisplay/nginx/entrypoint.sh new file mode 100644 index 0000000..1c0f60b --- /dev/null +++ b/WebDisplay/nginx/entrypoint.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +sed -i -e "s~%API_PREFIX%~$API_PREFIX~g" /usr/share/nginx/html/assets/* +sed -i -e "s~%HOME_ASSISTANT_URL%~$HOME_ASSISTANT_URL~g" sed -i -e "s~%API_PREFIX%~$API_PREFIX~g" /usr/share/nginx/html/assets/* +sed -i -e "s~%HOME_ASSISTANT_TOKEN%~$HOME_ASSISTANT_TOKEN~g" sed -i -e "s~%API_PREFIX%~$API_PREFIX~g" /usr/share/nginx/html/assets/* +sed -i -e "s~%GARAGE_DEVICE%~$GARAGE_DEVICE~g" sed -i -e "s~%API_PREFIX%~$API_PREFIX~g" /usr/share/nginx/html/assets/* +sed -i -e "s~%ALARM_DEVICE%~$ALARM_DEVICE~g" sed -i -e "s~%API_PREFIX%~$API_PREFIX~g" /usr/share/nginx/html/assets/* \ No newline at end of file diff --git a/WebDisplay/src/config.json b/WebDisplay/src/config.json deleted file mode 100644 index e0f36bb..0000000 --- a/WebDisplay/src/config.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "API_PREFIX": "", - "HOME_ASSISTANT_TOKEN": "", - "HOME_ASSISTANT_URL": "", - "GARAGE_DEVICE": "", - "ALARM_DEVICE": "" -} diff --git a/WebDisplay/src/environment.ts b/WebDisplay/src/environment.ts index a1885c8..7c7c909 100644 --- a/WebDisplay/src/environment.ts +++ b/WebDisplay/src/environment.ts @@ -1,23 +1,21 @@ -import config from './config.json'; - export default class Environment { public static getUrlPrefix(): string { - return config.API_PREFIX; + return '%API_PREFIX%'; } public static getHomeAssistantUrl(): string { - return config.HOME_ASSISTANT_URL; + return '%HOME_ASSISTANT_URL%'; } public static getHomeAssistantToken(): string { - return config.HOME_ASSISTANT_TOKEN; + return '%HOME_ASSISTANT_TOKEN%'; } public static getGarageDevice(): string { - return config.GARAGE_DEVICE; + return '%GARAGE_DEVICE%'; } public static getAlarmDevice(): string { - return config.ALARM_DEVICE; + return '%ALARM_DEVICE%'; } }