Skip to content

Commit 82625e2

Browse files
authored
Merge branch 'develop' into marinatest
2 parents 2da8422 + ad74cff commit 82625e2

34 files changed

+574
-108
lines changed

README.md

Lines changed: 8 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -18,97 +18,38 @@ Oracle is finding ways for organizations using WebLogic Server to run important
1818
* Scale WebLogic domains by starting and stopping Managed Servers on demand, or by integrating with a REST API to initiate scaling based on WLDF, Prometheus, Grafana, or other rules.
1919
* Publish operator and WebLogic Server logs into Elasticsearch and interact with them in Kibana.
2020

21-
The fastest way to experience the operator is to follow the [Quick Start guide](site/quickstart.md), or you can peruse our [documentation](site), read our [blogs](https://blogs.oracle.com/weblogicserver/updated-weblogic-kubernetes-support-with-operator-20), or try out the [samples](kubernetes/samples/README.md).
21+
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/updated-weblogic-kubernetes-support-with-operator-20), or try out the [samples](https://oracle.github.io/weblogic-kubernetes-operator/samples/).
2222

2323
***
2424
The [current release of the operator](https://github.com/oracle/weblogic-kubernetes-operator/releases) is 2.0.1.
2525
This release was published on March 4, 2019.
2626
***
2727

28-
## Known issues
28+
# Documentation
2929

30-
| Issue | Description |
31-
| --- | --- |
32-
| | |
30+
Documentation for the operator is available [here](https://oracle.github.io/weblogic-kubernetes-operator) and includes
31+
information for users and for developers. It provides samples, reference material like API documentation, security
32+
information and a *Quick Start* guide if you just want to get up and running quickly.
3333

34-
## Operator version 2.0
35-
36-
Documentation for the 2.0 release of the operator is available [here](site/v2.0/README.md).
37-
38-
## Operator version 1.1
39-
40-
Documentation for the 1.1 release of the operator is available [here](site/v1.1/README.md).
34+
Documentation for old releases of the operator is available [here](site/README.md).
4135

4236
# Backward compatibility guidelines
4337

44-
The 2.0 release introduces some breaking changes and does not maintain compatibility with previous releases.
38+
The 2.0 release introduced some breaking changes and did not maintain compatibility with previous releases.
4539

46-
Starting with the 2.0 release, future operator releases are intended to be backward compatible with respect to the domain
40+
Starting with the 2.0.1 release, operator releases are intended to be backward compatible with respect to the domain
4741
resource schema, operator Helm chart input values, configuration overrides template, Kubernetes resources created
4842
by the operator Helm chart, Kubernetes resources created by the operator, and the operator REST interface. We intend to
4943
maintain compatibility for three releases, except in the case of a clearly communicated deprecated feature, which will be
5044
maintained for one release after a replacement is available.
5145

52-
# About this documentation
53-
54-
This documentation includes sections targeted to different audiences. To help you find what you are looking for more easily,
55-
please consult this table of contents:
56-
57-
* The [Quick Start guide](site/quickstart.md) explains how to quickly get the operator running, using the defaults, nothing special.
58-
* The [User guide](site/user-guide.md) contains detailed usage information, including how to install and configure the operator,
59-
and how to use it to create and manage WebLogic domains.
60-
* The [Samples](kubernetes/samples/README.md) provide detailed example code and instructions that show you how to perform
61-
various tasks related to the operator.
62-
* The [Developer guide](site/developer.md) provides details for people who want to understand how the operator is built, tested, and so on. Those who wish to contribute to the operator code will find useful information here. This section also includes
63-
API documentation (Javadoc) and Swagger/OpenAPI documentation for the REST APIs.
64-
* The [Contributing](#contributing-to-the-operator) section provides information about contribution requirements.
65-
66-
67-
# User guide
68-
69-
The [User guide](site/user-guide.md) provides detailed information about all aspects of using the operator including:
70-
71-
* Installing and configuring the operator.
72-
* Using the operator to create and manage WebLogic domains.
73-
* Manually creating WebLogic domains to be managed by the operator.
74-
* Scaling WebLogic clusters.
75-
* Configuring Kubernetes load balancers.
76-
* Configuring Elasticsearch and Kibana to access the operator's log files.
77-
* Shutting down domains.
78-
* Removing/deleting domains.
79-
* And much more!
80-
81-
# Samples
82-
83-
Please refer to our [samples](kubernetes/samples/README.md) for information about the available sample code.
84-
8546
# Need more help? Have a suggestion? Come and say, "Hello!"
8647

8748
We have a **public Slack channel** where you can get in touch with us to ask questions about using the operator or give us feedback
8849
or suggestions about what features and improvements you would like to see. We would love to hear from you. To join our channel,
8950
please [visit this site to get an invitation](https://weblogic-slack-inviter.herokuapp.com/). The invitation email will include
9051
details of how to access our Slack workspace. After you are logged in, please come to `#operator` and say, "hello!"
9152

92-
# Recent changes
93-
94-
See [Recent changes](site/recent-changes.md) for changes to the operator, including any backward incompatible changes.
95-
96-
# Developer guide
97-
98-
Developers interested in this project are encouraged to read the [Developer guide](site/developer.md) to learn how to build the project, run tests, and so on. The Developer guide also provides details about the structure of the code, coding standards, and the Asynchronous Call facility used in the code to manage calls to the Kubernetes API.
99-
100-
Please take a look at our [wish list](https://github.com/oracle/weblogic-kubernetes-operator/wiki/Wish-list) to get an idea of the kind of features we would like to add to the operator. Maybe you will see something to which you would like to contribute!
101-
102-
## API documentation
103-
104-
Documentation for APIs:
105-
106-
* The operator provides a REST API that you can use to obtain configuration information and to initiate scaling actions. For details about how to use the REST APIs, see [Using the operator's REST services](site/rest.md).
107-
108-
* See the [Swagger](https://oracle.github.io/weblogic-kubernetes-operator/swagger/index.html) documentation for the operator's REST interface.
109-
110-
* See the [Javadoc](https://oracle.github.io/weblogic-kubernetes-operator/apidocs/index.html) for the operator.
111-
11253
# Contributing to the operator
11354

11455
Oracle welcomes contributions to this project from anyone. Contributions may be reporting an issue with the operator or submitting a pull request. Before embarking on significant development that may result in a large pull request, it is recommended that you create an issue and discuss the proposed changes with the existing developers first.
@@ -147,30 +88,3 @@ Only pull requests from committers that can be verified as having signed the OCA
14788

14889
Please be aware that pull requests that seek to introduce a new dependency will be subject to additional review. In general, contributors should avoid dependencies with incompatible licenses, and should try to use recent versions of dependencies. Standard security vulnerability checklists will be consulted before accepting a new dependency. Dependencies on closed-source code, including WebLogic Server, will most likely be rejected.
14990

150-
## Use Helm Chart from GitHub chart repository
151-
152-
Add this repo to Helm installation:
153-
154-
```
155-
$ helm repo add weblogic-operator https://oracle.github.io/weblogic-kubernetes-operator/charts
156-
```
157-
158-
Verify repository was added correctly:
159-
160-
```
161-
$ helm repo list
162-
NAME URL
163-
weblogic-operator https://oracle.github.io/weblogic-kubernetes-operator/charts
164-
```
165-
166-
Update with latest information about charts from chart repositories:
167-
168-
```
169-
$ helm repo update
170-
```
171-
172-
Install Operator from the repo:
173-
174-
```
175-
$ helm install weblogic-operator/weblogic-operator --name weblogic-operator
176-
```

docs-source/content/_index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ Documentation for prior releases of the operator is available [here](https://git
2727

2828
#### Backward compatibility guidelines
2929

30-
Starting from the 2.0 release, operator releases are backward compatible with respect to the domain
30+
Starting from the 2.0.1 release, operator releases are backward compatible with respect to the domain
3131
resource schema, operator Helm chart input values, configuration overrides template, Kubernetes resources created
3232
by the operator Helm chart, Kubernetes resources created by the operator, and the operator REST interface. We intend to
3333
maintain compatibility for three releases, except in the case of a clearly communicated deprecated feature, which will be

docs-source/content/faq/_index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ title = "Frequently asked questions"
33
date = 2019-02-23T08:14:59-05:00
44
weight = 7
55
chapter = true
6-
draft = true
6+
draft = false
77
pre = "<b>7. </b>"
88
+++
99

Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
---
2+
title: "Cannot Pull Image"
3+
date: 2019-03-23T08:08:19-04:00
4+
draft: false
5+
---
6+
7+
> My domain will not start and I see errors like `ImagePullBackoff` or `Cannot pull image`
8+
9+
When you see these kinds of errors it means that Kubernetes cannot find your Docker image.
10+
The most common causes are:
11+
12+
* The `image` value in your domain resource is set incorrectly, meaning Kubernetes will be
13+
trying to pull the wrong image
14+
* The image requires authentication or permission in order to pull it and you have not
15+
configured Kubernetes with the necessary credentials, for example in an `imagePullSecret`
16+
* You built the image on a machine that is not where your `kubelet` is running and Kubernetes
17+
cannot see the image, meaning you need to copy the image to the worker nodes or put it in
18+
a Docker registry that is accessible the to all of the worker nodes
19+
20+
Let's review what happens when Kubernetes starts a pod.
21+
22+
![Pulling an image](/weblogic-kubernetes-operator/images/image-pull.png)
23+
24+
The definition of the pod contains a list of container specifications. Each container
25+
specificiation contains the name (and optionally tag) of the image that should be used
26+
to run that container. In the example above, there is a container called `c1` which is
27+
configured to use the Docker image `some.registry.com/owner/domain1:1.0`. This image
28+
name is in the format `registry address / owner / name : tag`, so in this case the
29+
registry is `some.registry.com`, then owner is `owner`, the image name is `domain`
30+
and the tag is `1.0`. Tags are a lot like version numbers, but they are not required
31+
to be numbers or to be in any particular sequence or format. If you omit the tag, it
32+
is assumed to be `latest`.
33+
34+
{{% notice note %}}
35+
The Docker tag `latest` is confusing - it does not actually mean the latest version of
36+
the image that was created or published in the registry, it just literally means
37+
whichever version the owner decided to call "latest". Docker and Kubernetes make
38+
some assumptions about latest, and it is generally recommended to avoid using it and instead
39+
specify the actual version/tag that you really want.
40+
{{% /notice %}}
41+
42+
First, Kubernetes will check to see if the requested image is available in the local
43+
Docker image store on whichever worker node the pod was scheduled on. If it is there,
44+
then it will use that image to start the container. If it is not there, then Kubernetes
45+
will attempt to pull the image from a remote Docker registry.
46+
47+
{{% notice note %}}
48+
There is another setting called `imagePullPolicy` that can be used to force Kubernetes
49+
to always pull the image, even if it is already present in the local Docker image
50+
store.
51+
{{% /notice %}}
52+
53+
If the image is available in the remote registry and it is public, that is it does not
54+
require authentication, then Kubernetes will pull the image to the local Docker image
55+
store and start the container.
56+
57+
#### Images that require authentication
58+
59+
If the remote Docker registry requires authentication, then you will need to provide
60+
the authentication details in a Kubernetes `docker-registry` secret and tell Kubernetes
61+
to use that secret when pulling the image.
62+
63+
To create a secret, you can use the following command:
64+
65+
```
66+
kubectl create secret docker-registry secret1 \
67+
--docker-server=some.registry.com \
68+
--docker-username=bob \
69+
--docker-password=bigSecret \
70+
71+
--namespace=default
72+
```
73+
74+
In this command, you would replace `secret1` with the name of the secret; the `docker-server`
75+
is set to the registry name, without the `https://` prefix; the `docker-username`, `docker-password`
76+
and `docker-email` are set to match the credentials you use to authenticate to the remote
77+
Docker registry; and the `namespace` must be set to the same namespace where you intend to
78+
use the image.
79+
80+
{{% notice note %}}
81+
Some registries may need a suffix making the `docker-server` something like `some.registry.com/v2`
82+
for example. You will need to check with your registry provider's documentation to see if this is needed.
83+
{{% /notice %}}
84+
85+
After the secret is created, you need to tell Kubernetes to use it. This is done by adding
86+
an `imagePullSecret` to your Kubernetes YAML file. In the case of a WebLogic domain, you
87+
add the secret name to the `imagePullSecret` in the domain custom resource YAML file.
88+
89+
Here is an example of part of a domain custom resource file with the `imagePullSecret` above
90+
specified:
91+
92+
```
93+
apiVersion: "weblogic.oracle/v2"
94+
kind: Domain
95+
metadata:
96+
name: domain1
97+
namespace: default
98+
labels:
99+
weblogic.resourceVersion: domain-v2
100+
weblogic.domainUID: domain1
101+
spec:
102+
domainHome: /u01/oracle/user_projects/domains/domain1
103+
domainHomeInImage: true
104+
image: "some.registry.com/owner/domain1:1.0"
105+
imagePullPolicy: "IfNotPresent"
106+
imagePullSecrets:
107+
- name: secret1
108+
```
109+
110+
Alternatively, you can associate the secret with the service account that will be used to run
111+
the pod. If you do this, then you will not need to add the `imagePullSecret` to the domain
112+
resource. This is useful if you are running multiple domains in the same namespace.
113+
114+
To add the secret shown above to the `default` service account in the `weblogic` namespace, you
115+
would use a command like this:
116+
117+
```
118+
kubectl patch serviceaccount default \
119+
-n weblogic \
120+
-p '{"imagePullSecrets": [{"name": "secret1"}]}'
121+
```
122+
123+
{{% notice note %}}
124+
You can provide mutliple `imagePullSecrets` if you need to pull Docker images from multiple
125+
remote Docker registries or if your images require different authentication credentials.
126+
For more information, see [Docker Image Protection]({{<relref "/security/domain-security/image-protection.md#weblogic-domain-in-docker-image-protection">}})
127+
under **Security**.
128+
{{% /notice %}}
129+
130+
#### Manually copying the image to your worker nodes
131+
132+
If you are not able to use a remote Docker registry, for example if your Kubernetes cluster is
133+
in a secure network with no external access, you can manually copy the Docker images to the
134+
cluster instead.
135+
136+
On the machine where you created the image, export it into a tar file using this command:
137+
138+
```
139+
docker save domain1:1.0 > domain1.tar
140+
```
141+
142+
Then copy that tar file to each worker node in your Kubernetes cluster and run this command
143+
on each node:
144+
145+
```
146+
docker load < domain1.tar
147+
```
148+
149+
#### Restart pods to clear the error
150+
151+
After you have ensured that the images are accessible on all worker nodes, you may need to restart
152+
the pods so that Kubernetes will attempt to pull the images again. You can do this by
153+
deleting the pods themselves, or deleting the domain resource and then recreating it.

docs-source/content/userguide/managing-domains/domain-resource.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ pre = "<b> </b>"
1010

1111
Use this document to set up and configure your own [domain resource](https://github.com/oracle/weblogic-kubernetes-operator/blob/master/docs/domains/Domain.md) which can be used to configure your WLS domain. Then, you can use the domain resource to start the Kubernetes artifacts of the corresponding domain.
1212

13-
Swagger documentation is available [here](/weblogic-kubernetes-operator/swagger/index.html).
13+
Swagger documentation is available [here](https://oracle.github.io/weblogic-kubernetes-operator/swagger/index.html).
1414

1515
#### Prerequisites
1616

50 KB
Loading

integration-tests/README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,16 @@ Basic Use Cases described above are verified in all the domain configurations. A
7979
| Operator Helm Chart using not preexisted target domains namespace | create chart using not preexisted target domains namespace as already running first operator, verify that deployment fails with expected error |
8080
| Operator Helm Chart add/delete target domain namespaces (domain1, domain2) | create operator helm chart managing domain1, use upgrade to add domain2. Verify that operator is able to manage added domain (domain2). Use helm upgrade to remove domain1, verify that operator not able to manage anymore the deleted one(domain1) |
8181
| Operator Helm Chart delete operator helm chart, leave domain running | create operator helm chart and start domain1, delete operator helm chart, verify domain1 is still functional |
82+
83+
| Server Pods Restarted by modifying properties on the domain resource| Use Case |
84+
| --- | --- |
85+
| Server pods restarted by changing Env property | Verify admin and managed server pods being restarted by property change: "-Dweblogic.StdoutDebugEnabled=false" --> "-Dweblogic.StdoutDebugEnabled=true" |
86+
| Server pods restarted by changing image | Verify admin and managed server pods being restarted by property change: image: "store/oracle/weblogic:12.2.1.3" --> image: "store/oracle/weblogic:duplicate" |
87+
| Server pods restarted by changing imagePullPolicy | Verify admin and managed server pods being restarted by property change: imagePullPolicy: IfNotPresent --> imagePullPolicy: Never |
88+
| Server pods restarted by changing includeServerOutInPodLog | Verify admin and managed server pods being restarted by property change: includeServerOutInPodLog: true --> includeServerOutInPodLog: false |
89+
| Server pods restarted by changing logHomeEnable | Verify admin and managed server pods being restarted by property change: logHomeEnabled: true --> logHomeEnabled: false |
90+
91+
8292

8393

8494
# Directory Configuration and Structure

0 commit comments

Comments
 (0)