Skip to content
This repository was archived by the owner on Oct 20, 2021. It is now read-only.

Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Install Deeploy


This repository is part of the [complete installation guide](https://deeploy-ml.zendesk.com/hc/en-150/categories/360002889759-Install) and contains detailed instructions how to install the Deeploy Software Stack on Kubernetes using [Helm](https://helm.sh/).

Table of Contents

Install the Deeploy Software Stack

We assume that you now have the prerequisites and infrastructure ready as defined in the installation guide. From here we continue deploying the Deeploy software stack with dependencies. Make sure you are in the deeploy-core root folder.

Step 1. Create the Deeploy namespaces

Create all the Deeploy namespaces in kubernetes.

kubectl apply -f namespaces/

Step 2. Install Istio

Current Istio installation instructions are based on istio version 1.4.10 that should work on common cloud platforms. Always double check platform specific installation requirements and the istio helm installation instructions to check the latest installation instructions.

Installation steps:

  1. Download the Istio release:

    curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.4.10 sh -
  2. Install Istio CRD's:

    foriin ./istio-1.4.10/install/kubernetes/helm/istio-init/files/crd*yaml;do kubectl apply -f $i;done
  3. Install Istio:

    $ # A lighter template, with just pilot/gateway.# Based on install/kubernetes/helm/istio/values-istio-minimal.yaml
    helm template --namespace=istio-system \
    -f ./istio/values.yaml \
    istio-1.4.10/install/kubernetes/helm/istio \
    | sed -e "s/custom-gateway/cluster-local-gateway/g" -e "s/customgateway/clusterlocalgateway/g" \
    > ./istio.yaml
    kubectl apply -f istio.yaml
  4. Wait for a couple seconds and verify everything is in the running state by running:

    kubectl get pods --namespace istio-system

For additional information about installing Istio, see the official website

Step 3. Install Knative

  1. Install Knative CRDs using

    kubectl apply --filename ./knative/serving-crds.yml
  2. Install core components

    kubectl apply --filename ./knative/serving-core.yml
  3. Install the Knative Istio controller:

    kubectl apply --filename ./knative/serving-istio.yml

Step 4. Install Cert-manager

  1. Install cert-manager.

  2. (Optional) Set up auto-renewal through ACME. Only do this if you want to terminate TLS on this cluster. Make sure to generate two certificates as described above.

Step 5. Metrics Server

The Kubernetes Metrics Server is necessary for pod autoscaling. Most cloud providers pre-install the Metrics Server in your cluster, but some do not.

Validate that the metrics-server pod is running in the kube-system namespace. If not, install it.

Step 6. Deeploy Helm chart

Edit ./helm/deeploy/values.yaml:

Deeploy General Values:

ParameterDescriptionDefault
hostthe hostname on which you will be running deeploy""
license.typeThe type of license. Either "AWS" or "DEEPLOY""AWS"
license.deeployLicenseKeyif the license type is "DEEPLOY", this is the supplied Deeploy license key""
license.availabilityZoneif the license type is "AWS", this is the region where your cluster resides"eu-central-1"

Deeploy Image Repository Values:

Currently Deeploy is available from two image repositories

  • AWS Marketplace (current default): 709825985650.dkr.ecr.us-east-1.amazonaws.com/deeploy/deeploy
  • Docker: docker.io/deeployml
ParameterDescriptionDefault
images.registrythe registry to pull the Deeploy images from"709825985650.dkr.ecr.us-east-1.amazonaws.com/deeploy/"
images.paththe path to the DeeployML registry"/deeploy"
images.tagthe version tag of the deeploy deploymentsame as application version
images.usernameif the license type is "DEEPLOY", the supplied username for the Docker registry""
images.passwordf the license type is "DEEPLOY", the supplied password for the Docker registry""

Deeploy Database Values:

ParameterDescriptionDefault
database.hostthe hostname of the database server""
database.portthe port for use of the database server5432
database.usernamethe username to access the database. Note: this user needs to be a superuser""
database.passwordthe password to access the database server""
database.ssl.enabledwhether to enable SSL on the database. If true, must also set database.ssl.ca.false
database.ssl.cathe CA of your database provider. Must be set if database.ssl.enabled is true. E.g. for AWS, see this guide.""

Deeploy Remote Blob Storage Values:

For Remote Blob Storage you have two options:

  1. Use Remote Blob Storage (recommended). Deeploy currently supports AWS S3, Google Cloud Storage & Azure Blob Storage
  2. Don't configure remote Storage (not recommended). Deeploy spawns an on-cluster Minio service. This is not recommended, as it makes Deeploy statefull on the cluster. If you do want to use it, set minio.enabled to true.
ParameterDescriptionDefault
remoteBlobStorage.enabledwhether to use off-cluster Blob storage. If enabled, set minio.enabled to falsetrue
minio.enabledwhether to use on-cluster S3 storage. If enabled, set remoteBlobStorage.enabled to falsefalse
remoteBlobStorage.typestorage service to use with Deeploy. One of AWS_S3, GCS, AZURE."AWS_S3"
remoteBlobStorage.aws.bucketNamename of the remote S3 storage bucket to use""
remoteBlobStorage.aws.s3AccessKeyaccess key for the S3 server. Only set if remoteBlobStorage.type is AWS_S3.""
remoteBlobStorage.aws.s3SecretKeysecret key for the S3 server Only set if remoteBlobStorage.type is AWS_S3.""
remoteBlobStorage.gcp.gcloudApplicationCredentialsJsonthe json file with the credentials for the GCP service account. Only set if remoteBlobStorage.type is GCS.""
remoteBlobStorage.gcp.bucketNamename of the remote GS storage bucket to use""
remoteBlobStorage.azure.subscriptionIdthe id of the subscription that hosts the storage account. Only set if remoteBlobStorage.type is AZURE.""
remoteBlobStorage.azure.containerNamethe container name to use. Only set if remoteBlobStorage.type is AZURE.""
remoteBlobStorage.azure.storageAccountNamethe name of the Azure Storage Account. Only set if remoteBlobStorage.type is AZURE.""
remoteBlobStorage.azure.tenantIdthe Tenant ID of the Azure storage service. Only set if remoteBlobStorage.type is AZURE.""
remoteBlobStorage.azure.clientIdthe Client ID of the Azure storage service. Only set if remoteBlobStorage.type is AZURE.""
remoteBlobStorage.azure.clientSecretthe Client Secret of the Azure storage service. Only set if remoteBlobStorage.type is AZURE.""

Deeploy SMTP Values:

ParameterDescriptionDefault
email.smtpHostthe hostname of the smtp server""
email.portthe port for use of the smtp server""
email.usernamethe username to access the smtp server""
email.passwordthe password to access the smtp server""
email.fromAddressthe email address for Deeploy to send emails from, i.e. deeploy@example.com""

Deeploy Monitoring Values:

The Deeploy Monitoring feature sends anonimized usage data back to Deeploy. This helps us to improve the product.

ParameterDescriptionDefault
monitoring.enabledwhether to enable monitoringfalse
monitoring.credentials.usernameusername for the monitoring server""
monitoring.credentials.passwordpassword for the monitoring server""

Deeploy Security Values:

ParameterDescriptionDefault
security.tls.enabledwhether to enable TLStrue
security.adminCredentials.firstNamefirst name of the main admin user""
security.adminCredentials.lastNamelast name of the main admin user""
security.adminCredentials.emailemail of the main admin user""
security.keyManagement.kmsTypeeither AWS or AZURE""
security.keyManagement.aws.keyIdID of a KMS key used to encrypt/decrypt. Only set if security.keyManagement.kmsType is AWS.""
security.keyManagement.aws.accessKeyIAM Access Key of an account that has access to the key. Only set if security.keyManagement.kmsType is AWS.""
security.keyManagement.aws.secretKeyIAM Secret Key of an account that has access to the key. Only set if security.keyManagement.kmsType is AWS.""
security.keyManagement.azure.keyIdID of the Azure Vault key. Only set if security.keyManagement.kmsType is AZURE.""
security.keyManagement.azure.vaultNamename of the Azure vault. Only set if security.keyManagement.kmsType is AZURE.""
security.keyManagement.azure.clientIdthe Client ID of the client using the Azure Vault service. Only set if security.keyManagement.kmsType is AZURE.""
security.keyManagement.azure.clientSecretthe Client Secret of the client using the Azure Vault service. Only set if security.keyManagement.kmsType is AZURE.""
security.keyManagement.azure.tenantIdthe Tenant ID of the Azure Vault service. Only set if security.keyManagement.kmsType is AZURE.""
  1. Deploy the Deeploy stack using

    helm install -f ./helm/deeploy/values.yaml deeploy ./helm/deeploy --namespace deeploy

    Important: This might print out the following line. This is expected behavior and not a bug:

    manifest_sorter.go:192: info: skipping unknown hook: "crd-install"
  2. Add the s3 secret to the default service account:

    kubectl edit sa default -n deeploy

    and add the s3-secret name

    secrets:
    - name: default-...
    - name: s3-secret

    Close and save.

Create first admin user.

Troubelshooting

Permission Denied errors on GKE

When running on GKE (Google Kubernetes Engine), you may encounter a ‘permission denied’ error when creating some of the resources. This is a nuance of the way GKE handles RBAC and IAM permissions, and as such you should ‘elevate’ your own privileges to that of a ‘cluster-admin’ before running the above commands. If you have already run the above commands, you should run them again after elevating your permissions.

About

Installation files for Deeploy Core

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages