|
| 1 | +--- |
| 2 | +title:"Hybrid GitOps Runtime installation" |
| 3 | +description:"Provision Hybrid GitOps Runtimes" |
| 4 | +group:installation |
| 5 | +toc:false |
| 6 | +--- |
| 7 | + |
| 8 | +Install the Hybrid Runtime for GitOps through a Helm chart. |
| 9 | +>Helm installation for Hybrid GitOps is currently in Alpha. |
| 10 | +
|
| 11 | +* Access mode for runtime |
| 12 | + Helm install supports both tunnel-based and ingress-based access modes. The tunnel-based access mode is the default access mode. <br> |
| 13 | + Ingress-based access modes require an ingress controller to be configured before the installation, and additional flags such as the ingress host and class to be supplied as part of the install command. |
| 14 | + |
| 15 | +* Shared configuration repository |
| 16 | + The Alpha version assumes that you already have a shared configuration repository for your account. |
| 17 | + If this is not the case, contact support to help you set one up. |
| 18 | + |
| 19 | + |
| 20 | + |
| 21 | +##Prerequisites |
| 22 | + |
| 23 | +*[Minimum requirements]({{site.baseurl}}/docs/installation/gitops/hybrid-gitops/#minimum-system-requirements) for installation |
| 24 | +* Git provider requirements: |
| 25 | +*[Runtime token with the required scopes]({{site.baseurl}}/docs/reference/git-tokens/#git-runtime-token-scopes). You will need it after installation to update runtime credentials |
| 26 | +*[Personal Access Token (PAT)]({{site.baseurl}}/docs/reference/git-tokens/#git-personal-tokens) for Git-based actions |
| 27 | +* Server URLs for on-premises Git providers |
| 28 | +* (Optional, for ingress-based runtimes only) configuration for ingress controllers: |
| 29 | +*[Ambasador ingress configuration]({{site.baseurl}}/docs/installation/gitops/hybrid-gitops/#ambassador-ingress-configuration) |
| 30 | +*[AWS ALB ingress configuration]({{site.baseurl}}/docs/installation/gitops/hybrid-gitops/#alb-aws-ingress-configuration) |
| 31 | +*[Istio ingress configuration]({{site.baseurl}}/docs/installation/gitops/hybrid-gitops/#istio-ingress-configuration) |
| 32 | +*[NGINX Enterprise ingress configuration]({{site.baseurl}}/docs/installation/gitops/hybrid-gitops/#nginx-enterprise-ingress-configuration) |
| 33 | +*[NGINX Community ingress configuration]({{site.baseurl}}/docs/installation/gitops/hybrid-gitops/#nginx-community-version-ingress-configuration) |
| 34 | +*[Traefik ingress configuration]({{site.baseurl}}/docs/installation/gitops/hybrid-gitops/#traefik-ingress-configuration) |
| 35 | + |
| 36 | + |
| 37 | +##Install Hybrid GitOps runtime with Helm |
| 38 | +Follow the steps to install Hybrid GitOps via Helm.<br> |
| 39 | +The Codefresh`values.yaml` is located[here](https://github.com/codefresh-io/gitops-runtime-helm/tree/main/charts/gitops-runtime){:target="\_blank"}. |
| 40 | +<br><br> |
| 41 | +Ingress-based runtimes require you to add ingress-specific flags to the install command, including the ingress host and the ingress class. |
| 42 | +The ingress host is the IP address or host name of the ingress controller component. |
| 43 | +The ingress class is the ingress class of the ingress controller, for example,`nginx` for the NGINX ingress controller. |
| 44 | + |
| 45 | +<br> |
| 46 | + |
| 47 | + |
| 48 | +1. Do one of the following: |
| 49 | +* If this is your first Hybrid GitOps installation, in the Welcome page, select**+ Install Runtime**. |
| 50 | +* If you have already provisioned a Hybrid GitOps Runtime, to provision additional runtimes, in the Codefresh UI: |
| 51 | + On the toolbar, click the**Settings** icon, and from Runtimes in the sidebar, select[**GitOps Runtimes**](https://g.codefresh.io/2.0/account-settings/runtimes){:target="\_blank"}. |
| 52 | +1. Click**+ Add Runtimes**, and then select**Hybrid Runtimes**. |
| 53 | +1. Click**Generate** to generate your API key. |
| 54 | +1. If needed, select**Customize runtime values**, and define the**Runtime Name** and**Namespace**. |
| 55 | +>The Namespace must be identical to the Runtime Name. The default names are`codefresh` for both. |
| 56 | +1. Copy and run the command to the add the repository for the Helm chart: |
| 57 | +`helm repo add <helm-repo-name> https://chartmuseum.codefresh.io/gitops-runtime` <br> |
| 58 | +`helm repo update` |
| 59 | + where: |
| 60 | +`<helm-repo-name>` is the name of the repository to which to add the runtime Helm chart. For example,`cf-gitops-runtime`. |
| 61 | +1. Copy and run the command to install the runtime Helm chart: |
| 62 | + The commands differ depending on the access mode. An ingress-based runtime requires additional flags.<br> |
| 63 | +**Tunnel-based install chart command:**<br> |
| 64 | +`helm upgrade --install <helm-release-name> --create-namespace --namespace <namespace> --set global.codefresh.accountId=<codefresh-account-id> --set global.codefresh.userToken.token=<codefresh-api-key> --set global.runtime.name=<runtime-name> <helm-repo-name>/gitops-runtime --devel` |
| 65 | + |
| 66 | +**Ingress-based install chart command:**<br> |
| 67 | + `helm upgrade --install <helm-release-name> --create-namespace --namespace <namespace> --set global.codefresh.accountId=<codefresh-account-id> --set global.codefresh.userToken.token=<codefresh-api-key> --set global.runtime.name=<runtime-name> <helm-repo-name>/gitops-runtime --set global.runtime.ingress.enabled=true --set "global.runtime.ingress.hosts[0]"=<ingress-host> --set global.runtime.ingress.className=<ingress-class> --devel` |
| 68 | +
|
| 69 | +>Unless otherwise indicated, values are automatically populated by Codefresh. |
| 70 | + |
| 71 | +where: |
| 72 | +* `<helm-release-name>` is the name of the Helm release. |
| 73 | +* `<namespace>` is the namespace in which to install the Hybrid GitOps runtime, either `codefresh`, or the custom name you defined. |
| 74 | +* `<codefresh-account-id>` is your Codefresh account ID. |
| 75 | +* `<codefresh-api-key>` is the generated API key. |
| 76 | +* `<runtime-name>` is the name of the runtime, either `codefresh`, or the custom name you defined. |
| 77 | +* `gitops-runtime` is the chart name defined by Codefresh. |
| 78 | +* `global.runtime.ingress.enabled=true` is mandatory for _ingress-based runtimes_, and indicates that the runtime is ingress-based. |
| 79 | +* `<ingress-host>` is mandatory for _ingress-based runtimes_, and is the IP address or host name of the ingress controller component. |
| 80 | +* `<ingress-class>` is mandatory for _ingress-based runtimes_, and is the ingress class of the ingress controller. For example, `nginx` for the NGINX ingress controller. |
| 81 | + |
| 82 | +1. Verify that the deployment is up and running after a couple of minutes. |
| 83 | +1. Define your Git provider: |
| 84 | +`cf integration git add default --runtime <runtime-name> --api-url <api-url> --provider <provider>` |
| 85 | + where: |
| 86 | + *`<runtime-name>` is the name of the runtime, either`codefresh`, or the custom name you defined. |
| 87 | + *`<api-url>` is the URL of the Git provider, and can be one of the following: |
| 88 | + * GitHub Cloud:`https://api.github.com` |
| 89 | + * GitHub Enterprise:`https://<server-url>/api/v3` |
| 90 | + * GitLab Cloud:`https://gitlab.com/api/v4` |
| 91 | + * GitLab Server:`<server-url>/api/v4` |
| 92 | + * Bitbucket Cloud:`https://api.bitbucket.org/2.0` |
| 93 | + * Bitbucket Server:`<server-url>/rest/api/1.0` |
| 94 | + *`<provider>` is the Git provider for the runtime. The same provider is used to install additional runtimes in the same account. Can be one of the following: |
| 95 | + * GitHub and GitHub Enterprise:`github` |
| 96 | + * GitLab Cloud and GitLab Server:`gitlab` |
| 97 | + * Bitbucket Cloud:`bitbucket` |
| 98 | + * Bitbucket Server:`bitbucket-server` |
| 99 | +1. When the installation is complete, go to the**List View**, and select the new runtime. |
| 100 | +1. From the context menu on the right, select**Update Git Runtime Credentials**. |
| 101 | + |
| 102 | +{% include |
| 103 | +image.html |
| 104 | +lightbox="true" |
| 105 | +file="/images/runtime/gitops-hybrid-helm-update-token.png" |
| 106 | +url="/images/runtime/gitops-hybrid-helm-update-token.png" |
| 107 | +alt="Update Git Runtime Credentials after installation" |
| 108 | +caption="Update Git Runtime Credentials after installation" |
| 109 | + max-width="80%" |
| 110 | +%} |
| 111 | + |
| 112 | +{:start="11"} |
| 113 | +1. Paste the token you created and click**Update Credentials**. |
| 114 | +1. Now add your personal access token, or if your admin has set up OAuth2, authorize access. |
| 115 | +* Click your avatar, select[**Git Personal Access Token**](https://g.codefresh.io/2.0/git-personal-access-token){:target="\_blank"}. |
| 116 | +* Proceed as needed. For details, see[Authorize Git access in Codefresh]({{site.baseurl}}/docs/administration/user-self-management/manage-pats/#authorize-git-access-in-codefresh). |
| 117 | +1. If you don't have the shared configuration repository for GitOps runtimes, contact support. |
| 118 | + >For the Alpha, we assume that you already have a shared configuration repository for your account. |
| 119 | +1. Optional.[Create a Git Source]({{site.baseurl}}/docs/installation/gitops/git-sources/#create-a-git-source) for the runtime. |
| 120 | +1. Optional. Required for ingress-based only. If relevant, complete the configuration for these ingress controllers: |
| 121 | +*[ALB AWS: Alias DNS record in route53 to load balancer]({{site.baseurl}}/docs/installation/gitops/hybrid-gitops/#create-an-alias-to-load-balancer-in-route53) |
| 122 | +*[Istio: Configure cluster routing service]({{site.baseurl}}/docs/installation/gitops/hybrid-gitops/#cluster-routing-service) |
| 123 | +*[NGINX Enterprise ingress controller: Patch certificate secret]({{site.baseurl}}/docs/installation/gitops/hybrid-gitops/#patch-certificate-secret) |
| 124 | +1. Optional. Required for ingress-based only. Create and register Git integrations using these commands: |
| 125 | +`cf integration git add default --runtime <RUNTIME-NAME> --api-url <API-URL>` |
| 126 | +`cf integration git register default --runtime <RUNTIME-NAME> --token <RUNTIME-AUTHENTICATION-TOKEN>` |
| 127 | + |
| 128 | + |
| 129 | +##Related articles |
| 130 | +[Shared configuration repo for GitOps Runtimes]({{site.baseurl}}/docs/reference/shared-configuration/) |
| 131 | +[Add Git Sources to GitOps Runtimes]({{site.baseurl}}/docs/installation/gitops/git-sources/) |
| 132 | +[GitOps Runtime architecture]({{site.baseurl}}/docs/installation/runtime-architecture/#gitops-runtime-architecture) |
| 133 | + |