AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-212840

Luke Cousins's questions

Martin Hope
Luke Cousins
Asked: 2024-09-03 17:47:28 +0800 CST

将 Kubernetes cert-manager 安装从静态清单切换到 helm,而不会丢失现有证书

  • 5

我们最初使用静态清单安装了cert-manager。现在我们需要自定义设置(webhook 超时,请参阅 digitalocean/clusterlint#167),所以我认为最好的选择是迁移到 helm 安装,但我不确定如何最好地做到这一点,非常感谢您的帮助。

我已阅读卸载说明,但不想删除证书或(集群/)颁发者。我可以跳过删除步骤吗?因为我知道稍后我会使用 Helm 重新安装,还是我需要遵循其他流程?

任何帮助都太棒了。谢谢🙏

kubernetes
  • 1 个回答
  • 38 Views
Martin Hope
Luke Cousins
Asked: 2019-10-10 01:59:14 +0800 CST

在 Helm Kubernetes 配置中,如何在多个部署文件之间共享多个环境变量

  • 2

我们正在使用 Helm 将我们的应用程序部署到 K8s。在 4 个不同的部署文件(每个服务一个)和一个用于迁移的作业文件中,我们必须有一组相同的env变量。每当我们需要添加一个新文件时,我们都需要将它添加到所有 5 个文件中。有没有办法共享这些,所以新的环境变量只需要添加一次,所有 5 个文件都会选择它们(并且永远不会不同步)?

这是部署文件的示例(已编辑可能的敏感值)。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: {{ include "helm-chart.fullname" . }}-celery
  labels:
    app.kubernetes.io/name: {{ include "helm-chart.name" . }}-celery
    helm.sh/chart: {{ include "helm-chart.chart" . }}
    app.kubernetes.io/instance: {{ .Release.Name }}-celery
    app.kubernetes.io/managed-by: {{ .Release.Service }}
    app.kubernetes.io/component: worker-celery
spec:
  replicas: {{ .Values.replicaCountCelery }}
  selector:
    matchLabels:
      app.kubernetes.io/name: {{ include "helm-chart.fullname" . }}-celery
      app.kubernetes.io/instance: {{ .Release.Name }}-celery
  template:
    metadata:
      labels:
        app.kubernetes.io/name: {{ include "helm-chart.fullname" . }}-celery
        app.kubernetes.io/instance: {{ .Release.Name }}-celery
    spec:
      imagePullSecrets:
        - name: {{ .Values.imagePullSecretsName }}
      containers:
        - name: {{ .Chart.Name }}-celery
          image: "{{ .Values.appImage.repository }}:{{ .Values.imageTag }}"
          imagePullPolicy: {{ .Values.appImage.pullPolicy }}
          command: ["celery"]
          args: [REDACTED]
          env:
            - name: DJANGO_DEBUG
              value: "{{ .Values.djangoDebug }}"
            - name: DATABASE_NAME
              value: "{{ .Values.databaseName }}"
            - name: DATABASE_USER
              valueFrom:
                secretKeyRef:
                  name: [REDACTED]
                  key: [REDACTED]
            - name: DATABASE_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: [REDACTED]
                  key: [REDACTED]
            - name: DATABASE_HOST
              value: "myapp-haproxy.{{ .Release.Namespace }}.svc.cluster.local"
            - name: MEMCACHED_HOST
              value: "myapp-memcached.{{ .Release.Namespace }}.svc.cluster.local"
            - name: SENDGRID_USER
              valueFrom:
                secretKeyRef:
                  name: [REDACTED]
                  key: [REDACTED]
            - name: SENDGRID_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: [REDACTED]
                  key: [REDACTED]
            - name: STRIPE_LIVE_PUBLIC_KEY
              valueFrom:
                secretKeyRef:
                  name: [REDACTED]
                  key: [REDACTED]
            - name: STRIPE_LIVE_SECRET_KEY
              valueFrom:
                secretKeyRef:
                  name: [REDACTED]
                  key: [REDACTED]
            - name: OBJECT_STORE_ENDPOINT_URL
              value: [REDACTED]
            - name: OBJECT_STORE_REGION_NAME
              value: [REDACTED]
            - name: OBJECT_STORE_KEY_ID
              valueFrom:
                secretKeyRef:
                  name: [REDACTED]
                  key: [REDACTED]
            - name: OBJECT_STORE_ACCESS_KEY
              valueFrom:
                secretKeyRef:
                  name: [REDACTED]
                  key: [REDACTED]
            - name: OBJECT_STORE_CDN_URL
              value: [REDACTED]
            - name: QUICKBOOKS_CLIENT_ID
              valueFrom:
                secretKeyRef:
                  name: [REDACTED]
                  key: [REDACTED]
            - name: QUICKBOOKS_CLIENT_SECRET
              valueFrom:
                secretKeyRef:
                  name: [REDACTED]
                  key: [REDACTED]
            - name: QUICKBOOKS_ENVIRONMENT
              value: production
            - name: XERO_CONSUMER_KEY
              valueFrom:
                secretKeyRef:
                  name: [REDACTED]
                  key: [REDACTED]
            - name: XERO_CONSUMER_SECRET
              valueFrom:
                secretKeyRef:
                  name: [REDACTED]
                  key: [REDACTED]
            - name: SAGE_CLIENT_ID
              valueFrom:
                secretKeyRef:
                  name: [REDACTED]
                  key: [REDACTED]
            - name: SAGE_CLIENT_SECRET
              valueFrom:
                secretKeyRef:
                  name: [REDACTED]
                  key: [REDACTED]
            - name: ACCOUNTANCY_REDIRECT_URI_PREFIX
              value: [REDACTED]
          resources:
            {{- toYaml .Values.celeryResources | nindent 12 }}
      {{- with .Values.nodeSelector }}
      nodeSelector:
        {{- toYaml . | nindent 8 }}
      {{- end }}
    {{- with .Values.affinity }}
      affinity:
        {{- toYaml . | nindent 8 }}
    {{- end }}
    {{- with .Values.tolerations }}
      tolerations:
        {{- toYaml . | nindent 8 }}
    {{- end }}

我不确定它是否会增加任何复杂性,但您可以看到有些使用来自values.yaml(例如{{ .Values.djangoDebug }})的变量,有些是指 Kubernetes 机密,有些使用该{{ .Release.Namespace }}变量。

deployment此外,这 4 个文件所需的缩进是相同的,但文件不同job。

我正在尝试共享一堆env值,但也可以选择向某些文件添加一些额外内容。

我希望这是有道理的?并提前感谢您的帮助。

kubernetes
  • 1 个回答
  • 1308 Views
Martin Hope
Luke Cousins
Asked: 2019-08-08 00:25:43 +0800 CST

如何在 MySQL/MariaDB 上修改现有用户的权限而不停机

  • 1

我们的 MariaDB 10.3 实例中有一个现有的数据库用户。我们想授予用户一些额外的权限,而不会中断服务。

我从这里有用的答案中了解了基本过程,但我担心在REVOKE ALL PRIVILEGES...命令的执行和GRANT ...用户将无权访问数据库的命令之间。这个对吗?如果是这样,除了创建具有不同用户名的新用户并迁移应用程序代码以使用此新用户之外,是否有解决此问题的好方法?

谢谢你的帮助。

mysql
  • 2 个回答
  • 177 Views
Martin Hope
Luke Cousins
Asked: 2016-08-26 03:04:46 +0800 CST

一个docker容器能否访问主机。如果是这样,我怎样才能确保它不能?

  • 0

我本来以为以前有人问过这个问题,但是我已经做了很多谷歌搜索,找不到简单的答案,如果已经回答了,很抱歉。

本质上,我打算提供一项服务,允许用户在我的 docker 主机上运行 docker 容器。用户可以选择我提供的容器之一或提供自己的容器(未经审核)。他们还可以在容器中运行他们选择的 bash 命令。我需要将它们限制为仅在其容器中运行代码,并且无法访问主机或任何其他同时运行的容器。应允许容器完全访问 Internet,并且主机将需要与容器具有共享目录。我最初将向 docker 容器提供一些数据文件,一旦容器完成了用户想要的任何操作,我将需要再次访问这些数据文件。

从安全的角度来看,我需要注意什么?谢谢你的帮助。

docker
  • 1 个回答
  • 103 Views
Martin Hope
Luke Cousins
Asked: 2016-08-20 09:29:53 +0800 CST

如何检查基于 unix 的系统是否支持命令上的特定选项(mv -T)

  • -1

我正在开发一个想要以原子方式更新符号链接的部署脚本。我打算使用类似的命令

$ ln -s new current_tmp && mv -Tf current_tmp current

(归功于此处以获取有关此工作原理的详细信息)。

但是,并非所有版本都mv支持该-T选项。如何在使用之前可靠地确定系统是否支持它?

是否比创建不同的文件并尝试mv使用该-T选项(并检查是否成功)来尝试该文件更好的方法,以便我可以知道当前系统是否支持该选项?然后我可以为该系统运行正确的命令。

谢谢你的帮助。

command-line-interface mv
  • 1 个回答
  • 34 Views
Martin Hope
Luke Cousins
Asked: 2014-06-13 01:28:07 +0800 CST

让 mysql 阻止所有新连接,但尊重现有连接,以准备停止服务

  • 1

我正在寻找一种让 MySQL(实际上是 MariaDB)阻止所有新连接但尊重现有连接的方法。我打算在关闭服务器进行维护之前实施此限制。我设想的过程如下:

  1. 阻止新连接
  2. 等到现有连接全部完成
  3. 有办法检查它们是否都已完成
  4. 关闭服务器
  5. 执行维护
  6. 让服务器备份

我在想可能可以完成,max_connections但我仍然需要能够连接以确定所有进程都已完成。或者您可以更改服务器将在不重新启动的情况下侦听的 IP?或者也许可以通过阻止用户来完成,但这是使用 Galera 复制的集群,所以我只希望这影响单个节点。

谢谢你的帮助。

mysql
  • 1 个回答
  • 497 Views
Martin Hope
Luke Cousins
Asked: 2014-06-13 00:32:40 +0800 CST

当服务器 IP 更改时,现有的 TCP(例如 http/mysql)连接是否保持运行

  • 3

我们有一些 PHP-FPM 服务器,当它们需要数据库连接时,它们会连接到 HAProxy 服务器,该服务器会选择要使用的数据库服务器并打开连接。然后,当我们想要对 HAProxy 服务器进行一些维护时(例如需要重新启动 HAProxy 的配置更改),过程如下:

  1. 关闭 HAProxy 服务器上的 Keepalived
  2. 等待浮动IP转移到备份HAProxy服务器(同样运行Keepalived)
  3. 等到 HAProxy stats 只报告一个连接(我们检查有多少连接)
  4. 重启 HAProxy
  5. 重启 Keepalived

当第 2 步发生时,此时打开的 mysql 连接会发生什么情况?根据这个 TCP Sessions and IP Changes question,连接将被丢弃。真的是这样吗?如果是这样,如果有的话,可以做些什么来防止这种情况发生?是否可以以某种方式强制连接使用服务器的主(非浮动)IP?

我们也有类似的设置,两台 Nginx 服务器运行 Keepalived,我们正计划执行相同的过程。如果我们这样做,同样的问题也适用 - 当 IP 移动到另一台服务器时,现有的 http 连接会发生什么情况?

我感谢您的帮助。

nginx
  • 2 个回答
  • 1421 Views
Martin Hope
Luke Cousins
Asked: 2014-06-05 06:13:15 +0800 CST

如何在符号链接更新之前访问原始文件,这些文件已被移动到另一个目录

  • 0

我们有一个网站,我们的部署过程大致如下(排除了许多不相关的步骤)

echo "Remove previous, if it exists, we don't need that anymore"
rm -rf /home/[XXX]/php_code/previous

echo "Create the current dir if it doesn't exist (just in case this is the first deploy to this server)"
mkdir -p /home/[XXX]/php_code/current

echo "Create the var_www dir if it doesn't exist (just in case this is the first deploy to this server)"
mkdir -p /home/[XXX]/var_www

echo "Copy current to previous so we can use temporarily"
cp -R /home/[XXX]/php_code/current/* /home/[XXX]/php_code/previous/

echo "Atomically swap the symbolic link to use previous instead of current"
ln -s /home/[XXX]/php_code/previous /home/[XXX]/var_www/live_tmp && mv -Tf /home/[XXX]/var_www/live_tmp /home/[XXX]/var_www/live

# Rsync latest code into the current dir, code not shown here

echo "Atomically swap the symbolic link to use current instead of previous"
ln -s /home/[XXX]/php_code/current /home/[XXX]/var_www/live_tmp && mv -Tf /home/[XXX]/var_www/live_tmp /home/[XXX]/var_www/live

我们遇到并希望得到帮助的问题是,任何网站页面加载所做的第一件事就是计算出应用程序的基本目录并将其定义为常量(我们使用 PHP)。如果在该页面加载期间发生部署,系统会尝试include()使用原始完整路径访问文件,并将获取该文件的新版本。我们需要它从旧目录中获取旧目录,该目录现在已移动,如下所示:

  1. 系统开始页面加载并确定SYSTEM_ROOT_PATH常量是/home/[XXX]/var_www/live或使用 PHP 的realpath()它可能是/home/[XXX]/php_code/current.

  2. 用于/home/[XXX]/var_www/live获取更新的符号链接指向/home/[XXX]/php_code/previous而不是/home/[XXX]/php_code/current它最初的位置。

  3. 系统尝试加载/home/[XXX]/var_www/live/something.php并获取/home/[XXX]/php_code/current/something.php而不是/home/[XXX]/php_code/previous/something.php

如果没有很好地解释,我很抱歉。如果有人可以的话,我真的很感激一些关于如何解决这个问题的想法。谢谢你。

deployment
  • 1 个回答
  • 93 Views
Martin Hope
Luke Cousins
Asked: 2014-04-18 01:23:30 +0800 CST

top 和 htop 在内存使用上存在分歧,但在 GlusterFS 服务器上使用了交换。这可以改进吗?

  • 1

如果我运行free -m, topand htop,我会得到不同的内存使用。该系统也使用少量的交换。我从这个问题中理解了他们为什么报告不同的值(一些数据被认为是“可丢弃的”,因此被一个系统包含而另一个系统不包含),但不知道为什么系统决定使用交换?它是运行最新版本 (3.4.3) 的 GlusterFS 服务器。

有谁知道它为什么使用交换而不是从物理内存中清除“可丢弃”数据并改用它?

有什么我可以/应该做的,还是我应该改变监控系统而不用担心少量的交换使用?

免费-m:

自由的

最佳:

最佳

顶部:

htop

谢谢你的帮助。

ubuntu
  • 2 个回答
  • 1612 Views
Martin Hope
Luke Cousins
Asked: 2014-03-29 09:44:50 +0800 CST

通过另一台工作的机器SSH到外部服务器[重复]

  • -1
这个问题在这里已经有了答案:
SSH 直接“通过”另一台服务器 [重复] (1 个回答)
8年前关闭。

我很确定以前会问过这个问题,我发现了类似的问题,但我不完全了解如何将它们应用于我的情况。所以,很抱歉再次询问。

我们有许多位于数据中心的服务器,它们的防火墙规则只允许从我们的工作外部 IP 到它们的 SSH 连接。他们也只接受使用 SSH 密钥的身份验证。我可以通过工作中的另一台机器连接到其中一台服务器,并让我的机器(在家)传递密钥以进行身份​​验证吗?

这是一个 SSH 隧道,还是别的什么?

谢谢你的帮助。

ssh
  • 1 个回答
  • 321 Views
Martin Hope
Luke Cousins
Asked: 2014-03-19 02:09:55 +0800 CST

使用 Keepalived 进行主动/主动 HAProxy 设置的任何问题

  • 7

抱歉,如果以前有人问过这个问题,但我似乎找不到太多关于它的信息。

我们将使用 HAProxy 来平衡我们的 MariaDB Galera 集群。我在这方面看到的所有文章/教程都使用 Keepalived(或类似的东西)来进行主动/被动 HAProxy 设置。

是否有充分的理由说明您不应该进行主动/主动设置?

每个 HAProxy 节点可以有一个固定 IP,也可以有一个浮动 IP。正常情况下,请求是在两个 HAProxy 节点之间共享的,如果一个节点宕机,另一个会使用它的浮动 IP 并处理两个 IP 下的请求。当另一个重新启动时,它会重新获取其浮动 IP 和负载份额。

我很感激你对此的意见。

卢克

load-balancing
  • 2 个回答
  • 11254 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve