Skip to content

Latest commit

 

History

History
90 lines (75 loc) · 2.71 KB

deployment.org

File metadata and controls

90 lines (75 loc) · 2.71 KB

Deployment

Components

Cluster-API

The backend for managing the servers. This is paired with the Packet (Equinix Metal) provider for provisioning servers.

External-DNS

This is the backend for communicating to a DNS provider for managing the records for each instance.

Pair

The frontend and backend for managing Pair instances.

Notes

To see the configuration for the production Pair cluster, please check out the infra/cluster-api folder.

Preparation

In this deployment, we presume the following things of your cluster:

Install Cert-Manager:

kubectl apply -f https://github.com/jetstack/cert-manager/releases/download/v1.3.1/cert-manager.yaml

Install Helm-Operator:

helm repo add fluxcd https://charts.fluxcd.io
kubectl apply -f https://raw.githubusercontent.com/fluxcd/helm-operator/1.2.0/deploy/crds.yaml
helm upgrade -i helm-operator --create-namespace fluxcd/helm-operator \
    --namespace helm-operator \
    --set helm.versions=v3

(Management with Helm-Operator is recommended but optional)

Install Cluster-API, with support for Packet/Equinix Metal:

export PACKET_API_KEY="my-api-key"
clusterctl init --infrastructure packet

Install External-DNS. Installation can differ from where it’s being installed. The production external-dns is available in external-dns.org.

Installation

Create a namespace:

kubectl create ns sharingio-pair

A basic installation looks like this:

apiVersion: helm.fluxcd.io/v1
kind: HelmRelease
metadata:
  name: sharingio-pair
  namespace: sharingio-pair
spec:
  releaseName: sharingio-pair
  chart:
    git: https://github.com/sharingio/pair.git
    ref: 2021.05.28.1515
    path: charts/sharingio-pair
  values:
    timezone: Pacific/Auckland
    instance:
      kubernetesVersion: 1.21.0
      environmentRepository: registry.gitlab.com/sharingio/environment/ii
      environmentVersion: 2021.11.12.1719
      nodeSize: c1.small.x86
    sessionSecret: pairpairpairpair
    githubOAuth:
      id: my-github-oauth-app-id
      secret: my-github-oauth-app-secret
    equinixMetal:
      projectID: my-equinix-metal-project-id
    ingress:
      enabled: true
      certmanager:
        enabled: true
      hosts:
        - host: pair.sharing.io
          paths:
            - /

To find ways of configuring your Pair, check out the configuration docs.