The OCI Service Operator for Kubernetes (OSOK) makes it easy to connect and manage OCI services from a cloud native application running in a Kubernetes environment.

Overview

OCI Service Operator for Kubernetes

Introduction

The OCI Service Operator for Kubernetes (OSOK) makes it easy to create, manage, and connect to Oracle Cloud Infrastructure (OCI) resources from a Kubernetes environment. Kubernetes users can simply install OSOK and perform actions on OCI resources using the Kubernetes API removing the need to use the OCI CLI or other OCI developer tools to interact with a service API.

OSOK is based on the Operator Framework, an open-source toolkit used to manage Operators. It uses the controller-runtime library, which provides high-level APIs and abstractions to write operational logic and also provides tools for scaffolding and code generation for Operators.

Services Supported

  1. Autonomous Database Service
  2. Oracle Streaming Service
  3. Mysql DB System Service

Installation

See the Installation instructions for detailed installation and configuration of OCI Service Operator for Kubernetes.

Documentation

See the Documentation for complete details on installation, security and service related configurations of OCI Service Operator for Kubernetes.

Release Bundle

The OCI Service Operator for Kubernetes is packaged as Operator Lifecycle Manager (OLM) Bundle for making it easy to install in Kubernetes Clusters. The bundle can be downloaded as docker image using below command.

docker pull iad.ocir.io/oracle/oci-service-operator-bundle:0.0.2

Samples

Samples for managing OCI Services/Resources using oci-service-operator, can be found here.

Changes

See CHANGELOG.

Contributing

oci-service-operator project welcomes contributions from the community. Before submitting a pull request, please review our contribution guide.

Security

Please consult the security guide for our responsible security vulnerability disclosure process.

License

Copyright (c) 2021 Oracle and/or its affiliates.

Released under the Universal Permissive License v1.0 as shown at https://oss.oracle.com/licenses/upl/.

Comments
  • How to remove catalog source

    How to remove catalog source

    I was following the installation guide for OCI Service Operator for Kubernetes (OSOK) from the following this link: https://github.com/oracle/oci-service-operator/blob/main/docs/installation.md

    I have successfully installed the operator-sdk and OLM. However, when I wanted to deploy OSOK, I missed the step of pulling the docker image. So, I straight away ran this command: operator-sdk run bundle iad.ocir.io/oracle/oci-service-operator-bundle:1.0.0

    according to the installation guide, I should've pull the docker image first $ docker pull iad.ocir.io/oracle/oci-service-operator-bundle:1.0.0

    so, it gave me an error like this:

    INFO[0028] Successfully created registry pod: iad-ocir-io-oracle-oci-service-operator-bundle-1-0-0 
    INFO[0028] Created CatalogSource: oci-service-operator-catalog 
    INFO[0029] OperatorGroup "operator-sdk-og" created    
    INFO[0029] Created Subscription: oci-service-operator-v1-0-0-sub 
    FATA[0124] Failed to run bundle: install plan is not available for the subscription oci-service-operator-v1-0-0-sub: timed out waiting for the condition
    

    I noticed that it created a pod called "iad-ocir-io-oracle-oci-service-operator-bundle-1-0-0" so I deleted the pod kubectl delete pod iad-ocir-io-oracle-oci-service-operator-bundle-1-0-0

    And it gave me this message pod "iad-ocir-io-oracle-oci-service-operator-bundle-1-0-0" deleted

    Then when I ran the command operator-sdk run bundle iad.ocir.io/oracle/oci-service-operator-bundle:1.0.0

    It returned with the following error message

    FATA[0004] Failed to run bundle: create catalog: error creating catalog source: catalogsources.operators.coreos.com "oci-service-operator-catalog" already exists
    

    How can I remove that catalog completely so I can execute the operator-sdk run bundle command again? Environment

    Kubernetes cluster type:

    Kubernetes on Oracle Cloud Infrastructure

    $ operator-sdk version

    operator-sdk version: "v1.13.0", commit: "6e84414b468029c5c3e07352cabe64cf3a682111", kubernetes version: "1.21", go version: "go1.16.8", GOOS: "linux", GOARCH: "amd64"
    

    $ kubectl version

    Server Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.8", GitCommit:"50317190d44dbdb51ae7ff430917b32ba96188b5", GitTreeState:"clean", BuildDate:"2021-06-30T14:20:31Z", GoVersion:"go1.15.13 BoringCrypto", Compiler:"gc", Platform:"linux/amd64"}
    WARNING: version difference between client (1.22) and server (1.20) exceeds the supported minor version skew of +/-1
    
    opened by adhikarexuss 4
  • How to delete instance from OCI ?

    How to delete instance from OCI ?

    Running

    kubectl delete MySqlDbSystem mysqlsapub
    mysqldbsystem.oci.oracle.com "mysqlsapub" deleted 
    

    does not delete instance from OCI side ...

    opened by mikarinneoracle 3
  • New Release v1.0.0 for OCI Service Operator

    New Release v1.0.0 for OCI Service Operator

    • First Release of OCI Service Operator

    Co-authored-by: @jayasheelankumar Co-authored-by: @balkrishna93 Co-authored-by: @pranavsriram8 Co-authored-by: @sacgoel

    opened by jayasheelankumar 1
  • New Release v1.1.4 for OCI Service Operator

    New Release v1.1.4 for OCI Service Operator

    • Fix proxy container without deployment id
    • Fix optional array property
    • Add max item validation
    • Update Service Mesh README

    Co-authored-by: @mahari Co-authored-by: @zweng

    OCA Verified 
    opened by madanrajhari10 0
  • Release v1.1.3 for OCI Service Operator

    Release v1.1.3 for OCI Service Operator

    New Release v1.1.3 for OCI Service Operator

    • Allow custom trust store on operator and custom volumes on Service Mesh proxy
    • Allow publishing custom operator image

    Co-authored-by: @abhinamm Co-authored-by: @vivekgg

    opened by ahwille 0
  •  Release v1.1.2 for OCI Service Operator

    Release v1.1.2 for OCI Service Operator

    New Release v1.1.2 for OCI Service Operator

    • Update operator reconciliation and increase requeue maximum delay.
    • Enable customized publish operator image.
    • Update service mesh documentation.
    • Bug fixing.

    Co-authored-by: @giriraj34 Co-authored-by: @zihuaweng Co-authored-by: @madanrajhari10 Co-authored-by: @risaraf Co-authored-by: @XinyueZhang369

    opened by zihuaweng 0
  • Update adb.md

    Update adb.md

    To prevent this error: 'Warning Failed 2m15s (x2 over 2m16s) AutonomousDatabases Failed to create or update resource: password key 'walletPassword' in wallet password secret is not found', it is required to change from p to P.

    opened by TheKoguryo 0
  • Provide an installer manifest or helm chart

    Provide an installer manifest or helm chart

    The installation process is cumbersome and requires the installation of several dependencies that are only used to deploy the operator. Since there are really no configuration options, it seems like it would be simple to generate a single manifest for deployment, which could be used directly from GitHub as akubectl apply -f <manifest url> and would make installation and adoption much simpler.

    opened by streamnsight 0
  • Install plan is not available for the subscription oci-service-operator

    Install plan is not available for the subscription oci-service-operator

    I am trying to install service mesh in OKE. I am following https://docs.oracle.com/en-us/iaas/Content/service-mesh/ovr-getting-started-osok.htm and https://github.com/oracle/oci-service-operator/blob/v1.1.3/docs/installation.md to install it.

    Versions I am using: Kubernetes: 1.24.1 Operator: 1.23.0 OLM: 0.22.0 oci-service-operator: 1.1.3

    But every time it stuck in one step.

    INFO[0003] Creating a File-Based Catalog of the bundle "iad.ocir.io/oracle/oci-service-operator-bundle:1.1.3" INFO[0004] Generated a valid File-Based Catalog INFO[0007] Created registry pod: iad-ocir-io-oracle-oci-service-operator-bundle-1-1-3 INFO[0007] Created CatalogSource: oci-service-operator-catalog INFO[0007] OperatorGroup "operator-sdk-og" created INFO[0007] Created Subscription: oci-service-operator-v1-1-3-sub FATA[0300] Failed to run bundle: install plan is not available for the subscription oci-service-operator-v1-1-3-sub: timed out waiting for the condition

    I tried with different versions too, like OLM: 0.20.0 oci-service-operator: 1.1.1 But issue is always same.

    I have checked the old issue 'https://github.com/oracle/oci-service-operator/issues/5' and it did not give any resolution and without providing it, issue got closed.

    Can you guys please help me here to resolve it?

    opened by chillaxd 0
  • pulling the OSOK container gives unauthorised error

    pulling the OSOK container gives unauthorised error

    The instructions say to install the OSOK, however attempting to pull the bundle results in an Unauthorised error docker pull iad.ocir.io/oracle/oci-service-operator-bundle:1.1.1 The same applies when trying to use the operator-sdk to install it. The container image repo needs to be made public readable (This also applies to the 1.1.0 version, I haven't tested others, but I suspect as they are tags on the same repo that this will apply to all versions)

    opened by atimgraves 0
  • install the bundle ends up in a failure

    install the bundle ends up in a failure

    Install the bundle ends up in a failure operator-sdk run bundle iad.ocir.io/oracle/oci-service-operator-bundle:1.1.1 -n oci-service-operator-system

    The pod ends in CrashLoopBackOff Look into the pod there's a permission problem: 2022-07-10T19:37:05.808Z | mkdir: can't create directory '/database': Permission denied

    Do you know what might causes this?

    opened by mnemonic01 0
  • does oci-service-operator-bundle support ARM?

    does oci-service-operator-bundle support ARM?

    Hi, I am facing issue in run oci-service-operator-bundle on ARM nodes in kubernetes cluster.

    Here is command for run: operator-sdk run bundle iad.ocir.io/oracle/oci-service-operator-bundle:1.1.0 -n oci-service-operator-system --timeout 5m

    Error: The above command stuck at "Waiting for ClusterServiceVersion "oci-service-operator-system/oci-service-operator.v1.1.0" to reach 'Succeeded' phase". And after that timeout happened. And there will be pods in "oci-service-operator-system" namespace with "Init:Error" status. This pods are created by Kubernetes Job.

    Screenshot 2022-05-24 at 12 47 47 AM

    Screenshot 2022-05-24 at 12 47 21 AM

    opened by Gouravdeep 1
  • CR Deletion is reported as an error

    CR Deletion is reported as an error

    Hello there!

    Do we have to report CR deletion as an error? I created a stream object and deleted it but operator reported not found as an error.

    2022-05-12T22:52:23.152Z    DEBUG    controllers.Streams     {  Message: Fetching the resource from server , name: osok-stream , namespace: oci-operators }                                                      │
    │ 2022-05-12T22:52:23.152Z    ERROR    controllers.Streams     {  Message: The resource could be in deleting state. Ignoring , name: osok-stream , namespace: oci-operators }     {"error": "Stream.oci.oracle.com │
    │ github.com/go-logr/zapr.(*zapLogger).Error                                                                                                                                                                       │
    │     /workspace/vendor/github.com/go-logr/zapr/zapr.go:132                                                                                                                                                        │
    │ github.com/oracle/oci-service-operator/pkg/loggerutil.(*OSOKLogger).ErrorLog                                                                                                                                     │
    │     /workspace/pkg/loggerutil/logger.go:89                                                                                                                                                                       │
    │ github.com/oracle/oci-service-operator/pkg/core.(*BaseReconciler).Reconcile                                                                                                                                      │
    │     /workspace/pkg/core/reconciler.go:53                                                                                                                                                                         │
    │ github.com/oracle/oci-service-operator/controllers.(*StreamReconciler).Reconcile                                                                                                                                 │
    │     /workspace/controllers/stream_controller.go:37                                                                                                                                                               │
    │ sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).reconcileHandler                                                                                                                            │
    │     /workspace/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:263                                                                                                                   │
    │ sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem                                                                                                                         │
    │     /workspace/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:235                                                                                                                   │
    │ sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).Start.func1.1                                                                                                                               │
    │     /workspace/vendor/sigs.k8s.io/controller-runtime/pkg/internal/controller/controller.go:198                                                                                                                   │
    │ k8s.io/apimachinery/pkg/util/wait.JitterUntilWithContext.func1                                                                                                                                                   │
    │     /workspace/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:185                                                                                                                                              │
    │ k8s.io/apimachinery/pkg/util/wait.BackoffUntil.func1                                                                                                                                                             │
    │     /workspace/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:155                                                                                                                                              │
    │ k8s.io/apimachinery/pkg/util/wait.BackoffUntil                                                                                                                                                                   │
    │     /workspace/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:156                                                                                                                                              │
    │ k8s.io/apimachinery/pkg/util/wait.JitterUntil                                                                                                                                                                    │
    │     /workspace/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:133                                                                                                                                              │
    │ k8s.io/apimachinery/pkg/util/wait.JitterUntilWithContext                                                                                                                                                         │
    │     /workspace/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:185                                                                                                                                              │
    │ k8s.io/apimachinery/pkg/util/wait.UntilWithContext                                                                                                                                                               │
    │     /workspace/vendor/k8s.io/apimachinery/pkg/util/wait/wait.go:99
    

    Perhaps this should be informational

    opened by liafizan 0
Releases(v1.1.5)
  • v1.1.5(Dec 16, 2022)

    Major Updates

    • Support Egress only services

    Minor Updates

    • Add Listener port validation for Ingress Gateway

    Documentation

    README

    Contributors: - @XinyueZhang369, @santhiyanaga

    Full Changelog: https://github.com/oracle/oci-service-operator/compare/v1.1.4...v1.1.5

    Source code(tar.gz)
    Source code(zip)
  • v1.1.4(Nov 15, 2022)

    Minor Updates

    • Fix optional array property
    • Add max item validation

    Bug Fixes

    • Fix proxy container without deployment id

    Documentation

    README

    Contributors: - @zihuaweng, @madanrajhari10

    Full Changelog: https://github.com/oracle/oci-service-operator/compare/v1.1.3...v1.1.4

    Source code(tar.gz)
    Source code(zip)
  • v1.1.3(Sep 14, 2022)

    Major Updates

    • Allow custom trust store on operator and custom volumes on Service Mesh proxy

    Minor Updates

    • Allow publishing custom operator image

    Documentation

    README

    Contributors: - @abhinamm, @VivekGG

    Full Changelog: https://github.com/oracle/oci-service-operator/compare/v1.1.2...v1.1.3

    Source code(tar.gz)
    Source code(zip)
  • v1.1.2(Aug 5, 2022)

    Minor Updates

    • Update operator reconciliation and increase requeue maximum delay.
    • Update service mesh documentation.
    • Mutate Probe for TCP Connections
    • Uniquely identify proxies

    Bug Fixes

    • Fix Ingress Gateway Deployment service annotations

    Documentation

    README

    Contributors: - @giriraj34, @zihuaweng, @madanrajhari10, @risaraf, @XinyueZhang369

    Full Changelog: https://github.com/oracle/oci-service-operator/compare/v1.1.1...v1.1.2

    Source code(tar.gz)
    Source code(zip)
  • v1.1.1(Jun 14, 2022)

    Bug Fixes

    • Save retry token before sending request to control-plane
    • Fix Concurrent writes issue, causing operator to restart

    Documentation

    README Contributors: - Service Mesh Team

    What's Changed

    • Fix Service Mesh doc by @madanrajhari10 in https://github.com/oracle/oci-service-operator/pull/12
    • Added change log by @madanrajhari10 in https://github.com/oracle/oci-service-operator/pull/16
    • Fix spacing by @madanrajhari10 in https://github.com/oracle/oci-service-operator/pull/17
    • New Release v1.1.1 for OCI Service Operator by @XinyueZhang369 in https://github.com/oracle/oci-service-operator/pull/19
    • Update change log and readme for v1.1.1 by @XinyueZhang369 in https://github.com/oracle/oci-service-operator/pull/21

    New Contributors

    • @XinyueZhang369 made their first contribution in https://github.com/oracle/oci-service-operator/pull/19

    Full Changelog: https://github.com/oracle/oci-service-operator/compare/v1.1.0...v1.1.1

    Source code(tar.gz)
    Source code(zip)
  • v1.1.0(Apr 27, 2022)

    Major Updates

    • Introducing Service Mesh to OCI Service Operator
    • Supports OLM version 0.20.0
    • Supports operator bundle upgrade

    Documentation

    README

    Contributors: - Service Mesh Team

    Note: Operator bundle upgrades are supported from OLM version 0.20.0 onwards. To upgrade your OSOK operator to v1.1.0, please uninstall existing OLM and install OLM version 0.20.0

    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Aug 31, 2021)

    This release is the first GA release 1.0.0 of OCI Service Operator for Kubernetes.

    Contributors: - @jayasheelankumar, @balkrishna93, @pranavsriram8, @sacgoel

    Source code(tar.gz)
    Source code(zip)
Owner
Oracle
Open Source at Oracle
Oracle
The NiFiKop NiFi Kubernetes operator makes it easy to run Apache NiFi on Kubernetes.

The NiFiKop NiFi Kubernetes operator makes it easy to run Apache NiFi on Kubernetes. Apache NiFI is a free, open-source solution that support powerful and scalable directed graphs of data routing, transformation, and system mediation logic.

konpyutaika 46 Dec 26, 2022
Open Service Mesh (OSM) is a lightweight, extensible, cloud native service mesh that allows users to uniformly manage, secure, and get out-of-the-box observability features for highly dynamic microservice environments.

Open Service Mesh (OSM) Open Service Mesh (OSM) is a lightweight, extensible, Cloud Native service mesh that allows users to uniformly manage, secure,

Open Service Mesh 2.5k Jan 2, 2023
An Oracle Cloud (OCI) Pulumi resource package, providing multi-language access to OCI

Oracle Cloud Infrastructure Resource Provider The Oracle Cloud Infrastructure (OCI) Resource Provider lets you manage OCI resources. Installing This p

Pulumi 14 Dec 2, 2022
The DGL Operator makes it easy to run Deep Graph Library (DGL) graph neural network training on Kubernetes

DGL Operator The DGL Operator makes it easy to run Deep Graph Library (DGL) graph neural network distributed or non-distributed training on Kubernetes

Qihoo 360 44 Dec 19, 2022
An operator which complements grafana-operator for custom features which are not feasible to be merged into core operator

Grafana Complementary Operator A grafana which complements grafana-operator for custom features which are not feasible to be merged into core operator

Snapp Cab Incubators 6 Aug 16, 2022
provide api for cloud service like aliyun, aws, google cloud, tencent cloud, huawei cloud and so on

cloud-fitter 云适配 Communicate with public and private clouds conveniently by a set of apis. 用一套接口,便捷地访问各类公有云和私有云 对接计划 内部筹备中,后续开放,有需求欢迎联系。 开发者社区 开发者社区文档

null 24 Dec 20, 2022
An open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developersAn open-source, distributed, cloud-native CD (Continuous Delivery) product designed for developers

Developer-oriented Continuous Delivery Product ⁣ English | 简体中文 Table of Contents Zadig Table of Contents What is Zadig Quick start How to use? How to

null 0 Oct 19, 2021
Christmas Hack Day Project: Build an Kubernetes Operator to deploy Camunda Cloud services

Camunda Cloud Operator Christmas Hack Day Project (2021): Build an Kubernetes Operator to deploy Camunda Cloud services Motiviation / Idea We currentl

Camunda Community Hub 0 May 18, 2022
Kubernetes Operator for a Cloud-Native OpenVPN Deployment.

Meerkat is a Kubernetes Operator that facilitates the deployment of OpenVPN in a Kubernetes cluster. By leveraging Hashicorp Vault, Meerkat securely manages the underlying PKI.

Oliver Borchert 32 Jan 4, 2023
kube-champ 43 Oct 19, 2022
PolarDB-X Operator is a Kubernetes extension that aims to create and manage PolarDB-X cluster on Kubernetes.

GalaxyKube -- PolarDB-X Operator PolarDB-X Operator is a Kubernetes extension that aims to create and manage PolarDB-X cluster on Kubernetes. It follo

null 64 Dec 19, 2022
Kubernetes Operator Samples using Go, the Operator SDK and OLM

Kubernetes Operator Patterns and Best Practises This project contains Kubernetes operator samples that demonstrate best practices how to develop opera

International Business Machines 27 Nov 24, 2022
Cheiron is a Kubernetes Operator made with OperatorSDK for reconciling service account and attaching imagePullSecrets to service accounts automatically

anny-co/cheiron NOTE: Cheiron is currently in very early stages of development and and far from anything usable. Feel free to contribute if you want t

anny 2 Sep 13, 2021
Interactive Cloud-Native Environment Client

Fenix-CLI:Interactive Cloud-Native Environment Client English | 简体中文 Fenix-CLI is an interactive cloud-native operating environment client. The goal i

IcyFenix 86 Dec 15, 2022
The Elastalert Operator is an implementation of a Kubernetes Operator, to easily integrate elastalert with gitops.

Elastalert Operator for Kubernetes The Elastalert Operator is an implementation of a Kubernetes Operator. Getting started Firstly, learn How to use el

null 20 Jun 28, 2022
Minecraft-operator - A Kubernetes operator for Minecraft Java Edition servers

Minecraft Operator A Kubernetes operator for dedicated servers of the video game

James Laverack 8 Dec 15, 2022
K8s-network-config-operator - Kubernetes network config operator to push network config to switches

Kubernetes Network operator Will add more to the readme later :D Operations The

Daniel Hertzberg 6 May 16, 2022
Pulumi-k8s-operator-example - OpenGitOps Compliant Pulumi Kubernetes Operator Example

Pulumi GitOps Example OpenGitOps Compliant Pulumi Kubernetes Operator Example Pr

Christian Hernandez 3 May 6, 2022
Kubegres is a Kubernetes operator allowing to create a cluster of PostgreSql instances and manage databases replication, failover and backup.

Kubegres is a Kubernetes operator allowing to deploy a cluster of PostgreSql pods with data replication enabled out-of-the box. It brings simplicity w

Reactive Tech Ltd 1.1k Dec 30, 2022