我需要遍历实例列表并为每个实例创建 1 个有状态集。但是,在范围内,我将自己限制在该循环的范围内。我需要访问我的 statefulset 中的一些全局值。
我已经通过将我需要的所有全局对象放在一个 env 变量中来解决它,但是......这看起来很hacky。
在仍然能够引用全局对象的同时循环遍历范围的正确方法是什么?
我的循环示例
{{- $values := .Values -}}
{{- $release := .Release -}}
{{- range .Values.nodes }}
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: {{ $release.Name }} <-- Global Scope
labels:
.
.
.
env:
- name: IP_ADDRESS
value: {{ .ip_address }} <-- From range scope
.
.
.
{{- end }}
Run Code Online (Sandbox Code Playgroud)
值示例
# Global
image:
repository: ..ecr.....
# Instances
nodes:
- node1:
name: node-1
iP: 1.1.1.1
- node2:
name: node-2
iP: …Run Code Online (Sandbox Code Playgroud) 我有一个非常简单的 Kubernetes pod。我想要一个有状态的集合并想要以下过程:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: app
namespace: test
labels:
name: app
spec:
serviceName: app
replicas: 1
selector:
matchLabels:
app: app
template:
metadata:
labels:
app: app
spec:
initContainers:
- name: preparing
image: alpine:3.8
imagePullPolicy: IfNotPresent
command:
- "sh"
- "-c"
- |
echo "Downloading data"
wget https://s3.amazonaws.com/.........
tar -xvzf xxxx-........ -C /root/
volumeMounts:
- name: node-volume
mountPath: /root/data/
containers:
- name: main-container
image: ecr.us-west-2.amazonaws.com/image/:latest
imagePullPolicy: Always
volumeMounts: …Run Code Online (Sandbox Code Playgroud) 我的游乐场源文件夹中有一个 UIVIew 子类(它是一个公共类),我试图仅将此类的一部分作为扩展名放入我的主游乐场文件中。
当我在我的操场上声明以下内容时
public extension SortingAlgorithmView {
public func typeTest() {
print("dfasfndjasfasfdasfdasf test ")
}
}
Run Code Online (Sandbox Code Playgroud)
然后在我的子类中我调用 typeTest() 它告诉我没有名为 typeTest 的函数。
我正在尝试执行以下操作:
以下是我的设置:
FROM ubuntu:xenial
ARG EXECUTABLE
ENV EXECUTABLE ${EXECUTABLE}
CMD ["/opt/foo/bin/${EXECUTABLE}", "-bar"]
Run Code Online (Sandbox Code Playgroud)
这是我建造集装箱的方式
docker build --build-arg EXECUTABLE=$EXECUTABLE -t test_image .
Run Code Online (Sandbox Code Playgroud)
这是我运行图像的方式
docker run -d test_image
Run Code Online (Sandbox Code Playgroud)
当我运行容器时,它崩溃并告诉我
docker: Error response from daemon: OCI runtime create failed:
container_linux.go:296: starting container process caused
"exec: \"/opt/foo/bin/${EXECUTABLE}\": stat /opt/foo/bin/${EXECUTABLE}:
no such file or directory": unknown.
Run Code Online (Sandbox Code Playgroud) 这是我保存图像的功能.
static func getDirectoryPath() -> String {
let path = (NSSearchPathForDirectoriesInDomains(.picturesDirectory, .userDomainMask, true))[0]
return path
}
static func savePhoto(with path: String, image: UIImage) {
let fM = FileManager.default
let path = getDirectoryPath() + path
let data = UIImageJPEGRepresentation(image, 0.5)
let success = fM.createFile(atPath: path, contents: data, attributes: nil)
print("File creation was \(success)")
}
Run Code Online (Sandbox Code Playgroud)
然后我就这样称呼它
let path = "/SpotCheck_\(spot.name)_Photo\(indx).jpg"
PhotoManager.savePhoto(with: path, image: photo)
Run Code Online (Sandbox Code Playgroud)
当我调用create file时,每次都返回false并且不保存照片.
编辑:问题是第二行需要documentDirectory而不是picturesDirectory.如下所示:
let path = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true))[0]
Run Code Online (Sandbox Code Playgroud)