当前位置: 首页 > 科技观察

GoTTY-终端工具变成Web应用

时间:2023-03-14 12:26:42 科技观察

GoTTY是一个简单的命令行工具,可以将您的CLI工具变成Web应用。快速入门1.安装GoTTY#Mac版brewinstalludai/gotty/gotty如果你有GO环境,也可以按如下方式安装:gogetgithub.com/yudai/gotty2,GoTTY用法Usage:gotty[options][]options--addressvalue,-avalueIPaddresstolisten(default:"0.0.0.0")[$GOTTY_ADDRESS]--portvalue,-pvaluePortnumbertoliten(default:"8080")[$GOTTY_PORT]--permit-write,-wPermitclientstowritetotheTTY(小心)[$GOTTY_PERMIT_WRITE]--credentialvalue,-cvalueCredentialforBasicAuthentication(ex:user:pass,defaultdisabled)[$GOTTY_CREDENTIAL]--random-url,-rAddarandomstringtotheURL[$GOTTY_RANDOM_URL]--random-url-lengthvalueRandom8URLlength()[$GOTTY_RANDOM_URL_LENGTH]--tls,-tEnableTLS/SSL[$GOTTY_TLS]--tls-crtvalueTLS/SSLcertificatefilepath(default:"~/.gotty.crt")[$GOTTY_TLS_CRT]--tls-keyvalueTLS/SSLkeyfilepath(default:"~/.gotty.key")[$GOTTY_TLS_KEY]--tls-ca-crtvalueTLS/SSLCAcertificatefileforclientcertifications(默认值:"~/.gotty.ca.crt")[$GOTTY_TLS_CA_CRT]--indexvalueCustomindex.htmlfile[$GOTTY_INDEX]--title-formatvalueTitleformatofbrowserwindow(default:"{{.command}}@{{.hostname}}")[$GOTTY_TITLE_FORMAT]--reconnectEnablereconnection[$GOTTY_RECONNECT]--reconnect-timevalueTimetoreconnect(default:10)[$GOTTY_RECONNECT_TIME]--max-connectionvalueMaximumconnectiontogotty(default:0)[$GOTTY_MAX_CONNECTION]--onceAcceptonlyoneclientandexitondisconnection[$GOTTY_ONCE]--timeoutvalueTimeoutsecondsforwaitingaclient(0todisable)(default:0)[$GOTTY_TIMEOUT]--permit-argumentsPermitclientstosendcommandlineargumentsinURL(e.g.http://example.com:8080/?arg=AAA&arg=BBB)[$GOTTY_PERMIT_ARGUMENTS]--widthvalueStaticwidthofthescreen,0(default)meansdynamicallyresize(default:0)[$GOTTY_WIDTH]--heightvalueStaticheightofthescreen,0(default)表示动态调整大小(默认值:0)[$GOTTY_HEIGHT]--ws-originvalueAregularexpressionthatmatchesoriginURLstobeacceptedbyWebSocket.Nocrossoriginrequestsareacceptablebydefault[$GOTTY_WS_ORIGIN]--termvalueTerminalnametouseonthebrowser,oneofxtermorhterm.(default:"xterm")[$GOTTY_TERM]--close-signalvalueSignalsenttothecommandprocesswhengottycloseit(default:SIGHUP)(default:1)[$GOTTY_CLOSE_SIGNAL]--close-timeoutvalueTimeinsecondstoforcekillprocessafterclientisdisconnected(默认值:1)(default:-1)[$GOTTY_CLOSE_TIMEOUT]--configvalueConfigfilepath(default:"~/.gotty")[$GOTTY_CONFIG]--version,-vprinttheversion3,练习#例子gotty-wpython3访问http://127.0.0.1:8080在线体验Python3环境高级章节。当你遇到一些问题时,你会进入容器排查问题。依靠命令行确实可以解决问题,但是效率低下。如果你把容器当成一个web-accessibleapplication,那么解决问题就会容易很多。下面将介绍如何使用GoTTY连接k8s集群中的任意容器。1.构建GoTTYDocker镜像构建的镜像:registry.cn-beijing.aliyuncs.com/tlab/k8s-gotty:latestgotty:可运行的gotty程序,查看[Releases]列表,选择合适的kubernetes.repo:对于下载kubectl[kubernetes]name=Kubernetesbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/enabled=1gpgcheck=1repo_gpgcheck=1gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpghttps://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpgDockerfile:用于构建镜像FROMcentos:latestRUNyuminstall-yepel-releasekde-l10n-Chineseglibc-commonwgetRUNlocaledef-c-fUTF-8-izh_CNzh_CN.utf8ENVLC_ALLzh_CN.utf8ADDgotty/root/ADDkubernetes.repo/etc/yum.repos.d/RUNyum-yinstallkubectlWORKDIR/rootEXPOSE8080CMD["./gotty","-w","--允许-arguments","kubectl","exec","-it","-n"]2.在k8s集群中运行GoTTYkind:DeploymentapiVersion:apps/v1metadata:name:gottynamespace:defaultspec:replicas:1selector:matchLabels:k8s-应用程序:gottytemplate:我tadata:labels:k8s-app:gottyspec:serviceAccountName:<填写k8s用户名,权限适当>containers:-name:gottyimage:registry.cn-beijing.aliyuncs.com/tlab/k8s-gottyports:-containerPort:8080protocol:TCP3,暴露GoTTY服务类型:ServiceapiVersion:v1metadata:labels:k8s-app:gottyname:gotty-servicenamespace:defaultspec:ports:-port:80targetPort:8080nodePort:38080selector:k8s-app:gottytype:NodePort4,访问容器terminal这里进入容器的命令是:kubectlexec-it-n然后,使用GoTTY访问是http://:38080/?arg=&arg=