apiVersion: v1
kind: ConfigMap
metadata:
name: opentofu-nginx
data:
default.conf: |
server {
listen 8080;
server_name _;
auth_basic "OpenTofu";
auth_basic_user_file /etc/nginx/auth/auth;
location / {
root /usr/share/nginx/html;
index index.html;
}
}
index.html: |
OpenTofu
OpenTofu Pipeline Ready
This service hosts the OpenTofu control plane for Prole deployments.
Pipeline root (on disk): deploy/opentofu/k3s
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: opentofu
labels:
app: opentofu
spec:
replicas: 1
selector:
matchLabels:
app: opentofu
template:
metadata:
labels:
app: opentofu
spec:
nodeSelector:
kubernetes.io/hostname: myrddin.prole.org
containers:
- name: opentofu-ui
image: nginx:1.27-alpine
ports:
- name: http
containerPort: 8080
volumeMounts:
- name: nginx-config
mountPath: /etc/nginx/conf.d
- name: ui-content
mountPath: /usr/share/nginx/html
- name: opentofu-auth
mountPath: /etc/nginx/auth
readOnly: true
- name: opentofu-runner
image: ghcr.io/opentofu/opentofu:latest
command: ["sh", "-c", "tofu version && tail -f /dev/null"]
env:
- name: OPENTOFU_ADMIN_PASSWORD
valueFrom:
secretKeyRef:
name: opentofu-admin
key: admin_password
volumes:
- name: nginx-config
configMap:
name: opentofu-nginx
items:
- key: default.conf
path: default.conf
- name: ui-content
configMap:
name: opentofu-nginx
items:
- key: index.html
path: index.html
- name: opentofu-auth
secret:
secretName: opentofu-admin
items:
- key: auth
path: auth
---
apiVersion: v1
kind: Service
metadata:
name: opentofu
spec:
selector:
app: opentofu
ports:
- name: http
port: 8080
targetPort: http