Files
Olga Maciaszek-Sharma 0e8a8848bb Update minikube guide links.
# Conflicts:
#	spring-cloud-kubernetes-examples/kubernetes-circuitbreaker-ribbon-example/readme.md
#	spring-cloud-kubernetes-examples/kubernetes-hello-world-example/README.md
#	spring-cloud-kubernetes-examples/kubernetes-leader-election-example/README.md
#	spring-cloud-kubernetes-examples/kubernetes-reload-example/README.md
#	spring-cloud-kubernetes-examples/kubernetes-zipkin-example/README.md
2021-01-19 17:43:37 +01:00

104 lines
3.3 KiB
Markdown

# Setting up the Environment
To play with these examples, you can install locally Kubernetes & Docker using [Minikube](https://minikube.sigs.k8s.io/docs/start/) within a Virtual Machine
managed by a hypervisor (Xhyve, Virtualbox or KVM) if your machine is not a native Unix operating system.
When the Minikube is installed on your machine, you can start kubernetes using this command:
```
minikube start
```
You also probably want to configure your docker client to point the Minikube docker daemon with:
```
eval $(minikube docker-env)
```
This will make sure that the docker images that you build are available to the Minikube environment.
## Kubernetes Reload Example
This example demonstrate how to use the reload feature to change the configuration of a spring-boot application at runtime.
The application consists of a timed bean that periodically prints a message to the console.
The message can be changed using a config map.
### Running the example
Once you have your environment set up, you can deploy the application using the fabric8 maven plugin:
```
mvn clean install fabric8:build fabric8:deploy -Pintegration
```
### Changing the configuration
Create a yaml file with the following contents:
```yml
apiVersion: v1
kind: ConfigMap
metadata:
name: reload-example
data:
application.properties: |-
bean.message=Hello World!
another.property=value
```
A sample config map is provided with this example in the *config-map.yml* file.
To deploy the config map, just run the following command on Kubernetes:
```
kubectl create -f config-map.yml
```
As soon as the config map is deployed, the output of the application changes accordingly.
The config map can be now edited with the following command:
```
kubectl edit configmap reload-example
```
Changes are applied immediately when using the *event* reload mode.
The name of the config map (*"reload-example"*) matches the name of the application as declared in the *application.properties* file.
**Note**: If you are running in a Kubernetes environment where [RBAC](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) is enabled, you need to make sure that your pod has the right level of authorizations to access the K8s APIs or resources.
To help you get started, a sample `ServiceAccount` and `RoleBinding` configuration is provided in `src/k8s` directory. These configuration needs to be applied to your K8s cluster and the newly created `ServiceAccount` needs to be attached to your pod spec like this:
```yml
spec:
containers:
image: <image_loc>
imagePullPolicy: IfNotPresent
livenessProbe:
failureThreshold: 3
httpGet:
path: /actuator/health
port: 8080
scheme: HTTP
initialDelaySeconds: 180
successThreshold: 1
name: spring-boot
ports:
- containerPort: 8080
name: http
protocol: TCP
- containerPort: 9779
name: prometheus
protocol: TCP
readinessProbe:
failureThreshold: 3
httpGet:
path: /actuator/health
port: 8080
scheme: HTTP
initialDelaySeconds: 10
successThreshold: 1
securityContext:
privileged: false
serviceAccountName: <service_account_name>
```