Compare commits
29 Commits
Author | SHA1 | Date | |
---|---|---|---|
cb3aa63370 | |||
e59495665c | |||
fb79fe0dc8 | |||
bd2619a14b | |||
54f1c382f5 | |||
218128db23 | |||
6f9ed1279c | |||
2ff3dcad1e | |||
eab72db590 | |||
04c3ba7fe1 | |||
8d7d0e5119 | |||
1cf4d8e6ae | |||
2705d760bf | |||
ad1c5af0d8 | |||
b2b868f0be | |||
aa23f2f9b3 | |||
517e7b3e6a | |||
d5b43b160a | |||
f94133b505 | |||
60c869a141 | |||
347dff8ea8 | |||
82dacc05d9 | |||
f67be8dbb8 | |||
c4bd44f3f4 | |||
9d83a6768d | |||
45dbb893d1 | |||
eaa86fd867 | |||
37d6785ee2 | |||
27a80c7b25 |
@ -5,12 +5,13 @@ RUN apk add --update --no-cache \
|
|||||||
git \
|
git \
|
||||||
jq
|
jq
|
||||||
WORKDIR "/home/node"
|
WORKDIR "/home/node"
|
||||||
ARG WIKI_PACKAGE=wiki@0.20.0
|
ARG WIKI_PACKAGE=wiki@0.28.0
|
||||||
RUN su node -c "npm install -g --prefix . $WIKI_PACKAGE"
|
RUN su node -c "npm install -g --prefix . $WIKI_PACKAGE"
|
||||||
RUN su node -c "mkdir -p .wiki"
|
RUN su node -c "mkdir -p .wiki"
|
||||||
VOLUME "/home/node/.wiki"
|
VOLUME "/home/node/.wiki"
|
||||||
EXPOSE 3000
|
EXPOSE 3000
|
||||||
USER node
|
USER node
|
||||||
ENV PATH="${PATH}:/home/node/bin"
|
ENV PATH="${PATH}:/home/node/bin"
|
||||||
|
ENV NPM_CONFIG_PREFIX="${HOME}"
|
||||||
ENTRYPOINT ["dumb-init"]
|
ENTRYPOINT ["dumb-init"]
|
||||||
CMD ["wiki", "--farm", "--security_type=friends"]
|
CMD ["wiki", "--farm", "--security_type=friends"]
|
||||||
|
58
README.md
58
README.md
@ -7,7 +7,7 @@ Start Playing Federated Wiki: http://start.fed.wiki
|
|||||||
docker run -p 3000:3000 -it --rm \
|
docker run -p 3000:3000 -it --rm \
|
||||||
dobbs/farm
|
dobbs/farm
|
||||||
|
|
||||||
Visit http://localhost:3000 and http://anything.localtest.me:3000
|
Visit http://localhost:3000 and http://anything.localhost:3000
|
||||||
|
|
||||||
### Run a local wiki that will survive a reboot
|
### Run a local wiki that will survive a reboot
|
||||||
|
|
||||||
@ -17,42 +17,40 @@ Visit http://localhost:3000 and http://anything.localtest.me:3000
|
|||||||
|
|
||||||
Your wiki pages and configuration will be saved in the ~/.wiki folder.
|
Your wiki pages and configuration will be saved in the ~/.wiki folder.
|
||||||
|
|
||||||
# Release Notes for 1.0.0
|
|
||||||
|
|
||||||
This is a significant **breaking** change from pre-1.0 releases. Especially:
|
|
||||||
|
|
||||||
* changed the user from `app` (`uid=1001(app) gid=1001(app) groups=1001(app)`)
|
|
||||||
to `node` (`uid=1000(node) gid=1000(node) groups=1000(node),1000(node)`)
|
|
||||||
|
|
||||||
* no longer installing `bash`, `configure-wiki`, nor `set-owner-name`
|
|
||||||
|
|
||||||
* no longer creating `/home/app/.wiki/wiki.json`
|
|
||||||
|
|
||||||
Those changes in particular will impose some work on authors upgrading
|
|
||||||
from previous versions.
|
|
||||||
|
|
||||||
The last non-breaking revision is 0.52.0 https://github.com/dobbs/farm/tree/0.52.0#readme
|
|
||||||
|
|
||||||
# Development
|
# Development
|
||||||
|
|
||||||
This image's tag does not match the version of the included wiki software.
|
This image's tag does not match the version of the included wiki
|
||||||
|
software. Our version indicates the scale of changes in this tiny
|
||||||
|
devops pipeline.
|
||||||
|
|
||||||
Notes to self:
|
Testing new images locally:
|
||||||
|
|
||||||
``` bash
|
``` bash
|
||||||
docker build --tag dobbs/farm:0.51.0 .
|
TAG=1.0.8-prefer-title
|
||||||
git tag -am "" '0.51.0'
|
IMAGE=dobbs/farm:$TAG
|
||||||
git push --tags
|
docker build --tag $IMAGE .
|
||||||
```
|
```
|
||||||
|
|
||||||
The repos in Dockerhub and GitHub are configured to automatically build new tags.
|
With the local kubernetes example (see [examples/k8s/README.md](./examples/k8s/README.md)):
|
||||||
|
|
||||||
# Publish experimental plugins
|
|
||||||
|
|
||||||
``` bash
|
``` bash
|
||||||
docker build \
|
k3d image import $IMAGE --cluster wiki
|
||||||
--tag dobbs/farm:0.14.0-frame \
|
kubectl patch deployment.apps/wiki-deployment \
|
||||||
--build-arg WIKI_PACKAGE='dobbs/wiki#frame' \
|
--type='json' \
|
||||||
.
|
-p='[{"op": "replace", "path": "/spec/template/spec/containers/0/image", "value":"'$IMAGE'"}]'
|
||||||
docker push dobbs/farm:0.14.0-frame
|
```
|
||||||
|
|
||||||
|
# Publish containers
|
||||||
|
|
||||||
|
GitHub
|
||||||
|
``` bash
|
||||||
|
git tag -am "" "$TAG"
|
||||||
|
git push --atomic origin main "$TAG"
|
||||||
|
```
|
||||||
|
|
||||||
|
Docker Hub
|
||||||
|
|
||||||
|
``` bash
|
||||||
|
docker push $IMAGE
|
||||||
|
docker push dobbs/farm:latest
|
||||||
```
|
```
|
||||||
|
15
RELEASE-NOTES-1.0.0.md
Normal file
15
RELEASE-NOTES-1.0.0.md
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
# Release Notes for 1.0.0
|
||||||
|
|
||||||
|
This is a significant **breaking** change from pre-1.0 releases. Especially:
|
||||||
|
|
||||||
|
* changed the user from `app` (`uid=1001(app) gid=1001(app) groups=1001(app)`)
|
||||||
|
to `node` (`uid=1000(node) gid=1000(node) groups=1000(node),1000(node)`)
|
||||||
|
|
||||||
|
* no longer installing `bash`, `configure-wiki`, nor `set-owner-name`
|
||||||
|
|
||||||
|
* no longer creating `/home/app/.wiki/wiki.json`
|
||||||
|
|
||||||
|
Those changes in particular will impose some work on authors upgrading
|
||||||
|
from previous versions.
|
||||||
|
|
||||||
|
The last non-breaking revision is 0.52.0 https://github.com/dobbs/farm/tree/0.52.0#readme
|
@ -3,25 +3,54 @@
|
|||||||
There are easier ways to get started with federated wiki. Here we are
|
There are easier ways to get started with federated wiki. Here we are
|
||||||
using wiki to drive some learning about kubernetes.
|
using wiki to drive some learning about kubernetes.
|
||||||
|
|
||||||
# We're using MacOS, Docker Desktop, and kind
|
# We're using MacOS, Docker Desktop, and k3d
|
||||||
|
|
||||||
|
brew install --cask docker
|
||||||
|
brew install k3d
|
||||||
|
|
||||||
|
mkdir -p ~/.wiki-k8s ~/workspace/fedwiki
|
||||||
|
k3d create \
|
||||||
|
--server-arg --tls-san="127.0.0.1" \
|
||||||
|
--publish 80:80 \
|
||||||
|
-v "$HOME/.wiki-k8s:/macos/.wiki-k8s" \
|
||||||
|
-v "$HOME/workspace/fedwiki:/macos/fedwiki" \
|
||||||
|
--name wiki
|
||||||
|
|
||||||
|
# example ~/.wiki-k8s/config.json
|
||||||
|
|
||||||
|
{
|
||||||
|
"admin": "any memorable password",
|
||||||
|
"autoseed": true,
|
||||||
|
"farm": true,
|
||||||
|
"cookieSecret": "any random string",
|
||||||
|
"secure_cookie": false,
|
||||||
|
"security_type": "friends",
|
||||||
|
"wikiDomains": {
|
||||||
|
"localhost": {
|
||||||
|
"id": "/home/node/.wiki/localhost.owner.json"
|
||||||
|
},
|
||||||
|
"example.com": {
|
||||||
|
"id": "/home/node/.wiki/example.com.owner.json"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# example ~/.wiki-k8s/localhost.owner.json
|
||||||
|
|
||||||
|
`.friend.secret` must match the `.admin` field from `config.json`
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "The Owner",
|
||||||
|
"friend": {
|
||||||
|
"secret": "any memorable password"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
brew cask install docker
|
|
||||||
brew install kind
|
|
||||||
kind create cluster --name wiki
|
|
||||||
|
|
||||||
# Deploy Wiki
|
# Deploy Wiki
|
||||||
|
|
||||||
kubectl apply -f wiki.yaml
|
kubectl apply -f http://deploy.wiki.do/assets/wiki/wiki.yaml
|
||||||
|
|
||||||
# Play with the wiki
|
# Play with the wiki
|
||||||
|
|
||||||
# pbcopy & open are MacOS commands
|
open http://wiki.localhost
|
||||||
kubectl port-forward svc/wiki-service 3000:80 \
|
|
||||||
> port-forward.log \
|
|
||||||
2> port-forward.err &
|
|
||||||
# get admin password on the clipboard
|
|
||||||
kubectl exec svc/wiki-service -- \
|
|
||||||
jq -r .admin .wiki/config.json \
|
|
||||||
| pbcopy
|
|
||||||
open http://localhost:3000
|
|
||||||
# login with the password on the clipboard
|
|
||||||
|
29
examples/k8s/vault/README.md
Normal file
29
examples/k8s/vault/README.md
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
# HashiCorp Vault in kubernetes
|
||||||
|
|
||||||
|
HashiCorp recomend installing vault via helm. Your author prefers
|
||||||
|
plain old kubernetes configs.
|
||||||
|
|
||||||
|
So we generated the yaml via helm's template command.
|
||||||
|
|
||||||
|
helm template incubator/vault \
|
||||||
|
--name-template=vault \
|
||||||
|
--replicaCount=1 \
|
||||||
|
--set vault.dev=false \
|
||||||
|
--set vault.config.storage.file.path=/macos/.wiki-k8s/vault \
|
||||||
|
| egrep -v 'heritage: "?Helm"?' \
|
||||||
|
> vault.html
|
||||||
|
|
||||||
|
kubectl apply -k .
|
||||||
|
kubectl port-forward svc/vault 8200:8200 &> /dev/null &
|
||||||
|
|
||||||
|
export VAULT_ADDR=http://127.0.0.1:8200
|
||||||
|
vault status
|
||||||
|
vault operator init
|
||||||
|
vault operator unseal
|
||||||
|
# paste key-fragment 1
|
||||||
|
vault operator unseal
|
||||||
|
# paste key-fragment 2
|
||||||
|
vault operator unseal
|
||||||
|
# paste key-fragment 3
|
||||||
|
vault login
|
||||||
|
# paste root token
|
16
examples/k8s/vault/deployment-volumes.yaml
Normal file
16
examples/k8s/vault/deployment-volumes.yaml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: vault
|
||||||
|
spec:
|
||||||
|
template:
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: vault
|
||||||
|
volumeMounts:
|
||||||
|
- name: vault-data
|
||||||
|
mountPath: /macos/.wiki-k8s/vault
|
||||||
|
volumes:
|
||||||
|
- name: vault-data
|
||||||
|
hostPath:
|
||||||
|
path: /macos/.wiki-k8s/vault
|
10
examples/k8s/vault/kustomization.yaml
Normal file
10
examples/k8s/vault/kustomization.yaml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
images:
|
||||||
|
- name: vault
|
||||||
|
newName: vault
|
||||||
|
newTag: 1.3.1
|
||||||
|
resources:
|
||||||
|
- vault.yaml
|
||||||
|
patchesStrategicMerge:
|
||||||
|
- deployment-volumes.yaml
|
181
examples/k8s/vault/vault.yaml
Normal file
181
examples/k8s/vault/vault.yaml
Normal file
@ -0,0 +1,181 @@
|
|||||||
|
---
|
||||||
|
# Source: vault/templates/clusterrolebinding.yaml
|
||||||
|
apiVersion: rbac.authorization.k8s.io/v1beta1
|
||||||
|
kind: ClusterRoleBinding
|
||||||
|
metadata:
|
||||||
|
name: vault
|
||||||
|
labels:
|
||||||
|
app: vault
|
||||||
|
release: "vault"
|
||||||
|
roleRef:
|
||||||
|
apiGroup: rbac.authorization.k8s.io
|
||||||
|
kind: ClusterRole
|
||||||
|
name: system:auth-delegator
|
||||||
|
subjects:
|
||||||
|
- kind: ServiceAccount
|
||||||
|
name: vault
|
||||||
|
namespace: default
|
||||||
|
---
|
||||||
|
# Source: vault/templates/configmap.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: "vault-config"
|
||||||
|
labels:
|
||||||
|
app: "vault"
|
||||||
|
release: "vault"
|
||||||
|
data:
|
||||||
|
config.json: |
|
||||||
|
{"listener":{"tcp":{"address":"[::]:8200","cluster_address":"[::]:8201","tls_disable":true}},"storage":{"file":{"path":"/macos/.wiki-k8s/vault"}}}
|
||||||
|
---
|
||||||
|
# Source: vault/templates/deployment.yaml
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: vault
|
||||||
|
labels:
|
||||||
|
app: vault
|
||||||
|
release: vault
|
||||||
|
annotations:
|
||||||
|
{}
|
||||||
|
spec:
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: vault
|
||||||
|
release: vault
|
||||||
|
replicas: 1
|
||||||
|
strategy:
|
||||||
|
type: RollingUpdate
|
||||||
|
rollingUpdate:
|
||||||
|
maxUnavailable: 1
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: vault
|
||||||
|
release: vault
|
||||||
|
annotations:
|
||||||
|
checksum/config: 6868eb00aa48ca9485c365c3523ae431e7031233a1c046817a32c61e24ea817d
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: vault
|
||||||
|
image: "vault:1.2.3"
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
command: ["vault", "server", "-config", "/vault/config/config.json"]
|
||||||
|
ports:
|
||||||
|
- containerPort: 8200
|
||||||
|
name: api
|
||||||
|
- containerPort: 8201
|
||||||
|
name: cluster-address
|
||||||
|
livenessProbe:
|
||||||
|
# Alive if Vault is successfully responding to requests
|
||||||
|
httpGet:
|
||||||
|
path: /v1/sys/health?standbyok=true&uninitcode=204&sealedcode=204&
|
||||||
|
port: 8200
|
||||||
|
scheme: HTTP
|
||||||
|
initialDelaySeconds: 30
|
||||||
|
periodSeconds: 10
|
||||||
|
readinessProbe:
|
||||||
|
# Ready depends on preference
|
||||||
|
httpGet:
|
||||||
|
path: /v1/sys/health?standbycode=204&uninitcode=204&
|
||||||
|
port: 8200
|
||||||
|
scheme: HTTP
|
||||||
|
initialDelaySeconds: 10
|
||||||
|
periodSeconds: 10
|
||||||
|
securityContext:
|
||||||
|
readOnlyRootFilesystem: true
|
||||||
|
capabilities:
|
||||||
|
add:
|
||||||
|
- IPC_LOCK
|
||||||
|
env:
|
||||||
|
- name: POD_IP
|
||||||
|
valueFrom:
|
||||||
|
fieldRef:
|
||||||
|
fieldPath: status.podIP
|
||||||
|
- name: VAULT_API_ADDR
|
||||||
|
value: "http://$(POD_IP):8200"
|
||||||
|
- name: VAULT_CLUSTER_ADDR
|
||||||
|
value: "https://$(POD_IP):8201"
|
||||||
|
- name: VAULT_LOG_LEVEL
|
||||||
|
value: "info"
|
||||||
|
resources:
|
||||||
|
{}
|
||||||
|
volumeMounts:
|
||||||
|
- name: vault-config
|
||||||
|
mountPath: /vault/config/
|
||||||
|
- name: vault-root
|
||||||
|
mountPath: /root/
|
||||||
|
affinity:
|
||||||
|
podAntiAffinity:
|
||||||
|
preferredDuringSchedulingIgnoredDuringExecution:
|
||||||
|
- podAffinityTerm:
|
||||||
|
labelSelector:
|
||||||
|
matchLabels:
|
||||||
|
app: 'vault'
|
||||||
|
release: 'vault'
|
||||||
|
topologyKey: kubernetes.io/hostname
|
||||||
|
weight: 100
|
||||||
|
serviceAccountName: vault
|
||||||
|
volumes:
|
||||||
|
- name: vault-config
|
||||||
|
configMap:
|
||||||
|
name: "vault-config"
|
||||||
|
- name: vault-root
|
||||||
|
emptyDir: {}
|
||||||
|
---
|
||||||
|
# Source: vault/templates/pdb.yaml
|
||||||
|
apiVersion: policy/v1beta1
|
||||||
|
kind: PodDisruptionBudget
|
||||||
|
metadata:
|
||||||
|
name: vault
|
||||||
|
spec:
|
||||||
|
maxUnavailable: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: vault
|
||||||
|
release: vault
|
||||||
|
---
|
||||||
|
# Source: vault/templates/service.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: vault
|
||||||
|
labels:
|
||||||
|
app: vault
|
||||||
|
release: vault
|
||||||
|
spec:
|
||||||
|
type: ClusterIP
|
||||||
|
ports:
|
||||||
|
- port: 8200
|
||||||
|
protocol: TCP
|
||||||
|
targetPort: 8200
|
||||||
|
name: api
|
||||||
|
selector:
|
||||||
|
app: vault
|
||||||
|
release: vault
|
||||||
|
---
|
||||||
|
# Source: vault/templates/serviceaccount.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: vault
|
||||||
|
labels:
|
||||||
|
app: vault
|
||||||
|
release: "vault"
|
||||||
|
---
|
||||||
|
# Source: vault/templates/tests/test-vault-status.yaml
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Pod
|
||||||
|
metadata:
|
||||||
|
name: "vault-vault-status-test"
|
||||||
|
annotations:
|
||||||
|
"helm.sh/hook": test-success
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: vault-vault-status-test
|
||||||
|
image: "vault:1.2.3"
|
||||||
|
env:
|
||||||
|
- name: VAULT_ADDR
|
||||||
|
value: http://vault.default:8200
|
||||||
|
command: ["sh", "-c", "vault status"]
|
||||||
|
restartPolicy: Never
|
@ -1,130 +0,0 @@
|
|||||||
apiVersion: v1
|
|
||||||
kind: PersistentVolumeClaim
|
|
||||||
metadata:
|
|
||||||
name: dot-wiki
|
|
||||||
spec:
|
|
||||||
accessModes:
|
|
||||||
- ReadWriteOnce
|
|
||||||
volumeMode: Filesystem
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: 4Gi
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
name: wiki-config
|
|
||||||
data:
|
|
||||||
config.json: |
|
|
||||||
{
|
|
||||||
"admin": "ADMIN",
|
|
||||||
"farm": true,
|
|
||||||
"cookieSecret": "RANDOM",
|
|
||||||
"security_type": "friends",
|
|
||||||
"secure_cookie": false,
|
|
||||||
"wikiDomains": {
|
|
||||||
"local": {
|
|
||||||
"id": "/home/node/.wiki/local.owner.json"
|
|
||||||
},
|
|
||||||
"localhost": {
|
|
||||||
"id": "/home/node/.wiki/local.owner.json"
|
|
||||||
},
|
|
||||||
"localtest.me": {
|
|
||||||
"id": "/home/node/.wiki/local.owner.json"
|
|
||||||
},
|
|
||||||
"local.dbbs.co": {
|
|
||||||
"id": "/home/node/.wiki/local.owner.json"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
local.owner.json: |
|
|
||||||
{
|
|
||||||
"name": "The Owner",
|
|
||||||
"friend": {
|
|
||||||
"secret": "ADMIN"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
install-config: |
|
|
||||||
#!/bin/sh
|
|
||||||
randomstring() {
|
|
||||||
node -e 'console.log(require("crypto").randomBytes(64).toString("hex"))'
|
|
||||||
}
|
|
||||||
readonly ADMIN=$(randomstring)
|
|
||||||
readonly COOKIE=$(randomstring)
|
|
||||||
|
|
||||||
readonly CONFIG=/home/node/.wiki/config.json
|
|
||||||
readonly OWNER=/home/node/.wiki/local.owner.json
|
|
||||||
[ -f $CONFIG ] || {
|
|
||||||
jq --arg admin $ADMIN \
|
|
||||||
--arg cookie $COOKIE \
|
|
||||||
'.admin = $admin | .cookieSecret = $cookie' \
|
|
||||||
/etc/config/config.json \
|
|
||||||
> $CONFIG
|
|
||||||
}
|
|
||||||
[ -f $OWNER ] || {
|
|
||||||
jq --arg admin $ADMIN \
|
|
||||||
'.friend.secret = $admin' \
|
|
||||||
/etc/config/local.owner.json \
|
|
||||||
> $OWNER
|
|
||||||
}
|
|
||||||
chown -R 1000:1000 /home/node/.wiki
|
|
||||||
---
|
|
||||||
apiVersion: apps/v1
|
|
||||||
kind: Deployment
|
|
||||||
metadata:
|
|
||||||
name: wiki-deployment
|
|
||||||
spec:
|
|
||||||
replicas: 1
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: wiki
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: wiki
|
|
||||||
spec:
|
|
||||||
securityContext:
|
|
||||||
runAsUser: 1000
|
|
||||||
runAsGroup: 1000
|
|
||||||
fsGroup: 1000
|
|
||||||
initContainers:
|
|
||||||
- name: wiki-config
|
|
||||||
image: dobbs/farm:1.0.0
|
|
||||||
securityContext:
|
|
||||||
runAsUser: 0
|
|
||||||
runAsGroup: 0
|
|
||||||
allowPrivilegeEscalation: false
|
|
||||||
volumeMounts:
|
|
||||||
- name: dot-wiki
|
|
||||||
mountPath: /home/node/.wiki
|
|
||||||
- name: config-templates
|
|
||||||
mountPath: /etc/config
|
|
||||||
command: ["sh", "/etc/config/install-config"]
|
|
||||||
containers:
|
|
||||||
- name: farm
|
|
||||||
image: dobbs/farm:1.0.0
|
|
||||||
command: ["wiki", "--config", "/home/node/.wiki/config.json"]
|
|
||||||
ports:
|
|
||||||
- containerPort: 3000
|
|
||||||
volumeMounts:
|
|
||||||
- name: dot-wiki
|
|
||||||
mountPath: /home/node/.wiki
|
|
||||||
volumes:
|
|
||||||
- name: dot-wiki
|
|
||||||
persistentVolumeClaim:
|
|
||||||
claimName: dot-wiki
|
|
||||||
- name: config-templates
|
|
||||||
configMap:
|
|
||||||
name: wiki-config
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
name: wiki-service
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- name: http
|
|
||||||
targetPort: 3000
|
|
||||||
port: 80
|
|
||||||
selector:
|
|
||||||
app: wiki
|
|
Reference in New Issue
Block a user