Giter Site home page Giter Site logo

serving-operator's Introduction

Knative Serving Operator

Go Report Card Releases LICENSE Slack Status

Knative Serving Operator is a project aiming to deploy and manage Knative Serving in an automated way.

The following steps will install Knative Serving and configure it appropriately for your cluster in the knative-serving namespace. Please make sure the prerequisites are installed first.

  1. Install the operator
  • Installing from source code:

To install from source code, run the command:

ko apply -f config/
  • Installing a released version:

To install a released version of the operator go and download the latest serving-operator.yaml file from here and apply it (kubectl apply -f serving-operator.yaml), or directly run:

kubectl apply -f https://github.com/knative/serving-operator/releases/download/v0.10.0/serving-operator.yaml
  1. Install the KnativeServing custom resource
cat <<-EOF | kubectl apply -f -
apiVersion: v1
kind: Namespace
metadata:
 name: knative-serving
---
apiVersion: operator.knative.dev/v1alpha1
kind: KnativeServing
metadata:
  name: knative-serving
  namespace: knative-serving
spec:
  config:
    defaults:
      revision-timeout-seconds: "300"  # 5 minutes
    autoscaler:
      stable-window: "60s"
    deployment:
      registriesSkippingTagResolving: "ko.local,dev.local"
    logging:
      loglevel.controller: "debug"
EOF

Please refer to Building the Operator Image to build your own image.

Prerequisites

Istio

On OpenShift, Istio will get installed automatically if not already present by using the Maistra Operator.

For other platforms, see the docs

Operator SDK

This operator was originally created using the operator-sdk. It's not strictly required but does provide some handy tooling.

The KnativeServing Custom Resource

The installation of Knative Serving is triggered by the creation of a KnativeServing custom resource (CR) as defined by this CRD. The operator will deploy Knative Serving in the same namespace containing the KnativeServing CR, and this CR will trigger the installation, reconfiguration, or removal of the knative serving resources.

The optional spec.config field can be used to set the corresponding entries in the Knative Serving ConfigMaps. Conditions for a successful install and available deployments will be updated in the status field, as well as which version of Knative Serving the operator installed.

The following are all equivalent:

kubectl get knativeservings.operator.knative.dev -oyaml
kubectl get knativeserving -oyaml
kubectl get ks -oyaml

To uninstall Knative Serving, simply delete the KnativeServing resource.

kubectl delete ks --all

Development

It can be convenient to run the operator outside of the cluster to test changes. The following command will build the operator and use your current "kube config" to connect to the cluster:

./hack/run-local.sh

Pass --help for further details on the various subcommands

Building the Operator Image

To build the operator with ko, configure your an environment variable KO_DOCKER_REPO as the docker repository to which developer images should be pushed (e.g. gcr.io/[gcloud-project], docker.io/[username], quay.io/[repo-name], etc).

Install ko with the following command, if it is not available on your machine:

go get -u github.com/google/ko/cmd/ko

Then, build the operator image:

ko publish knative.dev/serving-operator/cmd/manager -t $VERSION

You need to access the image by the name KO_DOCKER_REPO/manager-[md5]:$VERSION, which you are able to find in the output of the above ko publish command.

The image should match what's in config/operator.yaml and the $VERSION should match version.go and correspond to the contents of config/.

Operator Lifecycle Manager and OperatorHub

Knative Serving operator has the metadata in Operator Lifecycle Manager (OLM) checked in at deploy/olm-catalog. Files in there are for reference purposes and also for testing and tooling.

In order to install the operator CatalogSource to a cluster with OLM, run these commands:

OLM_NS=$(kubectl get deploy --all-namespaces | grep olm-operator | awk '{print $1}')
./hack/generate-olm-catalog-source.sh | kubectl apply -n $OLM_NS -f -

Then install the operator by creating a subscription:

OLM_NS=$(kubectl get operatorgroups --all-namespaces | grep olm-operators | awk '{print $1}')
OPERATOR_NS=$(kubectl get operatorgroups --all-namespaces | grep global-operators | awk '{print $1}')

cat <<-EOF | kubectl apply -f -
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
  name: knative-serving-operator-sub
  generateName: knative-serving-operator-
  namespace: $OPERATOR_NS
spec:
  source: knative-serving-operator
  sourceNamespace: $OLM_NS
  name: knative-serving-operator
  channel: alpha
EOF

Upgrade

Please refer to the upgrade guide for a safe upgrade process.

serving-operator's People

Contributors

adrcunha avatar aliok avatar anniefu avatar bbrowning avatar cardil avatar chaodaig avatar dprotaso avatar garron avatar greghaynes avatar jcrossley3 avatar jihuin avatar k4leung4 avatar markusthoemmes avatar mattmoor avatar mattmoor-sockpuppet avatar matzew avatar mgencur avatar nak3 avatar savitaashture avatar syedriko avatar trshafer avatar wtam2018 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.