Dec 7, 2018

@kyma-bot kyma-bot released this Nov 20, 2018

Assets 4

Local Kyma installation

Use the following command to run Kubernetes locally via Minikube:
$ ./installation/scripts/minikube.sh --domain "kyma.local" --vm-driver "hyperkit"

Kyma installation requires increased permissions granted by the cluster-admin role. To bind the role to the default ServiceAccount, run the following command:
$ kubectl apply -f ./installation/resources/default-sa-rbac-role.yaml

Wait until the kube-dns Pod is ready. Run this script to setup Tiller:
$ ./installation/scripts/install-tiller.sh

Configure the Kyma installation using the local configuration file:
$ kubectl apply -f https://github.com/kyma-project/kyma/releases/download/0.5.0/kyma-config-local.yaml

To trigger the installation process, label the kyma-installation custom resource:
$ kubectl label installation/kyma-installation action=install

Track progress of the installation using the following script:
$ ./installation/scripts/is-installed.sh

Installation on Google Kubernetes Engine

  1. Make sure that you have gcloud tool installed. Set environment variables for your Google project identifier and your cluster name. You can keep your demo cluster name but your Google project identifier must be changed. Then you can spin up the cluster:

    export CLUSTER_NAME=demo
    export PROJECT=YOUR_PROJECT_ID
    
    gcloud beta container --project "$PROJECT" clusters \
    create "$CLUSTER_NAME" --zone "europe-west1-b" \
    --cluster-version "1.10.7" --machine-type "n1-standard-2" \
    --addons HorizontalPodAutoscaling,HttpLoadBalancing,KubernetesDashboard 
    
  2. Install Tiller:

    kubectl apply -f https://raw.githubusercontent.com/kyma-project/kyma/0.5.0/installation/resources/tiller.yaml
    
  3. Download the release and replace the placeholders with the proper values. The placeholders are the upper case variables surrounded by double underscore, such as __DOMAIN__. These are the mandatory values to change:

    • __DOMAIN__ which specifies your domain, for example kyma.example.com.
    • __TLS_CERT__ which is a PEM format, base64-encoded TLS certifcate.
    • __TLS_KEY__ which is a base64-encoded TLS private key.

    If you don't know how to set other values, replace them with an empty string.

    You can use this script to set only three mandatory values:

    export DOMAIN=kyma.example.com
    export TLS_CERT=base64_PEM_TLS_certificate
    export TLS_KEY=base64_TLS_private_key
    cat kyma-config-cluster.yaml | sed -e "s/__DOMAIN__/$DOMAIN/g" |sed -e "s/__TLS_CERT__/$TLS_CERT/g" | sed -e "s/__TLS_KEY__/$TLS_KEY/g" |sed -e "s/__.*__//g" >my-kyma.yaml
    

    As a result, you get the my-kyma.yaml file which you can deploy on the GKE cluster.

  4. Configure kubectl to use your new cluster, add yourself as the cluster admin, and deploy Kyma installer with your configuration.

    gcloud container clusters get-credentials $CLUSTER_NAME --zone europe-west1-b --project $PROJECT
    
    kubectl create clusterrolebinding cluster-admin-binding --clusterrole=cluster-admin --user=$(gcloud config get-value account)
    
    kubectl apply -f my-kyma.yaml
    
  5. Check if tiller and kyma-installer Pods are up and running. Start the installation process with this command:

    kubectl label installation/kyma-installation action=install
    

    Watch installation progress:

    kubectl logs -n kyma-installer [kyma-installer-pod] -f
    
  6. Configure DNS for two load balancers created by the Kyma installation, which are istio-ingressgateway and core-nginx-ingress-controller. You need the following DNS records:

    • *.kyma.example.com A EXTERNAL_PUBLIC_IP
    • gateway.kyma.example.com A REMOTE_ENV_IP

    You can use this script to get external IP addresses for load balancers:

    export EXTERNAL_PUBLIC_IP=$(kubectl get service -n istio-system istio-ingressgateway -o jsonpath="{.status.loadBalancer.ingress[0].ip}")
    
    export REMOTE_ENV_IP=$(kubectl get service -n kyma-system application-connector-nginx-ingress-controller -o jsonpath="{.status.loadBalancer.ingress[0].ip}")
    
    gcloud dns --project=$PROJECT record-sets transaction start --zone=$DNS_ZONE
    
    gcloud dns --project=$PROJECT record-sets transaction add $EXTERNAL_PUBLIC_IP --name=\*.$DOMAIN. --ttl=60 --type=A --zone=$DNS_ZONE
    
    gcloud dns --project=$PROJECT record-sets transaction add $REMOTE_ENV_IP --name=\gateway.$DOMAIN. --ttl=60 --type=A --zone=$DNS_ZONE
    
    gcloud dns --project=$PROJECT record-sets transaction execute --zone=$DNS_ZONE
    
    

Changelog

Application Connector

Serverless

Service Catalog

Cluster

Eventing

Security

Service Mesh

Installation

Monitoring

  • #1531 Enable webhook configuration in alertmanager(@venturasr)
  • #1503 Adjust alert rule to monitor all pods in *-system namespace (@joek)
  • #1463 Set as default http-metrics instead of https-metrics for exporter-kubelets (@venturasr)
  • #1195 Prometheus: maintain data across deploymentsand version upgrades (@PK85)

Logging

Tracing

Console

Documentation

Community

CI

Committers: 46

Pre-release
Pre-release

@kyma-bot kyma-bot released this Nov 16, 2018

Assets 4

Local Kyma installation

Use the following command to run Kubernetes locally via Minikube:
$ ./installation/scripts/minikube.sh --domain "kyma.local" --vm-driver "hyperkit"

Kyma installation requires increased permissions granted by the cluster-admin role. To bind the role to the default ServiceAccount, run the following command:
$ kubectl apply -f ./installation/resources/default-sa-rbac-role.yaml

Wait until the kube-dns Pod is ready. Run this script to setup Tiller:
$ ./installation/scripts/install-tiller.sh

Configure the Kyma installation using the local configuration file:
$ kubectl apply -f https://github.com/kyma-project/kyma/releases/download/0.5-rc2/kyma-config-local.yaml

To trigger the installation process, label the kyma-installation custom resource:
$ kubectl label installation/kyma-installation action=install

Track progress of the installation using the following script:
$ ./installation/scripts/is-installed.sh

Installation on Google Kubernetes Engine

  1. Make sure that you have gcloud tool installed. Set environment variables for your Google project identifier and your cluster name. You can keep your demo cluster name but your Google project identifier must be changed. Then you can spin up the cluster:

    export CLUSTER_NAME=demo
    export PROJECT=YOUR_PROJECT_ID
    
    gcloud beta container --project "$PROJECT" clusters \
    create "$CLUSTER_NAME" --zone "europe-west1-b" \
    --cluster-version "1.10.7-gke.11" --machine-type "n1-standard-2" \
    --addons HorizontalPodAutoscaling,HttpLoadBalancing,KubernetesDashboard 
    
  2. Install Tiller:

    kubectl apply -f https://raw.githubusercontent.com/kyma-project/kyma/0.5-rc2/installation/resources/tiller.yaml
    
  3. Download the release and replace the placeholders with the proper values. The placeholders are the upper case variables surrounded by double underscore, such as __DOMAIN__. These are the mandatory values to change:

    • __DOMAIN__ which specifies your domain, for example kyma.example.com.
    • __TLS_CERT__ which is a PEM format, base64-encoded TLS certifcate.
    • __TLS_KEY__ which is a base64-encoded TLS private key.

    If you don't know how to set other values, replace them with an empty string.

    You can use this script to set only three mandatory values:

    export DOMAIN=kyma.example.com
    export TLS_CERT=base64_PEM_TLS_certificate
    export TLS_KEY=base64_TLS_private_key
    cat kyma-config-cluster.yaml | sed -e "s/__DOMAIN__/$DOMAIN/g" |sed -e "s/__TLS_CERT__/$TLS_CERT/g" | sed -e "s/__TLS_KEY__/$TLS_KEY/g" |sed -e "s/__.*__//g" >my-kyma.yaml
    

    As a result, you get the my-kyma.yaml file which you can deploy on the GKE cluster.

  4. Configure kubectl to use your new cluster, add yourself as the cluster admin, and deploy Kyma installer with your configuration.

    gcloud container clusters get-credentials $CLUSTER_NAME --zone europe-west1-b --project $PROJECT
    
    kubectl create clusterrolebinding cluster-admin-binding --clusterrole=cluster-admin --user=$(gcloud config get-value account)
    
    kubectl apply -f my-kyma.yaml
    
  5. Check if tiller and kyma-installer Pods are up and running. Start the installation process with this command:

    kubectl label installation/kyma-installation action=install
    

    Watch installation progress:

    kubectl logs -n kyma-installer [kyma-installer-pod] -f
    
  6. Configure DNS for two load balancers created by the Kyma installation, which are istio-ingressgateway and core-nginx-ingress-controller. You need the following DNS records:

    • *.kyma.example.com A EXTERNAL_PUBLIC_IP
    • gateway.kyma.example.com A REMOTE_ENV_IP

    You can use this script to get external IP addresses for load balancers:

    export EXTERNAL_PUBLIC_IP=$(kubectl get service -n istio-system istio-ingressgateway -o jsonpath="{.status.loadBalancer.ingress[0].ip}")
    
    export REMOTE_ENV_IP=$(kubectl get service -n kyma-system application-connector-nginx-ingress-controller -o jsonpath="{.status.loadBalancer.ingress[0].ip}")
    
    gcloud dns --project=$PROJECT record-sets transaction start --zone=$DNS_ZONE
    
    gcloud dns --project=$PROJECT record-sets transaction add $EXTERNAL_PUBLIC_IP --name=\*.$DOMAIN. --ttl=60 --type=A --zone=$DNS_ZONE
    
    gcloud dns --project=$PROJECT record-sets transaction add $REMOTE_ENV_IP --name=\gateway.$DOMAIN. --ttl=60 --type=A --zone=$DNS_ZONE
    
    gcloud dns --project=$PROJECT record-sets transaction execute --zone=$DNS_ZONE
    
    

Changelog

Application Connector

Serverless

Service Catalog

Cluster

Eventing

Security

Service Mesh

Installation

Monitoring

  • #1531 Enable webhook configuration in alertmanager(@venturasr)
  • #1503 Adjust alert rule to monitor all pods in *-system namespace (@joek)
  • #1463 Set as default http-metrics instead of https-metrics for exporter-kubelets (@venturasr)
  • #1195 Prometheus: maintain data across deploymentsand version upgrades (@PK85)

Logging

Tracing

Console

Documentation

Community

CI

Committers: 46

Pre-release

@kyma-bot kyma-bot released this Nov 13, 2018

Assets 4

Local Kyma installation

Use the following command to run Kubernetes locally via Minikube:
$ ./installation/scripts/minikube.sh --domain "kyma.local" --vm-driver "hyperkit"

Kyma installation requires increased permissions granted by the cluster-admin role. To bind the role to the default ServiceAccount, run the following command:
$ kubectl apply -f ./installation/resources/default-sa-rbac-role.yaml

Wait until the kube-dns Pod is ready. Run this script to setup Tiller:
$ ./installation/scripts/install-tiller.sh

Configure the Kyma installation using the local configuration file:
$ kubectl apply -f https://github.com/kyma-project/kyma/releases/download/0.5-rc/kyma-config-local.yaml

To trigger the installation process, label the kyma-installation custom resource:
$ kubectl label installation/kyma-installation action=install

Track progress of the installation using the following script:
$ ./installation/scripts/is-installed.sh

Installation on Google Kubernetes Engine

  1. Make sure that you have gcloud tool installed. Set environment variables for your Google project identifier and your cluster name. You can keep your demo cluster name but your Google project identifier must be changed. Then you can spin up the cluster:

    export CLUSTER_NAME=demo
    export PROJECT=YOUR_PROJECT_ID
    
    gcloud beta container --project "$PROJECT" clusters \
    create "$CLUSTER_NAME" --zone "europe-west1-b" \
    --cluster-version "1.10.7-gke.9" --machine-type "n1-standard-2" \
    --addons HorizontalPodAutoscaling,HttpLoadBalancing,KubernetesDashboard 
    
  2. Install Tiller:

    kubectl apply -f https://raw.githubusercontent.com/kyma-project/kyma/0.5-rc/installation/resources/tiller.yaml
    
  3. Download the release and replace the placeholders with the proper values. The placeholders are the upper case variables surrounded by double underscore, such as __DOMAIN__. These are the mandatory values to change:

    • __DOMAIN__ which specifies your domain, for example kyma.example.com.
    • __TLS_CERT__ which is a PEM format, base64-encoded TLS certifcate.
    • __TLS_KEY__ which is a base64-encoded TLS private key.

    If you don't know how to set other values, replace them with an empty string.

    You can use this script to set only three mandatory values:

    export DOMAIN=kyma.example.com
    export TLS_CERT=base64_PEM_TLS_certificate
    export TLS_KEY=base64_TLS_private_key
    cat kyma-config-cluster.yaml | sed -e "s/__DOMAIN__/$DOMAIN/g" |sed -e "s/__TLS_CERT__/$TLS_CERT/g" | sed -e "s/__TLS_KEY__/$TLS_KEY/g" |sed -e "s/__.*__//g" >my-kyma.yaml
    

    As a result, you get the my-kyma.yaml file which you can deploy on the GKE cluster.

  4. Configure kubectl to use your new cluster, add yourself as the cluster admin, and deploy Kyma installer with your configuration.

    gcloud container clusters get-credentials $CLUSTER_NAME --zone europe-west1-b --project $PROJECT
    
    kubectl create clusterrolebinding cluster-admin-binding --clusterrole=cluster-admin --user=$(gcloud config get-value account)
    
    kubectl apply -f my-kyma.yaml
    
  5. Check if tiller and kyma-installer Pods are up and running. Start the installation process with this command:

    kubectl label installation/kyma-installation action=install
    

    Watch installation progress:

    kubectl logs -n kyma-installer [kyma-installer-pod] -f
    
  6. Configure DNS for two load balancers created by the Kyma installation, which are istio-ingressgateway and core-nginx-ingress-controller. You need the following DNS records:

    • *.kyma.example.com A EXTERNAL_PUBLIC_IP
    • gateway.kyma.example.com A REMOTE_ENV_IP

    You can use this script to get external IP addresses for load balancers:

    export EXTERNAL_PUBLIC_IP=$(kubectl get service -n istio-system istio-ingressgateway -o jsonpath="{.status.loadBalancer.ingress[0].ip}")
    
    export REMOTE_ENV_IP=$(kubectl get service -n kyma-system application-connector-nginx-ingress-controller -o jsonpath="{.status.loadBalancer.ingress[0].ip}")
    
    gcloud dns --project=$PROJECT record-sets transaction start --zone=$DNS_ZONE
    
    gcloud dns --project=$PROJECT record-sets transaction add $EXTERNAL_PUBLIC_IP --name=\*.$DOMAIN. --ttl=60 --type=A --zone=$DNS_ZONE
    
    gcloud dns --project=$PROJECT record-sets transaction add $REMOTE_ENV_IP --name=\gateway.$DOMAIN. --ttl=60 --type=A --zone=$DNS_ZONE
    
    gcloud dns --project=$PROJECT record-sets transaction execute --zone=$DNS_ZONE
    
    

Changelog

Application Connector

Serverless

Service Catalog

Cluster

Eventing

Security

Service Mesh

Installation

Monitoring

  • #1531 Enable webhook configuration in alertmanager(@venturasr)
  • #1503 Adjust alert rule to monitor all pods in *-system namespace (@joek)
  • #1463 Set as default http-metrics instead of https-metrics for exporter-kubelets (@venturasr)
  • #1195 Prometheus: maintain data across deploymentsand version upgrades (@PK85)

Logging

Tracing

Console

Documentation

Community

CI

Committers: 46

@crabtree crabtree released this Oct 17, 2018

Assets 4

Local Kyma installation

Use the following command to run Kubernetes locally via Minikube:
$ ./installation/scripts/minikube.sh --domain "kyma.local" --vm-driver "hyperkit"

Kyma installation requires increased permissions granted by the cluster-admin role. To bind the role to the default ServiceAccount, run the following command:
$ kubectl apply -f ./installation/resources/default-sa-rbac-role.yaml

Wait until the kube-dns Pod is ready. Run this script to setup Tiller:
$ ./installation/scripts/install-tiller.sh

Configure the Kyma installation using the local configuration file:
$ kubectl apply -f https://github.com/kyma-project/kyma/releases/download/0.4.3/kyma-config-local.yaml

To trigger the installation process, label the kyma-installation custom resource:
$ kubectl label installation/kyma-installation action=install

Track progress of the installation using the following script:
$ ./installation/scripts/is-installed.sh

Installation on Google Kubernetes Engine

  1. Make sure that you have gcloud tool installed. Set environment variables for your Google project identifier and your cluster name. You can keep your demo cluster name but your Google project identifier must be changed. Then you can spin up the cluster:

    export CLUSTER_NAME=demo
    export PROJECT=YOUR_PROJECT_ID
    
    gcloud beta container --project "$PROJECT" clusters \
    create "$CLUSTER_NAME" --zone "europe-west1-b" \
    --cluster-version "1.10.7-gke.2" --machine-type "n1-standard-2" \
    --addons HorizontalPodAutoscaling,HttpLoadBalancing,KubernetesDashboard 
    
  2. Install Tiller:

    kubectl apply -f https://raw.githubusercontent.com/kyma-project/kyma/0.4.3/installation/resources/tiller.yaml
    
  3. Download the release and replace the placeholders with the proper values. The placeholders are the upper case variables surrounded by double underscore, such as __DOMAIN__. These are the mandatory values to change:

    • __DOMAIN__ which specifies your domain, for example kyma.example.com.
    • __TLS_CERT__ which is a PEM format, base64-encoded TLS certifcate.
    • __TLS_KEY__ which is a base64-encoded TLS private key.

    If you don't know how to set other values, replace them with an empty string.

    You can use this script to set only three mandatory values:

    export DOMAIN=kyma.example.com
    export TLS_CERT=base64_PEM_TLS_certificate
    export TLS_KEY=base64_TLS_private_key
    cat kyma-config-cluster.yaml | sed -e "s/__DOMAIN__/$DOMAIN/g" |sed -e "s/__TLS_CERT__/$TLS_CERT/g" | sed -e "s/__TLS_KEY__/$TLS_KEY/g" |sed -e "s/__.*__//g" >my-kyma.yaml
    

    As a result, you get the my-kyma.yaml file which you can deploy on the GKE cluster.

  4. Configure kubectl to use your new cluster, add yourself as the cluster admin, and deploy Kyma installer with your configuration.

    gcloud container clusters get-credentials $CLUSTER_NAME --zone europe-west1-b --project $PROJECT
    
    kubectl create clusterrolebinding cluster-admin-binding --clusterrole=cluster-admin --user=$(gcloud config get-value account)
    
    kubectl apply -f my-kyma.yaml
    
  5. Check if tiller and kyma-installer Pods are up and running. Start the installation process with this command:

    kubectl label installation/kyma-installation action=install
    

    Watch installation progress:

    kubectl logs -n kyma-installer [kyma-installer-pod] -f
    
  6. Configure DNS for two load balancers created by the Kyma installation, which are istio-ingressgateway and core-nginx-ingress-controller. You need the following DNS records:

    • *.kyma.example.com A EXTERNAL_PUBLIC_IP
    • gateway.kyma.example.com A REMOTE_ENV_IP

    You can use this script to get external IP addresses for load balancers:

    export EXTERNAL_PUBLIC_IP=$(kubectl get service -n istio-system istio-ingressgateway -o jsonpath="{.status.loadBalancer.ingress[0].ip}")
    
    export REMOTE_ENV_IP=$(kubectl get service -n kyma-system core-nginx-ingress-controller -o jsonpath="{.status.loadBalancer.ingress[0].ip}")
    
    

Changelog

0.4.3 (2018-10-17)

Application Connector

Service Catalog

  • #1301 Increase Minio memory limit for cluster installation (@pkosiec)

Security

  • #1099 Add apiserver proxy component to release jenkinsfile (@kubadz)

Service Mesh

Installation

Tracing

Console

  • #1124 Adding console title and logoUrl to installer overrides (@kwiatekus)

Documentation

Committers: 10

@crabtree crabtree released this Oct 3, 2018 · 17 commits to release-0.4 since this release

Assets 4

Local Kyma installation

Use the following command to run Kubernetes locally via Minikube:
$ ./installation/scripts/minikube.sh --domain "kyma.local" --vm-driver "hyperkit"

Kyma installation requires increased permissions granted by the cluster-admin role. To bind the role to the default ServiceAccount, run the following command:
$ kubectl apply -f ./installation/resources/default-sa-rbac-role.yaml

Wait until the kube-dns Pod is ready. Run this script to setup Tiller:
$ ./installation/scripts/install-tiller.sh

Configure the Kyma installation using the local configuration file:
$ kubectl apply -f https://github.com/kyma-project/kyma/releases/download/0.4.1/kyma-config-local.yaml

To trigger the installation process, label the kyma-installation custom resource:
$ kubectl label installation/kyma-installation action=install

Track progress of the installation using the following script:
$ ./installation/scripts/is-installed.sh

Installation on Google Kubernetes Engine

  1. Make sure that you have gcloud tool installed. Set environment variables for your Google project identifier and your cluster name. You can keep your demo cluster name but your Google project identifier must be changed. Then you can spin up the cluster:

    export CLUSTER_NAME=demo
    export PROJECT=YOUR_PROJECT_ID
    
    gcloud beta container --project "$PROJECT" clusters \
    create "$CLUSTER_NAME" --zone "europe-west1-b" \
    --cluster-version "1.10.7-gke.2" --machine-type "n1-standard-2" \
    --addons HorizontalPodAutoscaling,HttpLoadBalancing,KubernetesDashboard 
    
  2. Install Tiller:

    kubectl apply -f https://raw.githubusercontent.com/kyma-project/kyma/0.4.1/installation/resources/tiller.yaml
    
  3. Download the release and replace the placeholders with the proper values. The placeholders are the upper case variables surrounded by double underscore, such as __DOMAIN__. These are the mandatory values to change:

    • __DOMAIN__ which specifies your domain, for example kyma.example.com.
    • __TLS_CERT__ which is a PEM format, base64-encoded TLS certifcate.
    • __TLS_KEY__ which is a base64-encoded TLS private key.

    If you don't know how to set other values, replace them with an empty string.

    You can use this script to set only three mandatory values:

    export DOMAIN=kyma.example.com
    export TLS_CERT=base64_PEM_TLS_certificate
    export TLS_KEY=base64_TLS_private_key
    cat kyma-config-cluster.yaml | sed -e "s/__DOMAIN__/$DOMAIN/g" |sed -e "s/__TLS_CERT__/$TLS_CERT/g" | sed -e "s/__TLS_KEY__/$TLS_KEY/g" |sed -e "s/__.*__//g" >my-kyma.yaml
    

    As a result, you get the my-kyma.yaml file which you can deploy on the GKE cluster.

  4. Configure kubectl to use your new cluster, add yourself as the cluster admin, and deploy Kyma installer with your configuration.

    gcloud container clusters get-credentials $CLUSTER_NAME --zone europe-west1-b --project $PROJECT
    
    kubectl create clusterrolebinding cluster-admin-binding --clusterrole=cluster-admin --user=$(gcloud config get-value account)
    
    kubectl apply -f my-kyma.yaml
    
  5. Check if tiller and kyma-installer Pods are up and running. Start the installation process with this command:

    kubectl label installation/kyma-installation action=install
    

    Watch installation progress:

    kubectl logs -n kyma-installer [kyma-installer-pod] -f
    
  6. Configure DNS for two load balancers created by the Kyma installation, which are istio-ingressgateway and core-nginx-ingress-controller. You need the following DNS records:

    • *.kyma.example.com A EXTERNAL_PUBLIC_IP
    • gateway.kyma.example.com A REMOTE_ENV_IP

    You can use this script to get external IP addresses for load balancers:

    export EXTERNAL_PUBLIC_IP=$(kubectl get service -n istio-system istio-ingressgateway -o jsonpath="{.status.loadBalancer.ingress[0].ip}")
    
    export REMOTE_ENV_IP=$(kubectl get service -n kyma-system core-nginx-ingress-controller -o jsonpath="{.status.loadBalancer.ingress[0].ip}")
    
    

Changelog

Application Connector

Serverless

Service Catalog

Cluster

Eventing

  • #1086 Add backoff retries in an errornous case in event bus test (@Abd4llA)
  • #591 Support HA for Publish and Push (@montaro)
  • #323 Fix - /v1/events Service returns json as content type text/plain (@abbi-gaurav)

Security

Service Mesh

Installation

Monitoring

  • #308 Added a getting started guide for custom monitoring metrics (@sayanh)

Tracing

Console

Documentation

Community

  • #829 Remove type for single documents with name equal to type (@akucharska)

CI

Committers: 52