|
28 | 28 | ${e.data.filter(e=>e.title?.toLowerCase().includes(t)||e.description?.toLowerCase().includes(t)||e.searchKeyword?.toLowerCase().includes(t)||e.content?.toLowerCase().includes(t)).map(e=>buidResultItem(e,n[s++])).join("")}
|
29 | 29 | </div>`}).join("");searchResult.innerHTML=n};loadJsonData()</script><main><section class="border-bottom border-default"><div class="doc-container-fluid padding-layout"><div class=row><div class="col-xl-2 col-lg-3 col-md-4 pe-0 d-none d-md-block border-end border-default"><ul class="doc-sidenav m-0 pt-4 pe-4 ps-0"><li data-nav-id=https://microcks.io/documentation/overview/ title=Overview class=sidelist><a href=https://microcks.io/documentation/overview/><i class="fa-solid fa-magnifying-glass"></i> Overview</a><ul><li data-nav-id=https://microcks.io/documentation/overview/what-is-microcks/ title="What is Microcks?" class=sidelist><a href=https://microcks.io/documentation/overview/what-is-microcks/>What is Microcks?</a><li data-nav-id=https://microcks.io/documentation/overview/main-concepts/ title="Main Concepts" class=sidelist><a href=https://microcks.io/documentation/overview/main-concepts/>Main Concepts</a><li data-nav-id=https://microcks.io/documentation/overview/alternatives/ title=Alternatives class=sidelist><a href=https://microcks.io/documentation/overview/alternatives/>Alternatives</a></ul></li><li data-nav-id=https://microcks.io/documentation/tutorials/ title=Tutorials class=sidelist><a href=https://microcks.io/documentation/tutorials/><i class="fa-solid fa-graduation-cap"></i> Tutorials</a><ul><li data-nav-id=https://microcks.io/documentation/tutorials/getting-started/ title="Getting started" class=sidelist><a href=https://microcks.io/documentation/tutorials/getting-started/>Getting started</a><li data-nav-id=https://microcks.io/documentation/tutorials/getting-started-tests/ title="Getting started with Tests" class=sidelist><a href=https://microcks.io/documentation/tutorials/getting-started-tests/>Getting started with Tests</a><li data-nav-id=https://microcks.io/documentation/tutorials/first-rest-mock/ title="Your 1st REST mock" class=sidelist><a href=https://microcks.io/documentation/tutorials/first-rest-mock/>Your 1st REST mock</a><li data-nav-id=https://microcks.io/documentation/tutorials/first-graphql-mock/ title="Your 1st GraphQL mock" class=sidelist><a href=https://microcks.io/documentation/tutorials/first-graphql-mock/>Your 1st GraphQL mock</a><li data-nav-id=https://microcks.io/documentation/tutorials/first-grpc-mock/ title="Your 1st gRPC mock" class=sidelist><a href=https://microcks.io/documentation/tutorials/first-grpc-mock/>Your 1st gRPC mock</a><li data-nav-id=https://microcks.io/documentation/tutorials/first-soap-mock/ title="Your 1st Soap mock" class=sidelist><a href=https://microcks.io/documentation/tutorials/first-soap-mock/>Your 1st Soap mock</a><li data-nav-id=https://microcks.io/documentation/tutorials/first-asyncapi-mock/ title="Your 1st AsyncAPI on Kafka mock" class=sidelist><a href=https://microcks.io/documentation/tutorials/first-asyncapi-mock/>Your 1st AsyncAPI on Kafka mock</a></ul></li><li data-nav-id=https://microcks.io/documentation/guides/ title="How-To Guides" class="sidelist parent"><a href=https://microcks.io/documentation/guides/><i class="fa-solid fa-book-open"></i> How-To Guides</a><ul><li data-nav-id=https://microcks.io/documentation/guides/installation/ title=Installation class="sidelist parent"><a href=https://microcks.io/documentation/guides/installation/>Installation</a><ul><li data-nav-id=https://microcks.io/documentation/guides/installation/docker-desktop-extension/ title="As a Docker Desktop Extension" class=sidelist><a href=https://microcks.io/documentation/guides/installation/docker-desktop-extension/>As a Docker Desktop Extension</a><li data-nav-id=https://microcks.io/documentation/guides/installation/docker-compose/ title="With Docker Compose" class=sidelist><a href=https://microcks.io/documentation/guides/installation/docker-compose/>With Docker Compose</a><li data-nav-id=https://microcks.io/documentation/guides/installation/podman-compose/ title="With Podman Compose" class=sidelist><a href=https://microcks.io/documentation/guides/installation/podman-compose/>With Podman Compose</a><li data-nav-id=https://microcks.io/documentation/guides/installation/kind-helm/ title="On Kind with Helm" class=sidelist><a href=https://microcks.io/documentation/guides/installation/kind-helm/>On Kind with Helm</a><li data-nav-id=https://microcks.io/documentation/guides/installation/minikube-helm/ title="On Minikube with Helm" class=sidelist><a href=https://microcks.io/documentation/guides/installation/minikube-helm/>On Minikube with Helm</a><li data-nav-id=https://microcks.io/documentation/guides/installation/kubernetes-operator/ title="On Kubernetes with Operator" class="sidelist active parent"><a href=https://microcks.io/documentation/guides/installation/kubernetes-operator/>On Kubernetes with Operator</a><li data-nav-id=https://microcks.io/documentation/guides/installation/externals/ title="Adding external dependencies" class=sidelist><a href=https://microcks.io/documentation/guides/installation/externals/>Adding external dependencies</a></ul></li><li data-nav-id=https://microcks.io/documentation/guides/usage/ title=Usage class=sidelist><a href=https://microcks.io/documentation/guides/usage/><i class="fa-solid fa-caret-right"></i> Usage</a><li data-nav-id=https://microcks.io/documentation/guides/automation/ title=Automation class=sidelist><a href=https://microcks.io/documentation/guides/automation/><i class="fa-solid fa-caret-right"></i> Automation</a><li data-nav-id=https://microcks.io/documentation/guides/integration/ title=Integration class=sidelist><a href=https://microcks.io/documentation/guides/integration/><i class="fa-solid fa-caret-right"></i> Integration</a><li data-nav-id=https://microcks.io/documentation/guides/administration/ title=Administration class=sidelist><a href=https://microcks.io/documentation/guides/administration/><i class="fa-solid fa-caret-right"></i> Administration</a></ul></li><li data-nav-id=https://microcks.io/documentation/explanations/ title=Explanations class=sidelist><a href=https://microcks.io/documentation/explanations/><i class="fa-solid fa-lightbulb"></i> Explanations</a><ul><li data-nav-id=https://microcks.io/documentation/explanations/deployment-topologies/ title="Deployment topologies" class=sidelist><a href=https://microcks.io/documentation/explanations/deployment-topologies/>Deployment topologies</a><li data-nav-id=https://microcks.io/documentation/explanations/deployment-options/ title="Architecture & deployment options" class=sidelist><a href=https://microcks.io/documentation/explanations/deployment-options/>Architecture & deployment options</a><li data-nav-id=https://microcks.io/documentation/explanations/multi-artifacts/ title="Multi-artifacts support" class=sidelist><a href=https://microcks.io/documentation/explanations/multi-artifacts/>Multi-artifacts support</a><li data-nav-id=https://microcks.io/documentation/explanations/dynamic-content/ title="Dynamic mock content" class=sidelist><a href=https://microcks.io/documentation/explanations/dynamic-content/>Dynamic mock content</a><li data-nav-id=https://microcks.io/documentation/explanations/conformance-testing/ title="Conformance testing" class=sidelist><a href=https://microcks.io/documentation/explanations/conformance-testing/>Conformance testing</a><li data-nav-id=https://microcks.io/documentation/explanations/service-account/ title="Service accounts" class=sidelist><a href=https://microcks.io/documentation/explanations/service-account/>Service accounts</a><li data-nav-id=https://microcks.io/documentation/explanations/dispatching/ title="Dispatcher & dispatching rules" class=sidelist><a href=https://microcks.io/documentation/explanations/dispatching/>Dispatcher & dispatching rules</a><li data-nav-id=https://microcks.io/documentation/explanations/monitoring/ title="Monitoring & Observability" class=sidelist><a href=https://microcks.io/documentation/explanations/monitoring/>Monitoring & Observability</a></ul></li><li data-nav-id=https://microcks.io/documentation/references/ title=References class=sidelist><a href=https://microcks.io/documentation/references/><i class="fa-solid fa-file-lines"></i> References</a><ul><li data-nav-id=https://microcks.io/documentation/references/container-images/ title="Container Images" class=sidelist><a href=https://microcks.io/documentation/references/container-images/>Container Images</a><li data-nav-id=https://microcks.io/documentation/references/templates/ title="Mock Templates" class=sidelist><a href=https://microcks.io/documentation/references/templates/>Mock Templates</a><li data-nav-id=https://microcks.io/documentation/references/test-endpoints/ title="Test Parameters" class=sidelist><a href=https://microcks.io/documentation/references/test-endpoints/>Test Parameters</a><li data-nav-id=https://microcks.io/documentation/references/metadada/ title="API Metadata Format" class=sidelist><a href=https://microcks.io/documentation/references/metadada/>API Metadata Format</a><li data-nav-id=https://microcks.io/documentation/references/examples/ title="API Examples Format" class=sidelist><a href=https://microcks.io/documentation/references/examples/>API Examples Format</a><li data-nav-id=https://microcks.io/documentation/references/artifacts/ title="Artifacts Reference" class=sidelist><a href=https://microcks.io/documentation/references/artifacts/><i class="fa-solid fa-caret-right"></i> Artifacts Reference</a><li data-nav-id=https://microcks.io/documentation/references/configuration/ title="Configuration Reference" class=sidelist><a href=https://microcks.io/documentation/references/configuration/><i class="fa-solid fa-caret-right"></i> Configuration Reference</a><li data-nav-id=https://microcks.io/documentation/references/apis/ title="API Reference" class=sidelist><a href=https://microcks.io/documentation/references/apis/><i class="fa-solid fa-caret-right"></i> API Reference</a></ul></li></ul></div><div class="col-xl-8 col-lg-9 col-md-8"><div class="px-lg-5 px-sm-4 py-5"><h2 class="mb-4 fw-bold">On Kubernetes with Operator</h2><span class="text-muted fw-300">🗓️ Last updated on January 22, 2025
|
30 | 30 | <span class="mx-1 text-dark-50 fw-300">|</span> <i class="far fa-clock text-dark me-1"></i> 9
|
31 |
| -<span class="mx-1 text-dark-50 fw-300">|</span> <a href=https://github.com/microcks/microcks.io/edit/master/content/documentation/guides/installation/kubernetes-operator.md class="f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link">Improve this page</a></span><div class="doc-content mt-4 pt-4" data-bs-spy=scroll data-bs-target=#TableOfContents data-bs-offset=20><h2 id=overview>Overview</h2><p>This guide shows you how to deploy and use the <a href=https://github.com/microcks/microcks-operator target=_blank>Microcks Kubernetes Operator</a>. If you’re not familiar with Operators, we recommend having a read of this <a href=https://www.cncf.io/blog/2022/06/15/kubernetes-operators-what-are-they-some-examples/ target=_blank>excellent introduction on Kubernetes Operators</a> and their benefits.</p><p>The Microcks Operator offers advanced features comparing to the Helm chart and can be used in a complete <a href=https://www.redhat.com/en/topics/devops/what-is-gitops target=_blank>GitOps approach</a> where all the content of a Microcks instance can be pulled from a Git repository. Deploying this practice will allow the automated creation of fully-configured instances on demand, in seconds or minutes, and in a full reproducible way. The Microcks Operator is the cornerstone for your Sandbox-as-aService approach!</p><p>Let’s walk the different steps 🥾</p><h2 id=1-operator-deployment>1. Operator deployment</h2><p>Before starting, we’ll assume you have access to a working Kubernetes cluster with the adminstrator privileges. If it’s not the case, please ask your favorite SRE or Platform Engineer to do this preparation step for you. If you’re practicing, you can also use a local Minikube or Kind cluster. You can have a look a the first two steps of our <a href=/documentation/guides/installation/minikube-helm>Minikube with Helm</a> or <a href=/documentation/guides/installation/minikube-helm>Kind with Helm</a> installation guides to do so.</p><p>First thing, you need to do is to install the <a href=https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/ target=_blank>Custom Resource Definitions</a> of the Operator in your cluster. You can do this directly pointing to the resources on our GitHub repository:</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span>kubectl apply -f https://raw.githubusercontent.com/microcks/microcks-operator/refs/heads/main/deploy/crd/microckses.microcks.io-v1.yml |
| 31 | +<span class="mx-1 text-dark-50 fw-300">|</span> <a href=https://github.com/microcks/microcks.io/edit/master/content/documentation/guides/installation/kubernetes-operator.md class="f6 ph3 pv1 br2 dib tc ttu mv3 bg-primary-color white hover-bg-green link">Improve this page</a></span><div class="doc-content mt-4 pt-4" data-bs-spy=scroll data-bs-target=#TableOfContents data-bs-offset=20><h2 id=overview>Overview</h2><p>This guide shows you how to deploy and use the <a href=https://github.com/microcks/microcks-operator target=_blank>Microcks Kubernetes Operator</a>. If you’re not familiar with Operators, we recommend having a read of this <a href=https://www.cncf.io/blog/2022/06/15/kubernetes-operators-what-are-they-some-examples/ target=_blank>excellent introduction on Kubernetes Operators</a> and their benefits.</p><p>The Microcks Operator offers advanced features comparing to the Helm chart and can be used in a complete <a href=https://www.redhat.com/en/topics/devops/what-is-gitops target=_blank>GitOps approach</a> where all the content of a Microcks instance can be pulled from a Git repository. Deploying this practice will allow the automated creation of fully-configured instances on demand, in seconds or minutes, and in a full reproducible way. The Microcks Operator is the cornerstone for your Sandbox-as-a-Service approach!</p><p>Let’s walk the different steps 🥾</p><h2 id=1-operator-deployment>1. Operator deployment</h2><p>Before starting, we’ll assume you have access to a working Kubernetes cluster with the adminstrator privileges. If it’s not the case, please ask your favorite SRE or Platform Engineer to do this preparation step for you. If you’re practicing, you can also use a local Minikube or Kind cluster. You can have a look a the first two steps of our <a href=/documentation/guides/installation/minikube-helm>Minikube with Helm</a> or <a href=/documentation/guides/installation/minikube-helm>Kind with Helm</a> installation guides to do so.</p><p>First thing, you need to do is to install the <a href=https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/ target=_blank>Custom Resource Definitions</a> of the Operator in your cluster. You can do this directly pointing to the resources on our GitHub repository:</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span>kubectl apply -f https://raw.githubusercontent.com/microcks/microcks-operator/refs/heads/main/deploy/crd/microckses.microcks.io-v1.yml |
32 | 32 | </span></span><span style=display:flex><span>kubectl apply -f https://raw.githubusercontent.com/microcks/microcks-operator/refs/heads/main/deploy/crd/apisources.microcks.io-v1.yml
|
33 | 33 | </span></span><span style=display:flex><span>kubectl apply -f https://raw.githubusercontent.com/microcks/microcks-operator/refs/heads/main/deploy/crd/secretsources.microcks.io-v1.yml
|
34 | 34 | </span></span></code></pre></div><p>Then, you can install the operator itself in a dedicated namespace - let’s say <code>microcks</code> - using:</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-shell data-lang=shell><span style=display:flex><span>kubectl create namespace microcks
|
|
58 | 58 | </span></span><span style=display:flex><span>$ kubectl get ingresses -n microcks
|
59 | 59 | </span></span><span style=display:flex><span>--- OUTPUT ---
|
60 | 60 | </span></span><span style=display:flex><span>NAME CLASS HOSTS ADDRESS PORTS AGE
|
61 |
| -</span></span><span style=display:flex><span>microcks <none> microcks.m2.minikube.local 192.168.49.2 80, <span style=color:#ae81ff>443</span> 3m20s |
62 |
| -</span></span><span style=display:flex><span>microcks-grpc nginx microcks-grpc.m2.minikube.local 192.168.49.2 80, <span style=color:#ae81ff>443</span> 85s |
63 |
| -</span></span><span style=display:flex><span>microcks-keycloak <none> keycloak.m2.minikube.local 192.168.49.2 80, <span style=color:#ae81ff>443</span> 3m19s |
| 61 | +</span></span><span style=display:flex><span>microcks <none> microcks.m.minikube.local 192.168.49.2 80, <span style=color:#ae81ff>443</span> 3m20s |
| 62 | +</span></span><span style=display:flex><span>microcks-grpc nginx microcks-grpc.m.minikube.local 192.168.49.2 80, <span style=color:#ae81ff>443</span> 85s |
| 63 | +</span></span><span style=display:flex><span>microcks-keycloak <none> keycloak.m.minikube.local 192.168.49.2 80, <span style=color:#ae81ff>443</span> 3m19s |
64 | 64 | </span></span></code></pre></div><p>Start opening <code>https://keycloak.m.minikube.local</code> in your browser to validate the self-signed certificate. Once done, you can visit <code>https://microcks.m.minikube.local</code> in your browser, validate the self-signed certificate and start playing around with Microcks!</p><p>The default user/password is <code>admin/microcks123</code></p><h2 id=3-use-operator-custom-resources>3. Use Operator Custom Resources</h2><p>As said in the Overview section, one goal of the Microcks Operator is to allow you to manage all the content of your Microcks instance via Kubernetes resources only to allow a full GitOps approach. For that, the operator also provides the <code>APISource</code> and <code>SecretSource</code> Custom Resources to load pre-existing API definitions and connection secrets into an operator-managed Microcks instance.</p><h3 id=apisource-resource>APISource resource</h3><p>For example, you can create a new <code>APISource</code> CR named <code>tests-artifacts</code> that will load four artifacts into the microcks instance and create an additional <code>Hello Soap Service</code> importer. Instead of <a href=/documentation/guides/usage/importing-content/>importing Services & APIs via the UI or the API</a> or <a href=/documentation/guides/usage/importing-content/#2-import-content-via-importer>creating an importer</a>, you can directly apply this YAML resource on your Kubernetes namespace:</p><div class=highlight><pre tabindex=0 style=color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4><code class=language-yaml data-lang=yaml><span style=display:flex><span><span style=color:#ae81ff>cat <<EOF | kubectl apply -n microcks -f -</span>
|
65 | 65 | </span></span><span style=display:flex><span><span style=color:#f92672>apiVersion</span>: <span style=color:#ae81ff>microcks.io/v1alpha1</span>
|
66 | 66 | </span></span><span style=display:flex><span><span style=color:#f92672>kind</span>: <span style=color:#ae81ff>APISource</span>
|
|
0 commit comments