kind: Template apiVersion: v1 metadata: name: fabric8-launcher annotations: openshift.io/display-name: "Fabric8 Launch (Frontend + Backend)" description: This application consists of the combination of Backend and Frontend services for Fabric8 Launch tags: instant-app,fabric8-launcher iconClass: icon-shadowman template.openshift.io/long-description: This application consists of the combination of Backend and Frontend services for Fabric8 Launch template.openshift.io/provider-display-name: Red Hat, Inc. template.openshift.io/documentation-url: https://github.com/fabric8-launcher template.openshift.io/support-url: https://access.redhat.com message: "The following service(s) have been created in your project: launcher-backend, launcher-frontend.\n\nFor more information about using this template, including OpenShift considerations, see https://github.com/fabric8-launcher" labels: template: launcher-header app: fabric8-launcher parameters: - name: LAUNCHER_MISSIONCONTROL_GITHUB_USERNAME displayName: Your GitHub username description: Your GitHub username (leave empty when using Keycloak) - name: LAUNCHER_MISSIONCONTROL_GITHUB_TOKEN displayName: Your GitHub Mission Control access token description: Your GitHub Mission Control access token (leave empty when using Keycloak) - name: LAUNCHER_MISSIONCONTROL_OPENSHIFT_API_URL displayName: Target OpenShift API URL description: The base URL of the OpenShift API where the launched boosters should be created (ie. https://hostname[:port] or https://ipaddress[:port]). Leave the default value when targetting the same OpenShift/Minishift you are running this on value: https://openshift.default.svc.cluster.local - name: LAUNCHER_MISSIONCONTROL_OPENSHIFT_CONSOLE_URL displayName: Target OpenShift Console URL description: The base URL of the OpenShift Console where the launched boosters should be created (ie. https://hostname[:port] or https://ipaddress[:port]). When targetting the same OpenShift/Minishift instance you are running this on you can most likely look at this page's address bar of your browser and copy the URL Example value (https://$HOSTNAMEORIP:8443) value: - name: LAUNCHER_MISSIONCONTROL_OPENSHIFT_USERNAME displayName: OpenShift user name description: OpenShift user (leave empty when using Keycloak with OpenShift as an Identity Provider or token) value: developer - name: LAUNCHER_MISSIONCONTROL_OPENSHIFT_PASSWORD displayName: OpenShift password description: OpenShift password (leave empty when using Keycloak with OpenShift as an Identity Provider or token) value: developer - name: LAUNCHER_MISSIONCONTROL_OPENSHIFT_IMPERSONATE_USER displayName: Impersonate OpenShift users description: Impersonate OpenShift users (requires a ServiceAccount with impersonator role) value: - name: LAUNCHER_KEYCLOAK_URL displayName: KeyCloak URL description: The URL (with the /auth part) of a Keycloak installation to perform SSO authentication (leave empty if you've explicitly specified GItHub/OpenShift authentication above) value: https://sso.openshift.io/auth - name: LAUNCHER_KEYCLOAK_REALM displayName: KeyCloak Realm description: The keycloak realm to be used (leave empty if you've explicitly specified GitHub/OpenShift authentication above) value: rh-developers-launch - name: LAUNCHER_KEYCLOAK_CLIENT_ID displayName: KeyCloak Client ID description: The keycloak client id to be used in the frontend (leave empty if you've explicitly specified GitHub/OpenShift authentication above) value: - name: LAUNCHER_TRACKER_SEGMENT_TOKEN displayName: Segment Token description: The token to use for Segment tracking. Leaving this empty will disable tracking. This must be set to the proper tokens for staging and production! - name: LAUNCHER_BOOSTER_CATALOG_REPOSITORY displayName: Catalog Git Repository description: The GitHub repository containing the booster catalog value: https://github.com/fabric8-launcher/launcher-booster-catalog.git required: true - name: LAUNCHER_BOOSTER_CATALOG_REF displayName: Catalog Git Reference description: The Git reference to use for the above repository value: latest required: true - name: LAUNCHER_BOOSTER_CATALOG_FILTER displayName: Catalog Filter description: Optional expression to filter a subset of boosters for the above repository (eg. booster.mission.id == 'rest-http') value: - name: LAUNCHER_BACKEND_CATALOG_REINDEX_TOKEN displayName: Catalog Reindex Token description: A token that must be passed to the catalog reindex service to trigger the catalog reindexing. value: - name: LAUNCHER_BACKEND_ENVIRONMENT displayName: Booster Environment description: The environment where this backend is running. This is used in the environment section in the booster catalog entries. Leaving this empty will set the value to 'development' if the 'Catalog Git Reference' is set to 'master', in any other case the value will default to 'production'. value: - name: LAUNCHER_BACKEND_ARTEMIS_URL displayName: ActiveMQ Artemis JMS URL description: ActiveMQ Artemis URL to store your status messages (needed when using multiple backend replicas). Leave it blank if you are not planning on using more than one replica for the backend. value: - name: LAUNCHER_BACKEND_ARTEMIS_USERNAME displayName: ActiveMQ Artemis JMS Username description: ActiveMQ Artemis Username for the ActiveMQ Artemis URL. Leave it blank if ActiveMQ Artemis URL is unset. value: - name: LAUNCHER_BACKEND_ARTEMIS_PASSWORD displayName: ActiveMQ Artemis JMS Password description: ActiveMQ Artemis Password for the ActiveMQ Artemis URL. Leave it blank if ActiveMQ Artemis URL is unset. value: - name: LAUNCHER_BACKEND_GIT_REPOSITORY_DESCRIPTION displayName: Git Repository Description description: The Git repository description to be used by Launcher (defaults to Generated by the Red Hat Developer Launch (https://developers.redhat.com/launch)) value: - name: LAUNCHER_GIT_PROVIDER displayName: Git Provider description: The Git provider to be used by Launcher (defaults to GitHub) value: GITHUB - name: BACKEND_IMAGE value: fabric8/launcher-backend required: true - name: BACKEND_IMAGE_TAG value: latest required: true - description: CPU request displayName: CPU request required: true name: BACKEND_CPU_REQUEST value: "10m" - description: CPU limit displayName: CPU limit required: true name: BACKEND_CPU_LIMIT value: "1000m" - description: Memory request displayName: Memory request required: true name: BACKEND_MEMORY_REQUEST value: "768Mi" - description: Memory limit displayName: Memory limit required: true name: BACKEND_MEMORY_LIMIT value: "2G" - description: Number of deployment replicas displayName: Number of deployment replicas required: true name: BACKEND_REPLICAS value: "1" - name: FRONTEND_IMAGE value: fabric8/launcher-frontend required: true - name: FRONTEND_IMAGE_TAG value: latest required: true - description: CPU request displayName: CPU request required: true name: FRONTEND_CPU_REQUEST value: "10m" - description: CPU limit displayName: CPU limit required: true name: FRONTEND_CPU_LIMIT value: "50m" - description: Memory request displayName: Memory request required: true name: FRONTEND_MEMORY_REQUEST value: "8M" - description: Memory limit displayName: Memory limit required: true name: FRONTEND_MEMORY_LIMIT value: "64M" - description: Number of deployment replicas displayName: Number of deployment replicas required: true name: FRONTEND_REPLICAS value: "1" - name: CONTROLLER_IMAGE value: fabric8/configmapcontroller required: true - name: CONTROLLER_IMAGE_TAG value: 2.3.7 required: true - name: LAUNCHER_MISSIONCONTROL_OPENSHIFT_TOKEN displayName: OpenShift token description: OpenShift token (leave empty when using Keycloak with OpenShift as an Identity Provider or user/password above) value: objects: - kind: ConfigMap apiVersion: v1 metadata: name: launcher data: launcher.missioncontrol.github.username: ${LAUNCHER_MISSIONCONTROL_GITHUB_USERNAME} launcher.missioncontrol.github.token: ${LAUNCHER_MISSIONCONTROL_GITHUB_TOKEN} launcher.missioncontrol.openshift.username: ${LAUNCHER_MISSIONCONTROL_OPENSHIFT_USERNAME} launcher.missioncontrol.openshift.password: ${LAUNCHER_MISSIONCONTROL_OPENSHIFT_PASSWORD} launcher.missioncontrol.openshift.impersonate.user: ${LAUNCHER_MISSIONCONTROL_OPENSHIFT_IMPERSONATE_USER} launcher.missioncontrol.openshift.api.url: ${LAUNCHER_MISSIONCONTROL_OPENSHIFT_API_URL} launcher.missioncontrol.openshift.console.url: ${LAUNCHER_MISSIONCONTROL_OPENSHIFT_CONSOLE_URL} launcher.backend.artemis.url: ${LAUNCHER_BACKEND_ARTEMIS_URL} launcher.backend.artemis.username: ${LAUNCHER_BACKEND_ARTEMIS_USERNAME} launcher.backend.artemis.password: ${LAUNCHER_BACKEND_ARTEMIS_PASSWORD} launcher.backend.catalog.filter: ${LAUNCHER_BOOSTER_CATALOG_FILTER} launcher.backend.catalog.git.repository: ${LAUNCHER_BOOSTER_CATALOG_REPOSITORY} launcher.backend.catalog.git.ref: ${LAUNCHER_BOOSTER_CATALOG_REF} launcher.backend.catalog.reindex.token: ${LAUNCHER_BACKEND_CATALOG_REINDEX_TOKEN} launcher.backend.documentation.reload.token: ${LAUNCHER_BACKEND_CATALOG_REINDEX_TOKEN} launcher.backend.environment: ${LAUNCHER_BACKEND_ENVIRONMENT} launcher.backend.git.repository.description: ${LAUNCHER_BACKEND_GIT_REPOSITORY_DESCRIPTION} launcher.git.provider: ${LAUNCHER_GIT_PROVIDER} launcher.keycloak.url: ${LAUNCHER_KEYCLOAK_URL} launcher.keycloak.realm: ${LAUNCHER_KEYCLOAK_REALM} launcher.keycloak.client.id: ${LAUNCHER_KEYCLOAK_CLIENT_ID} launcher.tracker.segment.token: ${LAUNCHER_TRACKER_SEGMENT_TOKEN} launcher.backend.url: /launch/api launcher.frontend.sentry.dsn: launcher.backend.sentry.dsn: osio.keycloak.saas.url: https://api.prod-preview.openshift.io osio.openshift.api.url: https://osoproxy.prod-preview.openshift.io osio.wit.url: https://api.prod-preview.openshift.io osio.auth.url: https://auth.prod-preview.openshift.io osio.jenkins.url: https://jenkins.prod-preview.openshift.io f8a.analytics.recommender.api.url: https://recommender.api.openshift.io - kind: ConfigMap apiVersion: v1 metadata: name: launcher-clusters data: openshift-clusters.yaml: |- - id: starter-us-east-1 name: "Starter: US East (Virginia)" apiUrl: https://api.starter-us-east-1.openshift.com consoleUrl: https://console.starter-us-east-1.openshift.com type: starter - id: starter-us-west-1 name: "Starter: US West (California)" apiUrl: https://api.starter-us-west-1.openshift.com consoleUrl: https://console.starter-us-west-1.openshift.com type: starter - id: starter-us-west-2 name: "Starter: US West (Oregon)" apiUrl: https://api.starter-us-west-2.openshift.com consoleUrl: https://console.starter-us-west-2.openshift.com type: starter - id: starter-ca-central-1 name: "Starter: Canada (Central)" apiUrl: https://api.starter-ca-central-1.openshift.com consoleUrl: https://console.starter-ca-central-1.openshift.com type: starter - id: pro-us-east-1 name: "Pro: US East (N. Virginia)" apiUrl: https://api.pro-us-east-1.openshift.com consoleUrl: https://console.pro-us-east-1.openshift.com type: pro - id: pro-eu-west-1 name: "Pro: EU West (Ireland)" apiUrl: https://api.pro-eu-west-1.openshift.com consoleUrl: https://console.pro-eu-west-1.openshift.com type: pro - id: pro-ap-southeast-2 name: "Pro: Asia Pacific (Sydney)" apiUrl: https://api.pro-ap-southeast-2.openshift.com consoleUrl: https://console.pro-ap-southeast-2.openshift.com type: pro - kind: DeploymentConfig apiVersion: v1 metadata: name: launcher-backend annotations: configmap.fabric8.io/update-on-change: "launcher,launcher-clusters" spec: replicas: "${{BACKEND_REPLICAS}}" selector: service: launcher-backend strategy: resources: {} rollingParams: intervalSeconds: 1 maxSurge: 25% maxUnavailable: 25% timeoutSeconds: 600 updatePeriodSeconds: 1 type: Rolling template: metadata: labels: service: launcher-backend spec: containers: - env: - name: ARTEMIS_URL valueFrom: configMapKeyRef: name: launcher key: launcher.backend.artemis.url optional: true - name: ARTEMIS_USERNAME valueFrom: configMapKeyRef: name: launcher key: launcher.backend.artemis.username optional: true - name: ARTEMIS_PASSWORD valueFrom: configMapKeyRef: name: launcher key: launcher.backend.artemis.password optional: true - name: LAUNCHER_BOOSTER_CATALOG_REPOSITORY valueFrom: configMapKeyRef: name: launcher key: launcher.backend.catalog.git.repository - name: LAUNCHER_BOOSTER_CATALOG_REF valueFrom: configMapKeyRef: name: launcher key: launcher.backend.catalog.git.ref - name: LAUNCHER_BOOSTER_CATALOG_FILTER valueFrom: configMapKeyRef: name: launcher key: launcher.backend.catalog.filter optional: true - name: LAUNCHER_BACKEND_CATALOG_REINDEX_TOKEN valueFrom: configMapKeyRef: name: launcher key: launcher.backend.catalog.reindex.token optional: true - name: LAUNCHER_BACKEND_DOCUMENTATION_RELOAD_TOKEN valueFrom: configMapKeyRef: name: launcher key: launcher.backend.documentation.reload.token optional: true - name: LAUNCHER_GIT_PROVIDER valueFrom: configMapKeyRef: name: launcher key: launcher.git.provider optional: true - name: LAUNCHER_BACKEND_GIT_REPOSITORY_DESCRIPTION valueFrom: configMapKeyRef: name: launcher key: launcher.backend.git.repository.description optional: true - name: LAUNCHER_MISSIONCONTROL_OPENSHIFT_API_URL valueFrom: configMapKeyRef: name: launcher key: launcher.missioncontrol.openshift.api.url optional: true - name: LAUNCHER_MISSIONCONTROL_OPENSHIFT_CONSOLE_URL valueFrom: configMapKeyRef: name: launcher key: launcher.missioncontrol.openshift.console.url optional: true - name: LAUNCHER_MISSIONCONTROL_OPENSHIFT_USERNAME valueFrom: configMapKeyRef: name: launcher key: launcher.missioncontrol.openshift.username optional: true - name: LAUNCHER_MISSIONCONTROL_OPENSHIFT_PASSWORD valueFrom: configMapKeyRef: name: launcher key: launcher.missioncontrol.openshift.password optional: true - name: LAUNCHER_MISSIONCONTROL_OPENSHIFT_TOKEN valueFrom: secretKeyRef: name: launcher key: launcher.missioncontrol.openshift.token optional: true - name: LAUNCHER_MISSIONCONTROL_OPENSHIFT_IMPERSONATE_USER valueFrom: configMapKeyRef: name: launcher key: launcher.missioncontrol.openshift.impersonate.user optional: true - name: LAUNCHER_MISSIONCONTROL_GITHUB_USERNAME valueFrom: configMapKeyRef: name: launcher key: launcher.missioncontrol.github.username optional: true - name: LAUNCHER_MISSIONCONTROL_GITHUB_TOKEN valueFrom: configMapKeyRef: name: launcher key: launcher.missioncontrol.github.token optional: true - name: SENTRY_DSN valueFrom: configMapKeyRef: name: launcher key: launcher.backend.sentry.dsn optional: true - name: LAUNCHER_KEYCLOAK_URL valueFrom: configMapKeyRef: name: launcher key: launcher.keycloak.url - name: LAUNCHER_KEYCLOAK_REALM valueFrom: configMapKeyRef: name: launcher key: launcher.keycloak.realm - name: LAUNCHER_TRACKER_SEGMENT_TOKEN valueFrom: configMapKeyRef: name: launcher key: launcher.tracker.segment.token - name: LAUNCHER_BACKEND_ENVIRONMENT valueFrom: configMapKeyRef: name: launcher key: launcher.backend.environment - name: LAUNCHER_MISSIONCONTROL_OPENSHIFT_CLUSTERS_FILE value: /etc/fabric8-launcher/openshift-clusters.yaml - name: LAUNCHER_MISSIONCONTROL_OPENSHIFT_CLUSTERS_SUBSCRIPTION_TOKEN valueFrom: secretKeyRef: name: launcher key: launcher.missioncontrol.openshift.clusters.subscription.token optional: true - name: KEYCLOAK_SAAS_URL valueFrom: configMapKeyRef: name: launcher key: osio.keycloak.saas.url - name: OPENSHIFT_API_URL valueFrom: configMapKeyRef: name: launcher key: osio.openshift.api.url - name: WIT_URL valueFrom: configMapKeyRef: name: launcher key: osio.wit.url optional: true - name: AUTH_URL valueFrom: configMapKeyRef: name: launcher key: osio.auth.url optional: true - name: JENKINS_URL valueFrom: configMapKeyRef: name: launcher key: osio.jenkins.url optional: true - name: F8A_ANALYTICS_RECOMMENDER_API_URL valueFrom: configMapKeyRef: name: launcher key: f8a.analytics.recommender.api.url optional: true image: ${BACKEND_IMAGE}:${BACKEND_IMAGE_TAG} imagePullPolicy: Always name: launcher-backend ports: - containerPort: 8080 protocol: TCP resources: {} terminationMessagePath: /dev/termination-log volumeMounts: - mountPath: /etc/fabric8-launcher/ name: configmap-volume readinessProbe: httpGet: path: /health port: 8080 scheme: HTTP initialDelaySeconds: 15 periodSeconds: 20 timeoutSeconds: 10 livenessProbe: httpGet: path: /health port: 8080 scheme: HTTP initialDelaySeconds: 30 periodSeconds: 20 timeoutSeconds: 10 resources: requests: cpu: ${BACKEND_CPU_REQUEST} memory: ${BACKEND_MEMORY_REQUEST} limits: cpu: ${BACKEND_CPU_LIMIT} memory: ${BACKEND_MEMORY_LIMIT} dnsPolicy: ClusterFirst restartPolicy: Always securityContext: {} terminationGracePeriodSeconds: 30 volumes: - name: configmap-volume configMap: name: launcher-clusters test: false triggers: - type: ConfigChange - kind: Service apiVersion: v1 metadata: labels: service: launcher-backend name: launcher-backend spec: ports: - name: "8080" port: 8080 protocol: TCP targetPort: 8080 selector: service: launcher-backend sessionAffinity: None type: ClusterIP - kind: DeploymentConfig apiVersion: v1 metadata: name: launcher-frontend annotations: configmap.fabric8.io/update-on-change: "launcher" spec: replicas: "${{FRONTEND_REPLICAS}}" selector: service: launcher-frontend strategy: resources: {} rollingParams: intervalSeconds: 1 maxSurge: 25% maxUnavailable: 25% timeoutSeconds: 600 updatePeriodSeconds: 1 type: Rolling template: metadata: labels: service: launcher-frontend spec: containers: - image: ${FRONTEND_IMAGE}:${FRONTEND_IMAGE_TAG} imagePullPolicy: Always name: launcher-frontend ports: - containerPort: 8080 protocol: TCP env: - name: LAUNCHER_BACKEND_URL valueFrom: configMapKeyRef: name: launcher key: launcher.backend.url optional: true - name: LAUNCHER_KEYCLOAK_URL valueFrom: configMapKeyRef: name: launcher key: launcher.keycloak.url - name: LAUNCHER_KEYCLOAK_REALM valueFrom: configMapKeyRef: name: launcher key: launcher.keycloak.realm - name: LAUNCHER_KEYCLOAK_CLIENT_ID valueFrom: configMapKeyRef: name: launcher key: launcher.keycloak.client.id optional: true - name: LAUNCHER_TRACKER_SEGMENT_TOKEN valueFrom: configMapKeyRef: name: launcher key: launcher.tracker.segment.token optional: true - name: LAUNCHER_FRONTEND_SENTRY_DSN valueFrom: configMapKeyRef: name: launcher key: launcher.frontend.sentry.dsn optional: true resources: {} terminationMessagePath: /dev/termination-log readinessProbe: httpGet: path: /launch/wizard port: 8080 initialDelaySeconds: 15 timeoutSeconds: 10 periodSeconds: 20 livenessProbe: httpGet: path: /launch/wizard port: 8080 initialDelaySeconds: 30 timeoutSeconds: 10 periodSeconds: 20 resources: requests: cpu: ${FRONTEND_CPU_REQUEST} memory: ${FRONTEND_MEMORY_REQUEST} limits: cpu: ${FRONTEND_CPU_LIMIT} memory: ${FRONTEND_MEMORY_LIMIT} restartPolicy: Always dnsPolicy: ClusterFirst securityContext: {} terminationGracePeriodSeconds: 30 test: false triggers: - type: ConfigChange - kind: Service apiVersion: v1 metadata: labels: service: launcher-frontend name: launcher-frontend spec: ports: - name: "8080" port: 8080 protocol: TCP targetPort: 8080 selector: service: launcher-frontend sessionAffinity: None type: ClusterIP - apiVersion: v1 kind: ServiceAccount metadata: labels: service: configmapcontroller name: configmapcontroller - apiVersion: v1 kind: RoleBinding metadata: labels: service: configmapcontroller name: configmapcontroller-edit roleRef: name: edit subjects: - kind: ServiceAccount name: configmapcontroller - apiVersion: v1 kind: DeploymentConfig metadata: labels: service: configmapcontroller name: configmapcontroller spec: replicas: 1 revisionHistoryLimit: 2 selector: service: configmapcontroller strategy: rollingParams: timeoutSeconds: 7200 type: Rolling template: metadata: labels: service: configmapcontroller spec: containers: - env: - name: KUBERNETES_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace image: ${CONTROLLER_IMAGE}:${CONTROLLER_IMAGE_TAG} name: configmapcontroller serviceAccountName: configmapcontroller triggers: - type: ConfigChange - apiVersion: v1 kind: Route metadata: name: launcher spec: to: kind: Service name: launcher-frontend weight: 100 wildcardPolicy: None status: {} - apiVersion: v1 kind: Secret metadata: name: launcher data: launcher.missioncontrol.openshift.clusters.subscription.token: launcher.missioncontrol.openshift.token: ${LAUNCHER_MISSIONCONTROL_OPENSHIFT_TOKEN}