Skip to content

Commit e3713b3

Browse files
authored
Remove feature gate for auxiliary images and prepare for Operator 3.3.0 (#2452)
* Remove feature gate for auxiliary images and prepare for Operator 3.3.0
1 parent 72c46f7 commit e3713b3

File tree

350 files changed

+28418
-215
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

350 files changed

+28418
-215
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ You can:
2525
The fastest way to experience the operator is to follow the [Quick Start guide](https://oracle.github.io/weblogic-kubernetes-operator/quickstart/), or you can peruse our [documentation](https://oracle.github.io/weblogic-kubernetes-operator), read our [blogs](https://blogs.oracle.com/weblogicserver/how-to-weblogic-server-on-kubernetes), or try out the [samples](https://oracle.github.io/weblogic-kubernetes-operator/samples/simple/).
2626

2727
***
28-
The [current release of the operator](https://github.com/oracle/weblogic-kubernetes-operator/releases) is 3.2.5.
29-
This release was published on June 21, 2021.
28+
The [current release of the operator](https://github.com/oracle/weblogic-kubernetes-operator/releases) is 3.3.0.
29+
This release was published on July 20, 2021.
3030
***
3131

3232
# Documentation
@@ -36,7 +36,7 @@ Documentation for the operator is [available here](https://oracle.github.io/webl
3636
This documentation includes information for users and for developers. It provides samples, reference material, security
3737
information and a [Quick Start](https://oracle.github.io/weblogic-kubernetes-operator/quickstart/) guide if you just want to get up and running quickly.
3838

39-
Documentation for prior releases of the operator: [2.5.0](https://oracle.github.io/weblogic-kubernetes-operator/2.5/), [2.6.0](https://oracle.github.io/weblogic-kubernetes-operator/2.6/), [3.0.x](https://oracle.github.io/weblogic-kubernetes-operator/3.0/), and [3.1.x](https://oracle.github.io/weblogic-kubernetes-operator/3.1/).
39+
Documentation for prior releases of the operator: [2.5.0](https://oracle.github.io/weblogic-kubernetes-operator/2.5/), [2.6.0](https://oracle.github.io/weblogic-kubernetes-operator/2.6/), [3.0.x](https://oracle.github.io/weblogic-kubernetes-operator/3.0/), [3.1.x](https://oracle.github.io/weblogic-kubernetes-operator/3.1/), and [3.2.x](https://oracle.github.io/weblogic-kubernetes-operator/3.2/).
4040

4141
# Backward compatibility guidelines
4242

THIRD_PARTY_LICENSES.txt

Lines changed: 126 additions & 101 deletions
Large diffs are not rendered by default.

buildDockerImage.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ while getopts "t:" optname; do
3333
esac
3434
done
3535

36-
IMAGE_NAME=${name:-ghcr.io/oracle/weblogic-kubernetes-operator:3.2.5}
36+
IMAGE_NAME=${name:-ghcr.io/oracle/weblogic-kubernetes-operator:3.3.0}
3737
SCRIPTPATH="$( cd "$(dirname "$0")" > /dev/null 2>&1 ; pwd -P )"
3838

3939
# Proxy settings

buildtime-reports/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<parent>
99
<artifactId>operator-parent</artifactId>
1010
<groupId>oracle.kubernetes</groupId>
11-
<version>3.2.5</version>
11+
<version>3.3.0</version>
1212
</parent>
1313

1414
<artifactId>buildtime-reports</artifactId>
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
11
<p>Created with <i class="fas fa-heart"></i> from <a href="https://www.oracle.com">Oracle</a></p>
22
<p>&nbsp</p>
3+
<table border="1" bgcolor="white"><tbody><tr><td align="center"><p style="color: red">
4+
You are viewing the archived documentation for version 3.2.x.
5+
To view the documentation for the current release, please
6+
<a href="https://oracle.github.io/weblogic-kubernetes-operator">click here</a>
7+
</p></td></tr></tbody></table>
8+
<p>&nbsp</p>
39
<p><a href="https://github.com/oracle/weblogic-kubernetes-operator"><i class="fab fa-github"></i> GitHub repo</a></p>
410
<p><a href="https://weblogic-slack-inviter.herokuapp.com/"><i class="fab fa-slack"></i> Public Slack #operator</a></p>
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"git.ignoreLimitWarning": true
3+
}

documentation/3.3/README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# WebLogic Kubernetes Operator Documentation
2+
3+
***
4+
For information on updating and contributing to the operator
5+
documentation, see the _Documentation_ section of the
6+
[Developer Guide](https://oracle.github.io/weblogic-kubernetes-operator/developerguide/documentation)
7+
***
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
title: "{{ replace .Name "-" " " | title }}"
3+
date: {{ .Date }}
4+
draft: false
5+
---
6+

documentation/3.3/config.toml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# analytics
2+
googleAnalytics = "UA-129126578-2"
3+
4+
baseURL = "/weblogic-kubernetes-operator/"
5+
languageCode = "en-us"
6+
title = "WebLogic Kubernetes Operator"
7+
8+
# Change the default theme to be use when building the site with Hugo
9+
theme = "hugo-theme-learn"
10+
11+
publishDir = "docs"
12+
13+
# For search functionality
14+
[outputs]
15+
home = [ "HTML", "RSS", "JSON"]
16+
17+
[params]
18+
# disable the copy to clipboard links
19+
disableInlineCopyToClipBoard = true

documentation/3.3/content/_index.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
### WebLogic Kubernetes Operator
2+
3+
The WebLogic Kubernetes Operator (the “operator”) supports running your WebLogic Server and Fusion Middleware Infrastructure domains on Kubernetes, an industry standard, cloud neutral deployment platform. It lets you encapsulate your entire WebLogic Server installation and layered applications into a portable set of cloud neutral images and simple resource description files. You can run them on any on-premises or public cloud that supports Kubernetes where you've deployed the operator.
4+
5+
Furthermore, the operator is well suited to CI/CD processes. You can easily inject changes when moving between environments, such as from test to production. For example, you can externally inject database URLs and credentials during deployment or you can inject arbitrary changes to most WebLogic configurations.
6+
7+
The operator takes advantage of the [Kubernetes operator pattern](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/), which means that it uses Kubernetes APIs to provide support for operations, such as: provisioning, lifecycle management, application versioning, product patching, scaling, and security. The operator also enables the use of tooling that is native to this infrastructure for monitoring, logging, tracing, and security.
8+
9+
You can:
10+
* Deploy an operator that manages all WebLogic domains in all namespaces in a Kubernetes cluster, or that only manages domains in a specific subset of the namespaces, or that manages only domains that are located in the same namespace as the operator. At most, a namespace can be managed by one operator.
11+
* Supply WebLogic domain configuration using:
12+
* _Domain in PV_: Locates WebLogic domain homes in a Kubernetes PersistentVolume (PV). This PV can reside in an NFS file system or other Kubernetes volume types.
13+
* _Domain in Image_: Includes a WebLogic domain home in a container image.
14+
* _Model in Image_: Includes [WebLogic Deploy Tooling](https://oracle.github.io/weblogic-deploy-tooling/) models and archives in a container image.
15+
* Configure deployment of WebLogic domains as a Kubernetes resource (using a Kubernetes custom resource definition).
16+
* Override certain aspects of the WebLogic domain configuration; for example, use a different database password for different deployments.
17+
* Start and stop servers and clusters in the domain based on declarative startup parameters and desired states.
18+
* Scale WebLogic domains by starting and stopping Managed Servers on demand, or by integrating with a REST API to initiate scaling based on the WebLogic Diagnostics Framework (WLDF), Prometheus, Grafana, or other rules.
19+
* Expose the WebLogic Server Administration Console outside the Kubernetes cluster, if desired.
20+
* Expose T3 channels outside the Kubernetes domain, if desired.
21+
* Expose HTTP paths on a WebLogic domain outside the Kubernetes domain with load balancing, and automatically update the load balancer when Managed Servers in the WebLogic domain are started or stopped.
22+
* Publish operator and WebLogic Server logs into Elasticsearch and interact with them in Kibana.
23+
24+
{{% notice tip %}}
25+
The fastest way to experience the operator is to follow the [Quick Start guide]({{< relref "/quickstart/_index.md" >}}), or you can peruse our [documentation]({{< relref "/userguide/_index.md" >}}), read our [blogs](https://blogs.oracle.com/weblogicserver/how-to-weblogic-server-on-kubernetes), or try out the [samples]({{< relref "/samples/simple/_index.md" >}}).
26+
Also, you can step through the [Tutorial](https://github.com/oracle/weblogic-kubernetes-operator/blob/main/kubernetes/hands-on-lab/README.md)
27+
using the operator to deploy and run a WebLogic domain container-packaged web application on an Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE) cluster.
28+
{{% /notice %}}
29+
30+
***
31+
#### Current production release
32+
33+
The [current release of the operator](https://github.com/oracle/weblogic-kubernetes-operator/releases) is 3.3.0.
34+
This release was published on July 20, 2021. See the [operator prerequisites]({{< relref "/userguide/prerequisites/introduction.md" >}}) and [supported environments]({{< relref "/userguide/platforms/environments.md" >}}).
35+
36+
***
37+
38+
#### Recent changes and known issues
39+
40+
See the [Release Notes]({{< relref "release-notes.md" >}}) for recent changes to the operator and known issues.
41+
42+
#### Operator earlier versions
43+
44+
Documentation for prior releases of the operator: [2.5.0](https://oracle.github.io/weblogic-kubernetes-operator/2.5/), [2.6.0](https://oracle.github.io/weblogic-kubernetes-operator/2.6/), [3.0.x](https://oracle.github.io/weblogic-kubernetes-operator/3.0/), and [3.1.x](https://oracle.github.io/weblogic-kubernetes-operator/3.1/).
45+
46+
#### Backward compatibility guidelines
47+
48+
Starting from the 2.0.1 release, operator releases are backward compatible with respect to the domain
49+
resource schema, operator Helm chart input values, configuration overrides template, Kubernetes resources created
50+
by the operator Helm chart, Kubernetes resources created by the operator, and the operator REST interface. We intend to
51+
maintain compatibility for three releases, except in the case of a clearly communicated deprecated feature, which will be
52+
maintained for one release after a replacement is available.
53+
54+
#### Getting help
55+
56+
See [Get help]({{< relref "userguide/introduction/get-help.md" >}}).
57+
58+
#### Related projects
59+
60+
* [Oracle Fusion Middleware on Kubernetes](https://oracle.github.io/fmw-kubernetes/)
61+
* [WebLogic Deploy Tooling](https://oracle.github.io/weblogic-deploy-tooling/)
62+
* [WebLogic Image Tool](https://oracle.github.io/weblogic-image-tool/)
63+
* [WebLogic Monitoring Exporter](https://github.com/oracle/weblogic-monitoring-exporter)
64+
* [WebLogic Logging Exporter](https://github.com/oracle/weblogic-logging-exporter)
65+
* [WebLogic Remote Console](https://github.com/oracle/weblogic-remote-console)
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
+++
2+
title = "Developer Guide"
3+
date = 2019-02-22T15:27:54-05:00
4+
weight = 7
5+
chapter = true
6+
pre = "<b> </b>"
7+
+++
8+
9+
10+
# Developer Guide
11+
12+
The Developer Guide provides information for developers who want to understand or contribute to the code.
Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
---
2+
title: "Asynchronous call model"
3+
date: 2019-02-23T17:20:00-05:00
4+
draft: false
5+
weight: 7
6+
---
7+
8+
9+
Our expectation is that customers will task the operator with managing hundreds of WebLogic domains across dozens of Kubernetes Namespaces. Therefore, we have designed the operator with an efficient user-level threads pattern. We've used that pattern to implement an asynchronous call model for Kubernetes API requests. This call model has built-in support for timeouts, retries with exponential back-off, and lists that exceed the requested maximum size using the continuance functionality.
10+
11+
#### User-level thread pattern
12+
13+
The user-level thread pattern is implemented by the classes in the `oracle.kubernetes.operator.work` package.
14+
15+
* `Engine`: The executor service and factory for `Fibers`.
16+
* `Fiber`: The user-level thread. `Fibers` represent the execution of a single processing flow through a series of `Steps`. `Fibers` may be suspended and later resumed, and do not consume a `Thread` while suspended.
17+
* `Step`: Individual CPU-bound activity in a processing flow.
18+
* `Packet`: Context of the processing flow.
19+
* `NextAction`: Used by a `Step` when it returns control to the `Fiber` to indicate what should happen next. Common 'next actions' are to execute another `Step` or to suspend the `Fiber`.
20+
* `Component`: Provider of SPI's that may be useful to the processing flow.
21+
* `Container`: Represents the containing environment and is a `Component`.
22+
23+
Each `Step` has a reference to the next `Step` in the processing flow; however, `Steps` are not required to indicate that the next `Step` be invoked by the `Fiber` when the `Step` returns a `NextAction` to the `Fiber`. This leads to common use cases where `Fibers` invoke a series of `Steps` that are linked by the 'is-next' relationship, but just as commonly, use cases where the `Fiber` will invoke sets of `Steps` along a detour before returning to the normal flow.
24+
25+
In this sample, the caller creates an `Engine`, `Fiber`, linked set of `Step` instances, and `Packet`. The `Fiber` is then started. The `Engine` would typically be a singleton, since it's backed by a `ScheduledExecutorService`. The `Packet` would also typically be pre-loaded with values that the `Steps` would use in their `apply()` methods.
26+
27+
```java
28+
static class SomeClass {
29+
public static void main(String[] args) {
30+
Engine engine = new Engine("worker-pool");
31+
32+
Fiber fiber = engine.createFiber();
33+
34+
Step step = new StepOne(new StepTwo(new StepThree(null)));
35+
Packet packet = new Packet();
36+
37+
fiber.start(
38+
step,
39+
packet,
40+
new CompletionCallback() {
41+
@Override
42+
public void onCompletion(Packet packet) {
43+
// Fiber has completed successfully
44+
}
45+
46+
@Override
47+
public void onThrowable(Packet packet, Throwable throwable) {
48+
// Fiber processing was terminated with an exception
49+
}
50+
});
51+
}
52+
}
53+
```
54+
55+
`Steps` must not invoke sleep or blocking calls from within `apply()`. This prevents the worker threads from serving other `Fibers`. Instead, use asynchronous calls and the `Fiber` suspend/resume pattern. `Step` provides a method, `doDelay()`, which creates a `NextAction` to drive `Fiber` suspend/resume that is a better option than sleep precisely because the worker thread can serve other `Fibers` during the delay. For asynchronous IO or similar patterns, suspend the `Fiber`. In the callback as the `Fiber` suspends, initiate the asynchronous call. Finally, when the call completes, resume the `Fiber`. The suspend/resume functionality handles the case where resumed before the suspending callback completes.
56+
57+
In this sample, the step uses asynchronous file IO and the suspend/resume `Fiber` pattern.
58+
59+
```java
60+
static class StepTwo extends Step {
61+
public StepTwo(Step next) {
62+
super(next);
63+
}
64+
65+
@Override
66+
public NextAction apply(Packet packet) {
67+
return doSuspend((fiber) -> {
68+
// The Fiber is now suspended
69+
// Start the asynchronous call
70+
try {
71+
Path path = Paths.get(URI.create(this.getClass().getResource("/somefile.dat").toString()));
72+
AsynchronousFileChannel fileChannel =
73+
AsynchronousFileChannel.open(path, StandardOpenOption.READ);
74+
75+
ByteBuffer buffer = ByteBuffer.allocate(1024);
76+
fileChannel.read(buffer, 0, buffer, new CompletionHandler<Integer, ByteBuffer>() {
77+
@Override
78+
void completed(Integer result, ByteBuffer attachment) {
79+
// Store data in Packet and resume Fiber
80+
packet.put("DATA_SIZE_READ", result);
81+
packet.put("DATA_FROM_SOMEFILE", attachment);
82+
fiber.resume(packet);
83+
}
84+
85+
@Override
86+
public void failed(Throwable exc, ByteBuffer attachment) {
87+
// log exc
88+
completed(0, null);
89+
}
90+
});
91+
} catch (IOException e) {
92+
// log exception
93+
// If not resumed here, Fiber will never be resumed
94+
}
95+
});
96+
}
97+
}
98+
```
99+
100+
#### Call builder pattern
101+
102+
The asynchronous call model is implemented by classes in the `oracle.kubernetes.operator.helpers` package, including `CallBuilder` and `ResponseStep`. The model is based on the `Fiber` suspend/resume pattern described above. `CallBuilder` provides many methods having names ending with "Async", such as `listPodAsync()` or `deleteServiceAsync()`. These methods return a `Step` that can be returned as part of a `NextAction`. When creating these `Steps`, the developer must provide a `ResponseStep`. Only `ResponseStep.onSuccess()` must be implemented; however, it is often useful to override `onFailure()` as Kubernetes treats `404 (Not Found)` as a failure.
103+
104+
In this sample, the developer is using the pattern to list pods from the default namespace that are labeled as part of `cluster-1`.
105+
106+
```java
107+
static class StepOne extends Step {
108+
public StepOne(Step next) {
109+
super(next);
110+
}
111+
112+
@Override
113+
public NextAction apply(Packet packet) {
114+
String namespace = "default";
115+
Step step = CallBuilder.create().with($ -> {
116+
$.labelSelector = "weblogic.clusterName=cluster-1";
117+
$.limit = 50;
118+
$.timeoutSeconds = 30;
119+
}).listPodAsync(namespace, new ResponseStep<V1PodList>(next) {
120+
@Override
121+
public NextAction onFailure(Packet packet, ApiException e, int statusCode,
122+
Map<String, List<String>> responseHeaders) {
123+
if (statusCode == CallBuilder.NOT_FOUND) {
124+
return onSuccess(packet, null, statusCode, responseHeaders);
125+
}
126+
return super.onFailure(packet, e, statusCode, responseHeaders);
127+
}
128+
129+
@Override
130+
NextAction onSuccess(Packet packet, V1PodList result, int statusCode,
131+
Map<String, List<String>> responseHeaders) {
132+
// do something with the result Pod, if not null
133+
return doNext(packet);
134+
}
135+
});
136+
137+
return doNext(step, packet);
138+
}
139+
}
140+
```
141+
142+
Notice that the required parameters, such as `namespace`, are method arguments, but optional parameters are designated using a simplified builder pattern using `with()` and a lambda.
143+
144+
The default behavior of `onFailure()` will retry with an exponential backoff the request on status codes `429 (TooManyRequests)`, `500 (InternalServerError)`, `503 (ServiceUnavailable)`, `504 (ServerTimeout)` or a simple timeout with no response from the server.
145+
146+
If the server responds with status code `409 (Conflict)`, then this indicates an optimistic locking failure. Common use cases are that the code read a Kubernetes object in one asynchronous step, modified the object, and attempted to replace the object in another asynchronous step; however, another activity replaced that same object in the interim. In this case, retrying the request would give the same result. Therefore, developers may provide an "on conflict" step when calling `super.onFailure()`. The conflict step will be invoked after an exponential backoff delay. In this example, that conflict step should be the step that reads the existing Kubernetes object.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
title: "Backward compatibility"
3+
date: 2019-02-23T17:26:09-05:00
4+
draft: false
5+
weight: 9
6+
---
7+
8+
Starting with the 2.0.1 release, operator releases must be backward compatible with respect to the Domain schema, operator Helm chart input values, configuration overrides template, Kubernetes resources created by the operator Helm chart, Kubernetes resources created by the operator, and the operator REST interface. We will maintain compatibility for three releases, except in the case of a clearly communicated deprecated feature, which will be maintained for one release after a replacement is available.

0 commit comments

Comments
 (0)