blocks: - name: hop-web-ingress content: apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: hop-web-ingress namespace: hop annotations: cert-manager.io/cluster-issuer: cluster-issuer kubernetes.io/tls-acme: "true" spec: ingressClassName: public tls: - hosts: - "{{ $cndi.get_arg(hostname) }}" secretName: cluster-issuer-private-key rules: - host: "{{ $cndi.get_arg(hostname) }}" http: paths: - path: / pathType: Prefix backend: service: name: hop-web port: name: http prompts: - $cndi.get_block(https://raw.githubusercontent.com/polyseam/cndi/main/blocks/common/cluster/core-prompts.yaml): {} - $cndi.get_block(https://raw.githubusercontent.com/polyseam/cndi/main/blocks/{{ $cndi.get_prompt_response(deployment_target_provider) }}/core-prompts.yaml): {} - name: deploy_hop_ingress default: true message: >- Do you want to expose Hop to the web? type: Confirm - name: hop_hostname message: "Please enter the domain name you want hop to be accessible on:" default: hop.example.com type: Input validators: - hostname # FQDN condition: - "{{ $cndi.get_prompt_response(deploy_hop_ingress) }}" - == - true - name: hop_server_password message: Please enter the hop server password you want to use for hop default: admin type: Secret outputs: cndi_config: cndi_version: v3 project_name: "{{ $cndi.get_prompt_response(project_name) }}" provider: "{{ $cndi.get_prompt_response(deployment_target_provider) }}" distribution: "{{ $cndi.get_prompt_response(deployment_target_distribution) }}" region: "{{ $cndi.get_prompt_response(region) }}" infrastructure: cndi: $cndi.get_block(https://raw.githubusercontent.com/polyseam/cndi/main/blocks/common/cluster/observability-config.yaml): condition: - "{{ $cndi.get_prompt_response(deploy_grafana_ingress) }}" - == - true $cndi.get_block(https://raw.githubusercontent.com/polyseam/cndi/main/blocks/common/cluster/argocd-config.yaml): condition: - "{{ $cndi.get_prompt_response(deploy_argocd_ingress) }}" - == - true cert_manager: email: "{{ $cndi.get_prompt_response(cert_manager_email) }}" external_dns: $cndi.get_block(https://raw.githubusercontent.com/polyseam/cndi/main/blocks/external-dns/config/{{ $cndi.get_prompt_response(dns_provider) }}.yaml): condition: - "{{ $cndi.get_prompt_response(enable_external_dns) }}" - == - true nodes: $cndi.get_block(https://raw.githubusercontent.com/polyseam/cndi/main/blocks/{{ $cndi.get_prompt_response(deployment_target_provider) }}/basic-node-pool.yaml): {} cluster_manifests: hop-server-secret: apiVersion: v1 kind: Secret metadata: name: hop-server namespace: hop type: Opaque stringData: pass: $cndi_on_ow.seal_secret_from_env_var(HOP_SERVER_PASSWORD) hop-server-pvc: apiVersion: v1 kind: PersistentVolumeClaim metadata: name: hop-server-pvc namespace: hop spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi hop-web-ingress: $cndi.get_block(hop-web-ingress): args: ingress_name: hop-web-ingress hostname: "{{ $cndi.get_prompt_response(hop_hostname) }}" condition: - "{{ $cndi.get_prompt_response(deploy_hop_ingress) }}" - == - true external-dns-secret: $cndi.get_block(https://raw.githubusercontent.com/polyseam/cndi/main/blocks/external-dns/secret/{{ $cndi.get_prompt_response(dns_provider) }}.yaml): condition: - "{{ $cndi.get_prompt_response(enable_external_dns) }}" - == - true hop-ns: apiVersion: v1 kind: Namespace metadata: name: hop applications: hop: targetRevision: HEAD destinationNamespace: hop repoURL: "https://github.com/apache/hop.git" path: helm/hop values: server: persistence: enabled: true existingClaim: hop-server-pvc env: $cndi.get_block(https://raw.githubusercontent.com/polyseam/cndi/main/blocks/common/git-credentials-{{ $cndi.get_prompt_response(git_credentials_mode) }}-env.yaml): {} $cndi.get_block(https://raw.githubusercontent.com/polyseam/cndi/main/blocks/{{ $cndi.get_prompt_response(deployment_target_provider) }}/env.yaml): {} $cndi.get_block(https://raw.githubusercontent.com/polyseam/cndi/main/blocks/common/cluster/env.yaml): {} $cndi.comment(hop-heading): Hop Connection Parameters HOP_SERVER_PASSWORD: "{{ $cndi.get_prompt_response(hop_server_password) }}" readme: project_name: "# {{ $cndi.get_prompt_response(project_name) }}" $cndi.get_string(https://raw.githubusercontent.com/polyseam/cndi/main/blocks/common/cluster/core-readme.md): {} $cndi.get_string(https://raw.githubusercontent.com/polyseam/cndi/main/blocks/{{ $cndi.get_prompt_response(deployment_target_provider) }}/core.md): {} $cndi.get_string(https://raw.githubusercontent.com/polyseam/cndi/main/blocks/{{ $cndi.get_prompt_response(deployment_target_provider) }}/{{ $cndi.get_prompt_response(deployment_target_distribution) }}.md): {} hop: | # Apache Hop Deployment Guide This Template deploys a Standalone production ready [Apache Hop](https://hop.apache.org) application on a Kubernetes cluster using Helm. Apache Hop (Hop Orchestration Platform) is an open-source data integration platform designed to facilitate efficient and flexible data transformation and orchestration. With its lightweight, extensible architecture, Apache Hop supports a wide range of data sources and destinations, making it ideal for complex data pipelines and ETL processes. ## Customizing Your Deployment Tailor your Apache Hop deployment to your specific needs by adjusting the values in the `values.yaml` file. Important configuration options include: - **Persistence:** Activate and configure persistent storage options for Apache Hop projects and workflows. - **Database:** Set up external database connections for storing metadata or handling transformation data more effectively. - **Resources:** Define CPU and memory limits and requests to optimize the performance of Apache Hop pods. - **Ingress:** Adjust Ingress configurations to facilitate external access to the Apache Hop Web interface. For a comprehensive list of all configuration options, refer to the Helm chart's documentation or the [values.yaml](https://github.com/apache/hop/blob/master/helm/hop/values.yaml) file within the chart repository. ## Verifying Apache Hop Once Apache Hop is deployed and access is configured (via port forwarding, Ingress, or ExternalDNS), it's important to verify that the platform is accessible: **Access the Web Interface**: - Open a web browser and navigate to the domain set up for Apache Hop, e.g., `https://hop.yourdomain.com`. - The Apache Hop browser application should appear, indicating successful deployment and accessibility. Ensure to adapt the steps and URLs mentioned to fit the specific setup and configuration of your Apache Hop environment.