Compare commits
2 Commits
6d89419c37
...
0951d32975
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0951d32975 | ||
|
|
b4e22f6cee |
@ -25,6 +25,9 @@ spec:
|
|||||||
- name: jupyter
|
- name: jupyter
|
||||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
|
envFrom:
|
||||||
|
- secretRef:
|
||||||
|
name: s3-credentials
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
cpu: {{ .Values.resources.requests.cpu }}
|
cpu: {{ .Values.resources.requests.cpu }}
|
||||||
|
|||||||
94
charts/tenant/templates/minio-setup.yaml
Normal file
94
charts/tenant/templates/minio-setup.yaml
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
apiVersion: batch/v1
|
||||||
|
kind: Job
|
||||||
|
metadata:
|
||||||
|
name: 'tenant-{{ .Values.name }}-minio-setup'
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
annotations:
|
||||||
|
argocd.argoproj.io/hook: Sync
|
||||||
|
argocd.argoproj.io/hook-delete-policy: HookSucceeded
|
||||||
|
spec:
|
||||||
|
ttlSecondsAfterFinished: 100
|
||||||
|
template:
|
||||||
|
spec:
|
||||||
|
restartPolicy: OnFailure
|
||||||
|
containers:
|
||||||
|
- name: mc
|
||||||
|
image: minio/mc:RELEASE.2024-03-03T00-13-08Z
|
||||||
|
env:
|
||||||
|
# 1. MinIO Admin Credentials (Replicated from argocd namespace)
|
||||||
|
- name: MINIO_ADMIN_USER
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: minio-admin-credentials
|
||||||
|
key: MINIO_ROOT_USER
|
||||||
|
- name: MINIO_ADMIN_PASS
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: minio-admin-credentials
|
||||||
|
key: MINIO_ROOT_PASSWORD
|
||||||
|
|
||||||
|
# 2. Randomly Generated Tenant Credentials
|
||||||
|
- name: TENANT_USER
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: s3-credentials
|
||||||
|
key: AWS_ACCESS_KEY_ID
|
||||||
|
- name: TENANT_PASS
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: s3-credentials
|
||||||
|
key: AWS_SECRET_ACCESS_KEY
|
||||||
|
- name: BUCKET_REF
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: s3-credentials
|
||||||
|
key: BUCKET_REF
|
||||||
|
- name: BUCKET_WORK
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: s3-credentials
|
||||||
|
key: BUCKET_WORK
|
||||||
|
command:
|
||||||
|
- /bin/sh
|
||||||
|
- -c
|
||||||
|
- |
|
||||||
|
# Connect to MinIO using admin secret from env
|
||||||
|
mc alias set minioadmin http://minio.minio.svc.cluster.local:9000 $MINIO_ADMIN_USER $MINIO_ADMIN_PASS
|
||||||
|
|
||||||
|
# Create buckets
|
||||||
|
mc mb --ignore-existing minioadmin/$BUCKET_REF
|
||||||
|
mc mb --ignore-existing minioadmin/$BUCKET_WORK
|
||||||
|
|
||||||
|
# Create tenant user using randomly generated password
|
||||||
|
mc admin user add minioadmin $TENANT_USER $TENANT_PASS || true
|
||||||
|
|
||||||
|
# Apply IAM isolation policy
|
||||||
|
cat <<EOF > /tmp/policy.json
|
||||||
|
{
|
||||||
|
"Version": "2012-10-17",
|
||||||
|
"Statement": [
|
||||||
|
{
|
||||||
|
"Effect": "Allow",
|
||||||
|
"Action": ["s3:GetBucketLocation", "s3:ListBucket"],
|
||||||
|
"Resource": [
|
||||||
|
"arn:aws:s3:::$BUCKET_REF",
|
||||||
|
"arn:aws:s3:::$BUCKET_WORK"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Effect": "Allow",
|
||||||
|
"Action": ["s3:GetObject"],
|
||||||
|
"Resource": ["arn:aws:s3:::$BUCKET_REF/*"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Effect": "Allow",
|
||||||
|
"Action": ["s3:*"],
|
||||||
|
"Resource": ["arn:aws:s3:::$BUCKET_WORK/*"]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
mc admin policy create minioadmin {{ .Values.name }}-policy /tmp/policy.json || mc admin policy update minioadmin {{ .Values.name }}-policy /tmp/policy.json
|
||||||
|
mc admin policy attach minioadmin {{ .Values.name }}-policy --user=$TENANT_USER
|
||||||
|
echo "MinIO setup completed for {{ .Values.name }}"
|
||||||
15
charts/tenant/templates/secret-s3.yaml
Normal file
15
charts/tenant/templates/secret-s3.yaml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: s3-credentials
|
||||||
|
namespace: {{ .Release.Namespace }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/tenant: 'tenant-{{ .Values.name }}'
|
||||||
|
type: Opaque
|
||||||
|
stringData:
|
||||||
|
AWS_ACCESS_KEY_ID: 'tenant-{{ .Values.name }}-user'
|
||||||
|
# If the secret exist, keep. Otherwise create a new random one. (To prevent a new password at each sync).
|
||||||
|
AWS_SECRET_ACCESS_KEY: {{ if and $existingSecret $existingSecret.data (hasKey $existingSecret.data "AWS_SECRET_ACCESS_KEY") }}{{ index $existingSecret.data "AWS_SECRET_ACCESS_KEY" | b64dec }}{{ else }}{{ randAlphaNum 24 }}{{ end }}
|
||||||
|
S3_ENDPOINT: "http://minio.minio.svc.cluster.local:9000"
|
||||||
|
BUCKET_REF: "ref-tenant-{{ .Values.name }}"
|
||||||
|
BUCKET_WORK: "work-tenant-{{ .Values.name }}"
|
||||||
@ -17,9 +17,15 @@ spec:
|
|||||||
args: ["server", "/data", "--console-address", ":9001"]
|
args: ["server", "/data", "--console-address", ":9001"]
|
||||||
env:
|
env:
|
||||||
- name: MINIO_ROOT_USER
|
- name: MINIO_ROOT_USER
|
||||||
value: "admin"
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: minio-admin-credentials
|
||||||
|
key: MINIO_ROOT_USER
|
||||||
- name: MINIO_ROOT_PASSWORD
|
- name: MINIO_ROOT_PASSWORD
|
||||||
value: "changeme123" # TODO: Remove
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: minio-admin-credentials
|
||||||
|
key: MINIO_ROOT_PASSWORD
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 9000
|
- containerPort: 9000
|
||||||
- containerPort: 9001
|
- containerPort: 9001
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
name: "a"
|
name: "a" # TODO: Remove this and use path instead
|
||||||
|
|
||||||
image:
|
image:
|
||||||
repository: registry.bouvais.lu/tenant-jupyter
|
repository: registry.bouvais.lu/tenant-jupyter
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user