helm repo add fission-charts https://fission.github.io/fission-charts
helm repo update && helm repo list
kubectl config get-contexts
Config
export KUBECONFIG="${HOME}/.kube/dev-kubeconfig.yaml"
export KUBECONFIG="${HOME}/.kube/gcp-kubeconfig.yaml"
export KUBECONFIG="${HOME}/.kube/config"
|
|
mc alias set local http://s3.host.k8s.local admin
# Enter Secret Key: sadaqah!
mc config host ls
mc admin info local
mc mb local/fission
|
echo -n password: ;read -s MINIO_PASSWORD;export MINIO_PASSWORD;echo
# password: sadaqah!
mc admin user add local fission ${MINIO_PASSWORD}
mc admin policy attach local diagnostics readwrite consoleAdmin --user fission
mc admin user info local fission
|
|
ACCESS_KEY="lJK09A3zwTF7bY2v5yey";\
SECRET_KEY="umVZsDmWNLUY5i3PDz17IhksvmBV5TCnE07GYw26";\
alias mc_admin_add_key="mc admin accesskey create local \
fission --name=fission --access-key=${ACCESS_KEY} --secret-key=${SECRET_KEY}"
|
|
cat <<JSN | mc_admin_add_key --policy=/dev/stdin
{
"Version":"2012-10-17",
"Statement":[
{"Effect":"Allow","Action":["kms:*"]},
{"Effect":"Allow","Action":["admin:*"]},
{"Effect":"Allow","Action":["s3:*"],"Resource":["arn:aws:s3:::fission"]},
{"Effect":"Allow","Action":[
"admin:BandwidthMonitor",
"admin:TopLocksInfo",
"admin:ServerTrace",
"admin:ConsoleLog",
"admin:Prometheus",
"admin:ServerInfo",
"admin:Profiling",
"admin:OBDInfo"
],"Resource":["arn:aws:s3:::fission"]
}
]
}
JSN
|
Install
kubectl get ns|grep fission
kubectl delete ns fission
|
kubectl get ns|grep fission
kubectl create ns fission
|
|
export FISSION_NAMESPACE="fission"
kubectl create -k "github.com/fission/fission/crds/v1?ref=v1.20.5"
|
|
cat <<YML | helm -n fission install fission fission-charts/fission-all --version=v1.20.5 -f -
---
serviceType: ClusterIP
routerServiceType: LoadBalancer
persistence:
enabled: true
storageType: s3
s3:
endPoint: http://s3.host.k8s.local
bucketName: fission
subDir: serverless
region: us-east-1
accessKeyId: lJK09A3zwTF7bY2v5yey
secretAccessKey: umVZsDmWNLUY5i3PDz17IhksvmBV5TCnE07GYw26
YML
|
cat <<YML | helm -n fission install fission fission-charts/fission-all --version=v1.20.5 -f -
---
serviceType: NodePort
routerServiceType: NodePort
persistence:
enabled: true
storageType: s3
s3:
endPoint: http://s3.host.k8s.local
bucketName: fission
subDir: serverless
region: us-east-1
accessKeyId: lJK09A3zwTF7bY2v5yey
secretAccessKey: umVZsDmWNLUY5i3PDz17IhksvmBV5TCnE07GYw26
YML
|
|
cat <<-'EXE'|sudo bash
curl -fsSL https://github.com/fission/fission/releases/download/v1.20.5/fission-v1.20.5-linux-amd64 -o /usr/local/bin/fission
chmod +x /usr/local/bin/fission
EXE
fission version
fission --help
fission check
|
Ingress
cat << YML | kubectl apply -n fission -f -
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: router
namespace: fission
labels:
app.kubernetes.io/version: 1.0.0
app.kubernetes.io/managed-by: kubectl
app.kubernetes.io/name: fission-router
app.kubernetes.io/instance: fission-router
spec:
ingressClassName: nginx
rules:
- host: "ht.fission.k8s.local"
http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
service:
name: router
port:
number: 80
YML
Uninstall
helm uninstall -n fission fission
kubectl delete namespace fission
kubectl get crd|grep fission.io
kubectl delete crd packages.fission.io
kubectl delete crd functions.fission.io
kubectl delete crd environments.fission.io
kubectl delete crd httptriggers.fission.io
kubectl delete crd timetriggers.fission.io
kubectl delete crd canaryconfigs.fission.io
kubectl delete crd messagequeuetriggers.fission.io
kubectl delete crd kuberneteswatchtriggers.fission.io
kubectl get apiservice
kubectl delete apiservice v1beta1.external.metrics.k8s.io
kubectl patch ns fission -p '{"metadata":{"finalizers":null}}'s":null}}'
Serverless
export FISSION_NAMESPACE=fission
export FISSION_FUNCTION_NAMESPACE=fission
export FISSION_ROUTER_URL=$(kubectl -n ${FISSION_NAMESPACE} get ing router -o=yaml|yq -r .spec.rules[0].host)
export FISSION_ROUTER=$(kubectl -n ${FISSION_NAMESPACE} get svc router -o=yaml|yq -r .status.loadBalancer.ingress[0].ip)
mkdir -p /opt/${USER}/chorke/academia/var/playground/fission
ls -lah /opt/${USER}/chorke/academia/var/playground/fission
ln -s /opt/${USER}/chorke/academia/var/playground/fission ${HOME}/Documents/fission-playground
ls -lah ${HOME}/Documents/fission-playground/
cd ${HOME}/Documents/fission-playground/
fission env list
fission fn list
fission ht list
fission pkg list
Serverless » Go
fission env create --name=go --image=ghcr.io/fission/go-env --builder=ghcr.io/fission/go-builder
curl -fsSL https://raw.githubusercontent.com/fission/examples/main/go/hello-world/hello.go -o hello.go
fission fn create --name=hello-go --env go --src hello.go --entrypoint Handler
fission fn test --name=hello-go
fission ht create --name=get-hello-go --method=GET --url=/api/hello/go --function=hello-go
curl http://fission.k8s.local/api/hello/go
fission pkg delete --name=hello-go-<uuid> -f
fission ht delete --name=get-hello-go
fission fn delete --name=hello-go
fission env delete --name=go
Serverless » Java
fission environment create --name=java --image=ghcr.io/fission/jvm-env --builder=ghcr.io/fission/jvm-builder --keeparchive --version 3
mkdir -p src/main/java/io/fission
curl -fsSL https://raw.githubusercontent.com/fission/examples/main/java/hello-world/src/main/java/io/fission/HelloWorld.java -o src/main/java/io/fission/HelloWorld.java
curl -fsSL https://raw.githubusercontent.com/fission/environments/master/jvm/examples/java/pom.xml -o pom.xml
zip java-src-pkg.zip -r src pom.xml
fission package create --name=hello-pkg --env java --src java-src-pkg.zip
fission fn create --name=hello-java --env java --pkg hello-pkg --entrypoint io.fission.HelloWorld
fission fn test --name=hello-java
fission ht create --name=get-hello-java --method=GET --url=/api/hello/java --function=hello-java
curl http://fission.k8s.local/api/hello/java
fission ht delete --name=get-hello-java
fission fn delete --name=hello-java
fission pkg delete --name=hello-pkg
fission env delete --name=java
Serverless » Dotnet
fission env create --name=dotnet --image=fission/dotnet-env
curl -fsSL https://raw.githubusercontent.com/fission/examples/main/dotnet/helloworld.cs -o hello.cs
fission fn create --name=hello-cs --env=dotnet --code=hello.cs
fission fn test --name=hello-cs
fission ht create --name=get-hello-cs --method=GET --url=/api/hello/cs --function=hello-cs
curl http://fission.k8s.local/api/hello/cs
fission pkg delete --name=hello-cs-<uuid> -f
fission ht delete --name=get-hello-cs
fission fn delete --name=hello-cs
fission env delete --name=dotnet
Serverless » Python
fission env create --name=python --image=fission/python-env
curl -fsSL https://raw.githubusercontent.com/fission/examples/main/python/hello.py -o hello.py
fission fn create --name=hello-py --env=python --code=hello.py
fission fn test --name=hello-py
fission ht create --name=get-hello-py --method=GET --url=/api/hello/py --function=hello-py
curl http://fission.k8s.local/fission-function/hello-py
curl http://fission.k8s.local/api/hello/py
fission pkg delete --name=hello-py-<uuid> -f
fission ht delete --name=get-hello-py
fission fn delete --name=hello-py
fission env delete --name=python
Serverless » Node.js
fission env create --name=nodejs --image=ghcr.io/fission/node-env
curl -fsSL https://raw.githubusercontent.com/fission/examples/main/nodejs/hello.js -o hello.js
fission fn create --name=hello-js --env=nodejs --code=hello.js
fission fn test --name=hello-js
fission ht create --name=get-hello-js --method=GET --url=/api/hello/js --function=hello-js
curl http://fission.k8s.local/fission-function/hello-js
curl http://fission.k8s.local/api/hello/js
fission pkg delete --name=hello-js-<uuid> -f
fission ht delete --name=get-hello-js
fission fn delete --name=hello-js
fission env delete --name=nodejs
Specification
fission spec init
fission env create --name=node --image=fission/node-env --version=3 --poolsize=1 --spec
fission pkg create --name=hellojs --env=node --code=https://raw.githubusercontent.com/fission/fission/master/examples/nodejs/hello.js --spec
fission fn create --name=hellojs --env=node --pkg=hellojs --spec
fission ht create --name=hellojs --method=GET --url=/api/hello/js --function=hellojs --spec
fission spec apply
fission fn test --name=hellojs
curl http://fission.k8s.local/api/hello/js
fission spec destroy
fission ht delete --name=hellojs
fission fn delete --name=hellojs
fission pkg delete --name=hellojs
fission env delete --name=node
Playground
helm -n fission install fission fission-charts/fission-all --version=v1.20.0
helm -n fission upgrade -i fission fission-charts/fission-all --version=v1.20.5
helm show values fission-charts/fission-all --version=v1.20.0|less
|
|
kubectl -n fission get configmap feature-config -o json|jq -r '.data."config.yaml"'|base64 -d;echo
kubectl -n fission get svc router -o=yaml|yq -r .status.loadBalancer.ingress[0].ip
kubectl -n fission get svc router -o=yaml|yq -r .spec.ports[0].port
kubectl -n fission get ing router -o=yaml|yq -r .spec.rules[0].host
kubectl -n fission logs -f svc/webhook-service -c webhook
kubectl -n fission logs -f svc/storagesvc -c storagesvc
kubectl -n fission logs -f svc/executor -c executor
kubectl -n fission logs -f svc/router -c router
|
|
kubectl config --kubeconfig=${HOME}/.kube/aws-kubeconfig.yaml view --flatten
kubectl config --kubeconfig=${HOME}/.kube/dev-kubeconfig.yaml view --flatten
kubectl config --kubeconfig=${HOME}/.kube/gcp-kubeconfig.yaml view --flatten
kubectl config --kubeconfig=${HOME}/.kube/config view --flatten
|
|
kubectl -n fission delete all --all
kubectl -n fission delete ing --all
kubectl -n fission delete sts --all
|
kubectl -n fission delete svc --all
kubectl -n fission delete pvc --all
kubectl -n fission delete pv --all
|
|
kubectl -n fission rollout history deploy buildermgr
kubectl -n fission rollout status deploy storagesvc
kubectl -n fission rollout restart deploy executor
|
kubectl -n fission logs -f svc/storagesvc -c storagesvc
kubectl -n fission logs -f svc/executor -c executor
kubectl -n fission logs -f svc/router -c router
|
References