我在GKE上有一个应用程序,我希望仅通过HTTPS提供,因此我获得了一个签名证书以使用TLS保护应用程序.
我已经查看了很多有关如何执行此操作的教程,但它们都是指使用Ingress并使用LetsEncrypt和KubeLego自动请求证书.但我希望继续使用外部负载平衡器(谷歌为我提供的计算引擎实例),但我只想通过https访问我的应用程序.
如何应用我的server.crt和server.key文件来启用https.Do我将它应用于负载均衡器或kubernetes集群.
2020 年 2 月 20 日更新
概括
Azure DevOps 管道构建无法从我们在 Artifacts 下的私有源中找到 NuGet 包。
我们的 Azure DevOps 环境
在 Azure 中,我们有我们的公司“空间”:dev.azure.com/OurCompany
在此之下,我们有多个项目,例如,想象一下这三个:
红色的
RED 保存了我们所有常见的帮助程序代码,这些代码都是 GREEN 和 BLUE 应用程序使用的 DLL。这些以 NuGet 包的形式提供。
在 RED 的 Artifacts 下,我们看到了一个名为“OurCompany”的“组织范围提要”。我们知道我们不能使用它,因为这些 NuGet 包需要对 OurCompany 中的每个人可用,这意味着不仅在 Azure 上,而且在我们公司网络(我们运行 Visual Studio 的地方)中的桌面计算机上。我认为“组织范围内的提要”不会暴露给我们的企业网络。
因此,我们在 RED 的 Artifacts 下创建了一个新的 Feed。当我查看权限时,我看到以下条目:
公司的
因此,回到 Corporate,我们将 NuGet 包源添加到我们的 Visual Studio,然后它可以从 Azure 中提取 NuGet 包。
绿色和蓝色
在这里,我们有我们的产品。我们创建了一个构建管道,并添加了一个 NuGet …
nuget-package-restore devops azure-devops azure-pipelines azure-artifacts
我正在尝试为我的项目设置开发环境.
我有一个容器(ms1)应该放在他自己的网络中(在我的情况下是"服务"),以及一个容器(apigateway)应该访问该网络,同时将一个http端口暴露给主机的网络.
理想情况下,我的docker撰写文件看起来像这样:
version: '2'
services:
ms1:
expose:
- "13010"
networks:
services:
aliases:
- ms1
apigateway:
networks:
services:
aliases:
- api
network_mode: "host"
networks:
services:
Run Code Online (Sandbox Code Playgroud)
docker-compose不允许同时使用network_mode和网络.
我还有其他选择吗?
目前我正在使用这个:
apigateway:
networks:
services:
aliases:
- api
ports:
- "127.0.0.1:10000:13010"
Run Code Online (Sandbox Code Playgroud)
然后apigateway容器侦听0.0.0.0:13010.它工作但它很慢,如果主机的互联网连接断开,它会冻结.
另外,我计划将来在docker上使用vagrant,它是否允许以干净的方式解决?
我开始使用Vagrant并希望将它与KVM/qemu(以及Virtual Machine Manager GUI)一起使用,而不是安装VirtualBox.所以我先安装了Vagrant:
$ vagrant --version
Vagrant 1.9.1
$ vagrant box list
There are no installed boxes! Use `vagrant box add` to add some
Run Code Online (Sandbox Code Playgroud)
由于每 这些 帖子,我需要vagrant-libvirt
为它与KVM工作,所以我安装了下一个:
$ vagrant plugin list
vagrant-libvirt (0.0.37)
vagrant-share (1.1.6, system)
Run Code Online (Sandbox Code Playgroud)
接下来,我在提示时添加一个CentOS(7)框vagrant box add "centos/7"
并使用和选中libvirt
.之后,我跑了vagrant init
,没有遇到任何错误:
$ vagrant init centos/7
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in …
Run Code Online (Sandbox Code Playgroud) 使用以下步骤使用Edeliver&Distillery将我们的应用程序成功部署到虚拟机后:https: //github.com/dwyl/learn-phoenix-framework/blob/master/production-deployment.md
该应用程序运行:http://52.232.127.28/
但是当我们试图访问"帖子"路线时:http://52.232.127.28/posts
我们看到internal server error
:
作为一个凤凰诺布,我不知道如何调试Prod中的日志......
我们如何在虚拟机上看到这些日志?日志在哪里,我们可以tail
记录日志吗?
我正在制作的应用程序是用ES6编写的,其他好东西是由Docker容器中的webpack编译的.目前,一切都可以从创建内部目录,安装依赖项和创建编译的bundle文件开始.
相反,当运行容器时,它表示dist/bundle.js不存在.除非我在主机目录中创建捆绑文件,否则它将起作用.
我已经尝试为dist目录创建一个卷,它第一次工作,但在进行更改和重建之后它不会获取新的更改.
我想要实现的是让容器构建并运行已编译的bundle.我不确定webpack部分是作为构建步骤在Dockerfile中还是在运行时,因为CMD ["yarn", "start"]
崩溃但是RUN ["yarn", "start"]
有效.
任何建议和帮助表示赞赏.提前致谢.
|_src
|_index.js
|_dist
|_bundle.js
|_Dockerfile
|_.dockerignore
|_docker-compose.yml
|_webpack.config.js
|_package.json
|_yarn.lock
Run Code Online (Sandbox Code Playgroud)
泊坞窗,compose.yml
version: "3.3"
services:
server:
build: .
image: selina-server
volumes:
- ./:/usr/app/selina-server
- /usr/app/selina-server/node_modules
# - /usr/app/selina-server/dist
ports:
- 3000:3000
Run Code Online (Sandbox Code Playgroud)
Dockerfile
FROM node:latest
LABEL version="1.0"
LABEL description="This is the Selina server Docker image."
LABEL maintainer="AJ alvaroo@selina.com"
WORKDIR "/tmp"
COPY ["package.json", "yarn.lock*", "./"]
RUN ["yarn"]
WORKDIR "/usr/app/selina-server"
RUN ["ln", "-s", "/tmp/node_modules"]
COPY [".", "./"]
RUN ["yarn", "run", "build"] …
Run Code Online (Sandbox Code Playgroud) 断路器不会在httpConsecutiveErrors上跳闸:1(对于500响应).所有请求都通过并提供500.断路器应跳闸,应返回503(服务不可用).
按照断路器设置步骤进行操作 .
一旦httpbin启动,你可以用它模拟500请求:
kubectl exec -it $FORTIO_POD -c fortio /usr/local/bin/fortio -- load -c 1 -qps 0 -n 20 -loglevel Warning http://httpbin:8000/status/500
Run Code Online (Sandbox Code Playgroud)
运行此操作将模拟返回500的20个请求.
但是,如果您已应用断路器,则应仅允许一个请求为500,并且应该跳过剩余的请求并返回503.这不会发生.在github Github问题上提出的问题
我想用 CloudFormation 创建 Route53 HostedZone,所以我想检查一下 Route53 中关于 HostedZone 的一些信息是否存在。
在我的情况下,我需要检查资源是否存在,忽略资源创建。我该如何处理这个问题。
我的 CloudFormation 模板如下所示。
"myDNSRecord" : {
"Type" : "AWS::Route53::RecordSet",
"Properties" : {
"HostedZoneName" : { "Ref" : "HostedZoneResource" },
"Comment" : "DNS name for my instance.",
"Name" : {
"Fn::Join" : [ "", [
{"Ref" : "Ec2Instance"}, ".",
{"Ref" : "AWS::Region"}, ".",
{"Ref" : "HostedZone"} ,"."
] ]
},
"Type" : "A",
"TTL" : "900",
"ResourceRecords" : [
{ "Fn::GetAtt" : [ "Ec2Instance", "PublicIp" ] }
]
}
}
Run Code Online (Sandbox Code Playgroud) amazon-web-services aws-cloudformation devops infrastructure-as-code
我最近开始使用 lerna 来管理 monorepo,在开发中它运行良好。
Lerna 在我的各种包之间创建符号链接,因此像 'tsc --watch' 或 nodemon 这样的工具可以很好地检测其他包中的变化。
但是我在这种环境中创建 docker 镜像时遇到了问题。
假设我们有一个具有这种结构的项目:
root
packages
common ? artifact is a private npm package, this depends on utilities, something-specific
utilities ? artifact is a public npm package
something-specific -> artifact is a public npm package
frontend ? artifact is a docker image, depends on common
backend ? artifact is a docker image, depends on common and utilities
Run Code Online (Sandbox Code Playgroud)
在这种情况下,在开发中,一切都很好。我正在运行某种实时重新加载服务器,并且符号链接可以正常工作,因此依赖项可以正常工作。
现在假设我想从后端创建一个 docker 镜像。
我将介绍一些场景:
我ADD
在我的 Dockerfile 中打包.json,然后运行 npm install。 …
GitLab CI 允许向项目添加自定义变量。
它允许使用类型的秘密变量,file
其中我指定了一个作为变量名称的密钥和作为文件内容的值(例如证书的内容)
然后在管道执行期间,内容将保存为临时文件,调用变量名称将返回创建文件的路径。
最终,我需要将此文件复制到构建项目时创建的 Docker 容器中。(docker build ...
在yml中)
当如果变量作品测试,我想echo $VARIABLE
在.gitlab-ci.yml
和它的作品,临时文件的路径返回。但是在RUN echo $VARIABLE
in 中执行时Dockerfile
,它是空的。因此我也不能使用ADD $VARIABLE /tmp/
这是我的目标。
有没有办法解决这个问题并使这个文件可供Dockerfile
? 我是 Docker 和 GitLab 的新手,不知道还能去哪里找。
devops ×10
docker ×4
kubernetes ×2
vagrant ×2
azure-devops ×1
dockerfile ×1
elixir ×1
envoyproxy ×1
erlang ×1
gitlab ×1
gitlab-ci ×1
istio ×1
kvm ×1
logging ×1
monorepo ×1
networking ×1
node.js ×1
qemu ×1
vagrantfile ×1
webpack ×1