|
|
| Line 66: |
Line 66: |
| telnet minio.minio 9001 | | telnet minio.minio 9001 |
| </syntaxhighlight> | | </syntaxhighlight> |
|
| |
| ==Apply==
| |
| ===Apply » Minikube » USER===
| |
| {|
| |
| |-
| |
| | colspan="3" |
| |
| ----
| |
| |-
| |
| | valign="top" |
| |
| '''PV » Manual'''
| |
| ----
| |
| | valign="top" |
| |
| '''PV » Dynamic'''
| |
| ----
| |
| | valign="top" |
| |
| '''Service & Deployment'''
| |
| ----
| |
| |-
| |
| | valign="top" |
| |
| <syntaxhighlight lang="yaml" highlight="8,13-14,23,29">
| |
| cat << YML | kubectl -n swiss-knife apply -f -
| |
| ---
| |
| apiVersion: v1
| |
| kind: PersistentVolume
| |
| metadata:
| |
| name: swiss-knife-${USER}-pv
| |
| spec:
| |
| storageClassName: standard
| |
| capacity:
| |
| storage: 10Gi
| |
| accessModes:
| |
| - ReadWriteOnce
| |
| hostPath:
| |
| path: /tmp/hostpath-provisioner/swiss-knife/swiss-knife-${USER}-pvc
| |
| ---
| |
| apiVersion: v1
| |
| kind: PersistentVolumeClaim
| |
| metadata:
| |
| labels:
| |
| app.kubernetes.io/name: swiss-knife-${USER}
| |
| name: swiss-knife-${USER}-pvc
| |
| spec:
| |
| storageClassName: standard
| |
| accessModes:
| |
| - ReadWriteOnce
| |
| resources:
| |
| requests:
| |
| storage: 10Gi
| |
| volumeName: swiss-knife-${USER}-pv
| |
| YML
| |
| </syntaxhighlight>
| |
|
| |
| | valign="top" |
| |
| <syntaxhighlight lang="yaml" highlight="8,13-14,23,29">
| |
| cat << YML | kubectl -n swiss-knife apply -f -
| |
| ---
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
| ---
| |
| apiVersion: v1
| |
| kind: PersistentVolumeClaim
| |
| metadata:
| |
| labels:
| |
| app.kubernetes.io/name: swiss-knife-${USER}
| |
| name: swiss-knife-${USER}-pvc
| |
| spec:
| |
| storageClassName: standard
| |
| accessModes:
| |
| - ReadWriteOnce
| |
| resources:
| |
| requests:
| |
| storage: 10Gi
| |
|
| |
| YML
| |
| </syntaxhighlight>
| |
|
| |
| | valign="top" rowspan="2" |
| |
| <syntaxhighlight lang="yaml" line>
| |
| cat << YML | kubectl -n swiss-knife apply -f -
| |
| ---
| |
| apiVersion: v1
| |
| kind: Service
| |
| metadata:
| |
| name: swiss-knife-${USER}
| |
| spec:
| |
| ports:
| |
| - port: 80
| |
| selector:
| |
| app: swiss-knife-${USER}
| |
| clusterIP: None
| |
| ---
| |
| apiVersion: apps/v1
| |
| kind: Deployment
| |
| metadata:
| |
| name: swiss-knife-${USER}
| |
| spec:
| |
| selector:
| |
| matchLabels:
| |
| app: swiss-knife-${USER}
| |
| replicas: 1
| |
| template:
| |
| metadata:
| |
| labels:
| |
| app: swiss-knife-${USER}
| |
| spec:
| |
| containers:
| |
| - name: nginx
| |
| image: nginx:1.27-alpine
| |
| ports:
| |
| - containerPort: 80
| |
| volumeMounts:
| |
| - mountPath: /opt/swiss-knife/${USER}
| |
| name: ${USER}-data
| |
| volumes:
| |
| - name: ${USER}-data
| |
| persistentVolumeClaim:
| |
| claimName: swiss-knife-${USER}-pvc
| |
| restartPolicy: Always
| |
| YML
| |
| </syntaxhighlight>
| |
|
| |
| |-
| |
| | colspan="2" |
| |
| ----
| |
| <syntaxhighlight lang="bash">
| |
| kubectl -n swiss-knife exec -it svc/swiss-knife-${USER} -c nginx -- sh
| |
| kubectl -n swiss-knife exec -it svc/swiss-knife-${USER} -- sh
| |
| </syntaxhighlight>
| |
| ----
| |
| <syntaxhighlight lang="bash">
| |
| kubectl -n swiss-knife port-forward svc/swiss-knife-${USER} 1980:80
| |
| kubectl -n swiss-knife port-forward svc/swiss-knife-${USER} :80
| |
| </syntaxhighlight>
| |
|
| |
| |-
| |
| | colspan="3" |
| |
| ----
| |
| <syntaxhighlight lang="bash">
| |
| # copy dump into pod
| |
| SWISS_KNIFE_POD=$(kubectl -n swiss-knife get pods -l app=swiss-knife-${USER} -ojson|jq -r '.items[0].metadata.name')
| |
| kubectl -n swiss-knife cp ./gitlab_sdlc-20240820-T1622-ZP0800.sql.gz ${SWISS_KNIFE_POD}:/opt/swiss-knife/${USER}
| |
| kubectl -n swiss-knife exec -it svc/swiss-knife-${USER} -- ls -lah /opt/swiss-knife/${USER}
| |
|
| |
| # install apk packages
| |
| kubectl -n swiss-knife exec -it svc/swiss-knife-${USER} -- sh
| |
| apk --update add postgresql-client inetutils-telnet
| |
|
| |
| # import psql dump
| |
| kubectl -n swiss-knife exec -it svc/swiss-knife-${USER} -- sh
| |
| echo -n password: ;read -s PGPASSWORD;export PGPASSWORD;echo
| |
| gunzip -c /opt/swiss-knife/${USER}/./gitlab_sdlc-20240820-T1622-ZP0800.sql.gz|psql -Ugitlab gitlab
| |
| psql -d gitlab -U gitlab
| |
| </syntaxhighlight>
| |
|
| |
| |-
| |
| | colspan="3" |
| |
| ----
| |
| <syntaxhighlight lang="bash">
| |
| kubectl -n swiss-knife delete deploy swiss-knife-${USER}
| |
| kubectl -n swiss-knife delete svc swiss-knife-${USER}
| |
| kubectl -n swiss-knife delete pvc swiss-knife-${USER}-pvc
| |
| kubectl delete pv swiss-knife-${USER}-pv
| |
| </syntaxhighlight>
| |
|
| |
| |}
| |
|
| |
| ===Apply » EKS » USER===
| |
| {|
| |
| |-
| |
| | colspan="3" |
| |
| ----
| |
| |-
| |
| | valign="top" |
| |
| '''PV » Manual'''
| |
| ----
| |
| | valign="top" |
| |
| '''PV » Dynamic'''
| |
| ----
| |
| | valign="top" |
| |
| '''Service & Deployment'''
| |
| ----
| |
| |-
| |
| | valign="top" |
| |
| <syntaxhighlight lang="yaml" highlight="8,13-16,25,31">
| |
| cat << YML | kubectl -n swiss-knife apply -f -
| |
| ---
| |
| apiVersion: v1
| |
| kind: PersistentVolume
| |
| metadata:
| |
| name: swiss-knife-${USER}-pv
| |
| spec:
| |
| storageClassName: "gp2"
| |
| capacity:
| |
| storage: 10Gi
| |
| accessModes:
| |
| - ReadWriteOnce
| |
| awsElasticBlockStore:
| |
| fsType: ext4
| |
| volumeID: aws://ap-southeast-1/${EBS_VOLUME_ID}
| |
| persistentVolumeReclaimPolicy: Retain
| |
| ---
| |
| apiVersion: v1
| |
| kind: PersistentVolumeClaim
| |
| metadata:
| |
| labels:
| |
| app.kubernetes.io/name: swiss-knife-${USER}
| |
| name: swiss-knife-${USER}-pvc
| |
| spec:
| |
| storageClassName: "gp2"
| |
| accessModes:
| |
| - ReadWriteOnce
| |
| resources:
| |
| requests:
| |
| storage: 10Gi
| |
| volumeName: swiss-knife-${USER}-pv
| |
| YML
| |
| </syntaxhighlight>
| |
|
| |
| | valign="top" |
| |
| <syntaxhighlight lang="yaml" highlight="8,13-16,25,31">
| |
| cat << YML | kubectl -n swiss-knife apply -f -
| |
| ---
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
| ---
| |
| apiVersion: v1
| |
| kind: PersistentVolumeClaim
| |
| metadata:
| |
| labels:
| |
| app.kubernetes.io/name: swiss-knife-${USER}
| |
| name: swiss-knife-${USER}-pvc
| |
| spec:
| |
| storageClassName: "gp2"
| |
| accessModes:
| |
| - ReadWriteOnce
| |
| resources:
| |
| requests:
| |
| storage: 10Gi
| |
| volumeName: swiss-knife-${USER}-pv
| |
| YML
| |
| </syntaxhighlight>
| |
|
| |
| | valign="top" rowspan="2"|
| |
| <syntaxhighlight lang="yaml" highlight="28-29" line>
| |
| cat << YML | kubectl -n swiss-knife apply -f -
| |
| ---
| |
| apiVersion: v1
| |
| kind: Service
| |
| metadata:
| |
| name: swiss-knife-${USER}
| |
| spec:
| |
| ports:
| |
| - port: 80
| |
| selector:
| |
| app: swiss-knife-${USER}
| |
| clusterIP: None
| |
| ---
| |
| apiVersion: apps/v1
| |
| kind: Deployment
| |
| metadata:
| |
| name: swiss-knife-${USER}
| |
| spec:
| |
| selector:
| |
| matchLabels:
| |
| app: swiss-knife-${USER}
| |
| replicas: 1
| |
| template:
| |
| metadata:
| |
| labels:
| |
| app: swiss-knife-${USER}
| |
| spec:
| |
| nodeSelector:
| |
| topology.kubernetes.io/zone: ap-southeast-1a
| |
| containers:
| |
| - name: nginx
| |
| image: nginx:1.27-alpine
| |
| ports:
| |
| - containerPort: 80
| |
| volumeMounts:
| |
| - mountPath: /opt/swiss-knife/${USER}
| |
| name: ${USER}-data
| |
| volumes:
| |
| - name: ${USER}-data
| |
| persistentVolumeClaim:
| |
| claimName: swiss-knife-${USER}-pvc
| |
| restartPolicy: Always
| |
| YML
| |
| </syntaxhighlight>
| |
|
| |
| |-
| |
| | colspan="2" |
| |
| ----
| |
| <syntaxhighlight lang="bash">
| |
| kubectl -n swiss-knife exec -it svc/swiss-knife-${USER} -c nginx -- sh
| |
| kubectl -n swiss-knife exec -it svc/swiss-knife-${USER} -- sh
| |
| </syntaxhighlight>
| |
| ----
| |
| <syntaxhighlight lang="bash">
| |
| kubectl -n swiss-knife port-forward svc/swiss-knife-${USER} 1980:80
| |
| kubectl -n swiss-knife port-forward svc/swiss-knife-${USER} :80
| |
| </syntaxhighlight>
| |
|
| |
| |-
| |
| | colspan="3" |
| |
| ----
| |
| <syntaxhighlight lang="bash">
| |
| # aws » ec2 » ebs » volume » name: sdlc-eks-swiss-knife-${USER}-data
| |
| kubectl -n swiss-knife delete deploy swiss-knife-${USER}
| |
| kubectl -n swiss-knife delete svc swiss-knife-${USER}
| |
| kubectl -n swiss-knife delete pvc swiss-knife-${USER}-pvc
| |
| kubectl delete pv swiss-knife-${USER}-pv
| |
| </syntaxhighlight>
| |
|
| |
| |}
| |
|
| |
|
| ==Playground== | | ==Playground== |
export KUBECONFIG="${HOME}/.kube/lke-dev-kubeconfig.yaml"
export KUBECONFIG="${HOME}/.kube/gke-uat-kubeconfig.yaml"
export KUBECONFIG="${HOME}/.kube/eks-pro-kubeconfig.yaml"
|
export KUBECONFIG="${HOME}/.kube/config"
kubectl config get-contexts
kubectl cluster-info
|
kubectl get ns|grep swiss-knife
kubectl delete ns swiss-knife
kubectl create ns swiss-knife
|
Run
Run » PSQL
kubectl -n swiss-knife run -i --tty --rm psql --image=alpine --restart=Never -- sh
echo -n password: ;read -s PGPASSWORD;export PGPASSWORD;echo
apk --update add postgresql-client inetutils-telnet
psql -d postgres -U postgres -h postgresql.postgresql
Run » Infinity
kubectl -n swiss-knife run infinity --image=alpine -- sleep infinity
kubectl -n swiss-knife exec -it infinity -- sh
apk --update add inetutils-telnet
Run » Redis CLI
kubectl -n swiss-knife run -i --tty --rm redis-cli --image=alpine --restart=Never -- sh
echo -n password: ;read -s REDISCLI_AUTH;export REDISCLI_AUTH;echo
apk --update add redis inetutils-telnet
echo 'ping'|redis-cli -h redis-headless.redis
Run » MinIO CLI
kubectl -n swiss-knife run -i --tty --rm minio-cli --image=alpine --restart=Never -- sh
apk --update add minio-client inetutils-telnet
echo -n password: ;\
read -s MINIO_SERVER_ROOT_PASSWORD;\
export MINIO_SERVER_ROOT_PASSWORD;\
export MINIO_SERVER_ROOT_USER=admin;\
export MINIO_SERVER_HOST=minio.k8s.local;echo
mcli ping --error-count 5 minio.minio
mcli ping --count 5 minio.minio
telnet minio.minio 9000
telnet minio.minio 9001
Playground
kubectl -n swiss-knife delete pods minio-cli
kubectl -n swiss-knife delete pods redis-cli
|
kubectl -n swiss-knife delete pods infinity
kubectl -n swiss-knife delete pods psql
|
kubectl -n swiss-knife run infinity --image=alpine -- sleep infinity
kubectl -n swiss-knife run ubuntu --image=ubuntu -- sleep infinity
|
|
|
|
|
|
|
References